1. 程式人生 > 其它 >acme生成萬用字元ssl證書

acme生成萬用字元ssl證書

技術標籤:伺服器相關http

acme生成萬用字元ssl證書

1.安裝acme

wget https://get.acme.sh | sh
安裝完成後的目錄在/root/.acme.sh/下面.
直接使用 cd /root/.acme.sh 命令 進入.acme.sh目錄.

2.生成SSL證書

這裡我們是用 DNS 驗證方式。DNS 方式,需要手動在域名上新增一條 txt 解析記錄,驗證域名所有權。為了避免每次都需要手動解析驗證域名所有權,我們使用域名解析商提供的 api 自動新增 txt 記錄完成驗證,acme.sh 目前支援數十種解析商的自動整合,其中包含阿里雲。以阿里云為例,你需要先登入到阿里雲賬號,生成你自己的 api id

api key,它是免費的 (建議開啟阿里雲【RAM 訪問控制】,只給 AliyunDNSFullAccess 許可權策略,這樣做更安全)。然後執行下面的命令:

export Ali_Key="xxx" && export Ali_Secret="xxx"

# 因為生成的萬用字元域名證書中並不包含根域名證書,所以我們要指定根域名。
acme.sh --issue --dns dns_ali -d example.com -d *.example.com

注意:請將 example.com 改為你自己的域名。

3.安裝到nginx

./acme.sh --installcert -d example.com \
          --keypath /etc/nginx/ssl/example.com.key \
          --fullchainpath /etc/nginx/ssl/example.com.cer

4.nginx配置

server {
        listen       443 ssl;
        server_name  example.com;

        ssl on;
        
        ssl_certificate      ssl/abc.domain.com.cer;
        ssl_certificate_key  ssl/abc.domain.com.key;

        location / {
            proxy_pass   http://127.0.0.1:8001;
        }
    }
 # 80埠直接轉到443
 server {
        listen      80;
        server_name    example.com;
        return      301 https://$server_name$request_uri;
 } 

5.更新證書

生成的證書只有30天有效期,所以需要自行更新

5.1手動更新

acme.sh --renew -d example.com --force

5.2自動更新

安裝 acme.sh 時會自動建立一個 cronjob,每天定期檢查所有證書,如果證書需要更新會自動更新證書。
通過 crontab -l 檢視 crontab 任務:
25 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

如果有該定時任務,則不需要額外配置。