• 游客 您好:

    目前「IT人巴啦啦天地」需要數個專家協助發表文章。

    只要您願意,可以直接與我 ihstat 連絡。我將會給你「專家」身份。

    成為「專家」有什麼好處?目前暫時還沒有。我也只願意提供最多10名會員有這樣的身份。

    他可能可以成為未來非常高的權限。(除了管理) 也可以獲得由浩瀚星空站提供的資源。

  • 本站不接受任何被列入廣告發文黑名單的電子信箱。如您無法註冊,可能是您使用的電子信箱為廣告黑名單信箱。正常的信箱都是可以正常註冊。

    如果您可以証實您的信箱非廣告黑名單,請自行來信 hstaryoching#gmail.com 申請。

    申請請留下您的正統名稱及信箱,並告知從何得知及想進來的理由。

  • 浩瀚星空站已經重新整合並新增新的開發小站天地。

    採用新版的xenforo 2.2.3 做為最新的站點系統。

    中文搜尋已在本站啟用成功,歡迎多加測試看看

    有問題請再回報

教學 如何設定使用免費的SSL証書

ihstar

管理員
管理成員
hi!!大家好

今天我來說說一下。如何讓您的主機使用免費証書。
這邊只會先教 LINUX 主機。
WINDOWS的我不太想理它就是了。

這裏要使用的是一套 ACME 原則上它算是一種機器人。
我們就是利用它來去跟一些免費機構申請SSL証書。
畢竟,免費証書申請下來只有3個月的期限。
你不可能每三個月就又上來更新一次,太麻煩了。

來吧,開始進入正題

  1. 首先,您得先用SSH登入。並使用ROOT的身份。
  2. 先進入root目錄內。 cd ~ 或是 cd /root
  3. 這裏,先讓我們安裝好ACME吧
    1. 運行
      Bash:
      sudo wget -O -  https://get.acme.sh | sh
    2. 這時會跑一些下載並安裝的動作
    3. 再來就是
      Bash:
      alias acme.sh=~/.acme.sh/acme.sh
    4. 這個是為了將指令對應實際的目錄。
    5. 其實到這裏就可以算是安裝好了,接下來就是要做一些調整設定的動作。
    6. 您先要註冊一個帳號,這是要給申請的SSL廠商用的。其實也是是一個記錄
    7. Bash:
      acme.sh --register-account -m you@mail.com
      後面mail的部份改成你要收的MAIL
    8. 這個動作基本做一下,這樣真的快過期時也會通知您的
    9. 再來其實這個預設會去跟 ZeroSSL申請。但其實這間申請有時比較慢。所以一般我都是切換到 let's encrypt
      Bash:
      acme.sh --set-default-ca --server letsencrypt
  4. 這樣,就所有的事前工作就大功告成了。

以上作業順利完成的話。就可以鬆一口氣了。
再來就是要怎麼去申請証書了。

基本上來說,其實ACME是可以支援多種模式的SSL驗証。
如本地檔驗証、DNS驗証、MAIL驗証。

不過我這裏先教如何本地檔驗証的設定。
先將所有對應的指令列出來
Bash:
acme.sh --issue  -d test.com  \
--webroot /home/nginx/www \
--cert-file /home/ssl/test.com.crt \
--key-file /home/ssl/test.com.key \
--fullchain-file /home/ssl/test.com-chain.crt \
--ca-file /home/ssl/test.com-ca.crt \
--reloadcmd "systemctl restart nginx"

再下面解說各語法要做的事
  • -d : 其就是你要設定的域名,這可以多個。
  • --webroot: 就是該域名的WEB根目錄位置,它會幫你去生成驗証檔出來。
  • --cert-file: CRT証書的生成位置
  • --key-file: KEY生成的位置
  • --fullchain-file: fullchain合拼檔的位置
  • --ca-file: ca 生成位置
  • --reloadcmd: 証書生成完成後,要執行的重啟WEB SERVER的命令。我是用NGINX的。

本地檔驗証其實有個缺點,就是無法支援萬用子域名。
一般我都是用DNS來處理。

ACME可以支援的DNS非常的多。像是AWS的ROUTE53、cloudflare、godaddy.....
支援的DNS服務,可從 https://github.com/acmesh-official/acme.sh/wiki/dnsapi 這裏查看。

這邊我就單純介紹如何使用 cloudFlare

要使用 cloudFlare 來做您的 DNS 認証。首先你得要先去 cloudFlare 拿到您的KEY或是對應的TOKEN。
TOKEN算是比較安全的做法。因為TOKEN可以拿掉。但KEY的話是固定的。
由於我是自已使用。用TOKEN並不是我要的。這裏就教如何去拿KEY


  1. 首先,先到 cloudFlare 去註冊或是登入您的帳號
  2. 先到圖示的位置,點選進去頁面1705654981197.png

  3. 再來如圖示中,先點選左側的「API Token」後,再點選「Global API Key」的 VIEW1705655107393.png
  4. 一般來說,會再要求您輸入一次密碼。1705655152392.png
  5. 密碼輸入完後。會出現如下圖的內容。1705655232915.png
  6. 這一串的英數字就是你的KEY。先COPY下來
這樣準備工作就完成了,再來就是開始處理指令了。
首先您需要將剛剛拿到的KEY,先設定進去。並將您的email也設定進去
Bash:
export CF_Key="24fdxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5be8d"
export CF_Email="Xxxxxxxx@gmail.com"

然後剛剛的指令,就改成如下
Bash:
acme.sh --issue  -d test.com -d *.test.com  \
--dns dns_cf \
--cert-file /home/ssl/test.com.crt \
--key-file /home/ssl/test.com.key \
--fullchain-file /home/ssl/test.com-chain.crt \
--ca-file /home/ssl/test.com-ca.crt \
--reloadcmd "systemctl restart nginx"

從上面的指令看來。webroot 的設定消失了。因為已經不需要本地檔位置的建立了。
但多了一個「--dns dns_cf」
這個就是告知 acme 要使用 CF DNS 來處理。
你可以看到,我其實有再多了一個 「-d *.test.com 」
因為使用 DNS 的話,就可以建立萬用子域名了。

再執行的過程中,其實會有一些倒數計時。這是為了等待DNS生效的關係

這樣是不是夠簡單呢??
 
頂部