使用 acme 指令碼給專案新增 https 證照排查錯誤一例
step 1:首先是安裝
先放官網文件:
github.com/acmesh-official/acme.sh...
上面是中文概況說明
github.com/acmesh-official/acme.sh...
上面是最重要的簽發證照說明。
可能會需要科學上網,總之得到 master.tar.gz 這個檔案,從github 的 acme 專案獲得,解包是個資料夾,叫做 acme.sh-master。
另外,有兩種方法 http 和 dns ,本文采用 http 方式
建議使用 root 使用者。
進入這個資料夾,安裝,命令是
cd acme.sh-master
./acme.sh --install
或者
./acme.sh --install -m my@example.com
要點是,那個郵箱得真的是你自己的郵箱。
step 2:設定環境
如下命令
cd
source .bashrc
其實意思就是讓安裝的別名立刻生效。
step 3:簽發證照,也是最重要的步驟
如果安裝時沒有指定郵箱,這裡必須指定,也是我出錯的地方,特此記錄一下。
先確保 nginx 是啟動狀態,專案可訪問
假設域名是 xxx.xxx.com
nginx 的 這個專案的單獨的虛擬主機配置檔案 /etc/nginx/conf.d/xxx.xxx.com.conf,官網說,也可以寫總配置。
acme.sh --issue --accountemail "我的郵箱@xxx.com" -d xxx.xxx.com --nginx /etc/nginx/conf.d/xxx.xxx.com.conf
注意螢幕提示,快幾秒,慢要好幾分鐘,看人品。
因為這是發起一個遠端請求,請求證照。
看到如下提示說明成功
[Thu Dec 23 01:14:16 CST 2021] Your cert is in: /root/.acme.sh/xxx.xxx.com/amxxx.xxx.com.cer
[Thu Dec 23 01:14:16 CST 2021] Your cert key is in: /root/.acme.sh/xxx.xxx.com/amxxx.xxx.com.key
[Thu Dec 23 01:14:17 CST 2021] The intermediate CA cert is in: /root/.acme.sh/xxx.xxx.com/ca.cer
[Thu Dec 23 01:14:17 CST 2021] And the full chain certs is there: /root/.acme.sh/xxx.xxx.com/fullchain.cer
step 4:複製證照到自己指定目錄
mkdir -p /etc/nginx/pem/xxx.xxx.com/
chown -R nginx:nginx /etc/nginx/pem
acme.sh --install-cert -d xxx.xxx.com --key-file /etc/nginx/pem/xxx.xxx.com/key.pem --fullchain-file /etc/nginx/pem/xxx.xxx.com/cert.pem --reloadcmd "systemctl restart nginx"
step 5: 修改 nginx 配置並重啟
listen 80;
listen 443 ssl http2;
server_name xxx.xxx.com;
index index.php index.html ;
root /www/wwwroot/xxx/public;
ssl_certificate /etc/nginx/pem/xxx.xxx.com/cert.pem;
ssl_certificate_key /etc/nginx/pem/xxx.xxx.com/key.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
本作品採用《CC 協議》,轉載必須註明作者和本文連結