hi!!大家好
今天我來說說一下。如何讓您的主機使用免費証書。
這邊只會先教 LINUX 主機。
WINDOWS的我不太想理它就是了。
這裏要使用的是一套 ACME 原則上它算是一種機器人。
我們就是利用它來去跟一些免費機構申請SSL証書。
畢竟,免費証書申請下來只有3個月的期限。
你不可能每三個月就又上來更新一次,太麻煩了。
來吧,開始進入正題
以上作業順利完成的話。就可以鬆一口氣了。
再來就是要怎麼去申請証書了。
基本上來說,其實ACME是可以支援多種模式的SSL驗証。
如本地檔驗証、DNS驗証、MAIL驗証。
不過我這裏先教如何本地檔驗証的設定。
先將所有對應的指令列出來
再下面解說各語法要做的事
本地檔驗証其實有個缺點,就是無法支援萬用子域名。
一般我都是用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
首先您需要將剛剛拿到的KEY,先設定進去。並將您的email也設定進去
然後剛剛的指令,就改成如下
從上面的指令看來。webroot 的設定消失了。因為已經不需要本地檔位置的建立了。
但多了一個「--dns dns_cf」
這個就是告知 acme 要使用 CF DNS 來處理。
你可以看到,我其實有再多了一個 「-d *.test.com 」
因為使用 DNS 的話,就可以建立萬用子域名了。
再執行的過程中,其實會有一些倒數計時。這是為了等待DNS生效的關係
這樣是不是夠簡單呢??
今天我來說說一下。如何讓您的主機使用免費証書。
這邊只會先教 LINUX 主機。
WINDOWS的我不太想理它就是了。
這裏要使用的是一套 ACME 原則上它算是一種機器人。
我們就是利用它來去跟一些免費機構申請SSL証書。
畢竟,免費証書申請下來只有3個月的期限。
你不可能每三個月就又上來更新一次,太麻煩了。
來吧,開始進入正題
- 首先,您得先用SSH登入。並使用ROOT的身份。
- 先進入root目錄內。 cd ~ 或是 cd /root
- 這裏,先讓我們安裝好ACME吧
- 運行
Bash:
sudo wget -O - https://get.acme.sh | sh
- 這時會跑一些下載並安裝的動作
- 再來就是
Bash:
alias acme.sh=~/.acme.sh/acme.sh
- 這個是為了將指令對應實際的目錄。
- 其實到這裏就可以算是安裝好了,接下來就是要做一些調整設定的動作。
- 您先要註冊一個帳號,這是要給申請的SSL廠商用的。其實也是是一個記錄
-
Bash:
acme.sh --register-account -m you@mail.com
- 這個動作基本做一下,這樣真的快過期時也會通知您的
- 再來其實這個預設會去跟 ZeroSSL申請。但其實這間申請有時比較慢。所以一般我都是切換到 let's encrypt
Bash:
acme.sh --set-default-ca --server letsencrypt
- 運行
- 這樣,就所有的事前工作就大功告成了。
以上作業順利完成的話。就可以鬆一口氣了。
再來就是要怎麼去申請証書了。
基本上來說,其實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
- 首先,先到 cloudFlare 去註冊或是登入您的帳號
- 先到圖示的位置,點選進去頁面
- 再來如圖示中,先點選左側的「API Token」後,再點選「Global API Key」的 VIEW
- 一般來說,會再要求您輸入一次密碼。
- 密碼輸入完後。會出現如下圖的內容。
- 這一串的英數字就是你的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生效的關係
這樣是不是夠簡單呢??