場景設定:
一、選擇證書類型
上面是常見的證書類型,對于我們的場景,應該選擇DV證書,用來給我們自己的域名做認證。
Let's Encrypt是目前(2024年)市場份額第一的,甚至美國政府網站在也使用它,免費方便,支持自助申請。只是免費的證書有效期最多3個月,到期需要更新。它也提供了自動化的命令行工具來更新證書。
申請證書之前,需要先有一個域名。一般的云廠商都可以代理申請,小編的域名就是在阿里云上申請的。下面我們以小編自己的域名:ticktechman.tech為例,介紹如何申請對應的證書。certbot是Let's Encrypt提供的一個開源免費工具,基于命令行,在繼續下面的步驟之前,需要先安裝:#
brew install certbot
#
sudo apt install -y certbot
在申請證書的過程中,cbot需要驗證域名的所有權是否屬于你,提供了三種方式:在我們的場景中,網站還不存在,因此選擇通過DNS-01的方式來驗證域名歸屬權。執行下面的命令:mkdir certbot && cd certbot
mkdir config logs work
certbot certonly --manual --preferred-challenges dns -d ticktechman.tech --config-dir=${PWD}/config --work-dir=${PWD}/work --logs-dir=${PWD}/logs
執行到這里的時候,需要在DNS中增加TXT字段,字段名是固定的,字段值是臨時生成的,需要手動添加。這里以阿里云平臺上添加DNS TXT字段為例介紹:紅框中前兩項按照上圖中填寫,第三項【記錄值】要輸入上步中命令行輸出的字段值。添加成功后,需要等待一段時間才能生效(建議等待2~3分鐘)添加完DNS信息后,按【回車】鍵繼續后面的申請操作
申請成功后,在當前目錄下會生成如下的目錄和文件:
上面紅框中的文件:
我們使用nginx來驗證上面證書的合法性,可以參考【你的第一個HTTPS網站(nginx版)】這篇文章先搭建一個nginx服務。將申請好的兩個文件:fullchain.pem和privkey.pem文件拷貝到nginx配置的目錄,然后修改配置文件https.conf:http {
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /Users/ticktech/usr/playground/nginx/www;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
}
然后重啟或者重新加載nginx配置,可以使用下面的命令來驗證證書合法性:nginx -s reload
openssl s_client -connect localhost:443 -servername localhost|grep 'Verify return code'
如果輸出中包含"Verify return code: 0 (ok)",則表示證書合法。
這種方法適合本地驗證,不需要部署公網IP和服務器。
閱讀原文:原文鏈接
該文章在 2025/8/15 11:39:05 編輯過