網路上關於如何簽發免費SSL證書的博文一大片,但是真正操作起來的能讓新手不迷惑的卻很少,很多操作步驟受限於國內無法訪問外網的阻礙,導致無法真正實施成功。
實際上,關於申請免費SSL證書主要涉及兩大部分:
第一,如何快速申請到一個免費的DV證書(通常免費的證書都是DV證書,DV證書對於個人或者測試用途足夠了)。
第二,成功申請到證書之後如何配置部署,使得網站可以通過HTTPS訪問。
上面兩步可以使用指令碼工具自動化實現,也可以手動完成。
如下示例將以完全手動的方完成SSL證書申請和部署(基於nginx)。
申請SSL證書
再經歷了仔細閱讀Let’s Encrypt手冊依然沒有成功完成SSL證書申請的煎熬之後,果斷放棄。
最後在FreeSSL.cn非常直觀簡單地就完成了免費SSL證書的簽發。
個人覺得,在FreeSSL.cn上籤發SSL證書真的非常方便,熱別適合新手使用。
首先,進入到FreeSSL.cn頁面,選擇支援多域名和萬用字元的“5lSSL”。
跳轉到51ssl的頁面,此時需要註冊一個賬戶並登入。
選擇“訂單管理”->“證書申請”。
選擇“非商業證書”->“TrustAsia 免費域名型萬用字元SSL證書”,點選“購買”按鈕。
說明:在這裡選擇什麼型別的證書,完全根據自己的需求而定。由於我需要使用多個子域名證書,所以選擇了“TrustAsia 免費域名型萬用字元SSL證書”。
來到“申請 TrustAsia 免費域名型萬用字元SSL證書”的操作介面。
填寫好相關細心之後,點選“提交證書申請”按鈕。
接下來最重要的一步就是“域名驗證”,強烈建議使用“Email驗證”方式,這樣只需要在收到驗證郵件之後滑鼠點選就可以完成驗證操作。
根據提示完成相關驗證操作,證書的簽發需要等待一會兒,不要著急,大約幾分鐘之後會收到證書籤發成功的郵件。
在收到證書籤發成功的郵件通知以後,再次來到管理後臺介面,選擇“訂單管理”,點選訂單編號旁邊的“快速檢視”,在彈出介面中點選“下載證書”,彈出證書下載介面。
在證書下載彈出介面中,首先選擇部署SSL證書的伺服器,然後再選擇“下載”,或者將證書檔案傳送到郵箱。
以部署到nginx的證書為例,下載得到一個壓縮包,包含2個檔案:
- “.pem檔案”:SSL證書檔案
- “.key檔案”:SSL證書私鑰檔案
部署SSL證書
注意:在部署SSL證書之前,先要確保域名已經在新增了解析,並且可以通過http協議使用域名訪問到目標網站。
以在nginx中部署SSL證書為例,將通過上述方式簽發得到的SSL證書上傳到nginx伺服器,在nginx配置檔案中新增配置:
server {
listen 80;
server_name www.zhangsan.org.cn;
# 訪問http時強制跳轉到https
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 443 ssl;
server_name www.zhangsan.org.cn;
root /data/www;
index index.html index.htm;
access_log /dev/null;
ssl_certificate /data/ssl/zhangsan.org.cn_cert_chain.pem; # 證書檔案路徑
ssl_certificate_key /data/ssl/zhangsan.org.cn_key.key; # 證書私鑰檔案路徑
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
}
至此,簽發和部署免費SSL證書的操作過程完畢!
雖然在FreeSSL.cn通過51SSL簽發證書非常便捷(操作過程也很容理解),但是有個不便之處在於:在這裡簽發的免費證書無法實現自動化續簽(預設只有90天有效期)。
使用acme指令碼簽發證書並實現自動化續簽
如果希望簽發的證書能實現自動化續簽,可以選擇acme方式。
進入到FreeSSL.cn頁面,輸入需要簽發證書的域名,品牌保持預設選擇(亞洲誠信),點選“建立免費的SSL證書”按鈕。
如果沒有註冊賬戶,會提示先註冊賬戶並登入。
來到ACME域名配置介面,在“域名”輸入框中預設顯示的就是剛才輸入的域名資訊,點選“下一步”按鈕。
進入到DCV配置階段。
這時需要根據提示資訊在域名解析平臺新增一條對應的CNAME記錄。
以在阿里雲平臺操作為例如下:
新增CNAME記錄後等待幾分鐘,再回到DCV配置介面,點選“配置完成,立即檢測”,如果能成功檢測到剛才配置的CNAME記錄,則進入到“部署”介面。
注意:在檢測DCV配置這一步可能需要等一會兒,直到成功為止。
成功安裝好acme指令碼後執行如下命令來簽發證書:
# 這裡只是示例,每個證書的簽發命令都不同,直接從部署介面COPY即可
acme.sh --issue -d *.zhangsan.org.cn --dns dns_dp --server https://acme.freessl.cn/v2/DV90/directory/zhf8n20uk8nb5bt2oc4j
執行上述命令之後會在在~/.acme.sh
目錄下生成對應證書檔案目錄:'*.zhangsan.org.cn'。
到這裡還沒有結束,不同的Web伺服器上使用的證書檔案格式有所不同,以nginx為例還需要使用如下命令生成對應格式的證書檔案和私鑰檔案。
acme.sh --install-cert -d *.zhangsan.org.cn \
--key-file /data/ssl/zhangsan.org.cn_key.pem \
--fullchain-file /data/ssl/zhangsan.org.cn_cert.pem \
執行上述命令後就會在/data/ssl
目錄下生成能在nginx中使用的證書檔案和私鑰檔案了。
完成上述操作之後,到nginx配置檔案中新增對應證書配置即可。
至此,僅僅實現了證書的簽發,那麼如何才能實現證書的續簽呢?預設只有30天有效期。
實際上,在我們使用使用acme指令碼簽發證書的時候,會自動新增一條命令到crontab中,從而實現證書的續簽操作。
# crontab -l
# 這條命令是自動新增的,所以不用動,通過定時任務的方式實現證書的自動續簽
41 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
【參考】
https://freessl.cn/
https://www.zhihu.com/question/340572894 免費的SSL證書和收費的證書有什麼區別?
https://www.jianshu.com/p/1a792f87b6fe Let's Encrypt 證書申請及配置
https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker
https://www.laoliang.net/jsjh/technology/8898.html 2021年阿里雲最新新手詳細申請免費SSL(https)證書圖解方法(流程)
https://blog.csdn.net/jiuyuefenglove/article/details/108625400 SSL證書申請最詳細教程
https://zhuanlan.zhihu.com/p/174755007 33種免費獲取SSL證書的方式
https://blog.csdn.net/ithomer/article/details/78075006 十大免費SSL證書:網站免費新增HTTPS加密
https://blog.fundebug.com/2018/07/06/apply-lets-encrypt-certificate/ 教你快速擼一個免費HTTPS證書
https://www.awaimai.com/2218.html 使用Let's Encrypt為網站加上HTTPS
https://coolshell.cn/articles/18094.html 如何免費的讓網站啟用HTTPS
https://yeaheo.com/post/nginx-lets-encrypt-ssl-certificate-config/ 免費申請 Let's Encrypt SSL 證書
https://blog.sprov.xyz/2019/04/25/apply-ssl-certificate-at-freessl/ 在 FreeSSL 上為你的域名申請免費 SSL 證書
https://cn.aliyun.com/product/cas 阿里雲申請免費SSL證書