acme.sh 快速實現 https 證書頒發與自動續期

acme.sh 快速實現 https 證書頒發與自動續期

藉助acem.sh來迅速實現 let's encrypt 的泛域名 ssl 證書頒發與續期,基本上五分鐘就可以解決戰鬥

本文主要內容來自 acme.sh 的官方 wiki,一切以官方說明爲準: acme wiki

I. 安裝步驟

1. 登錄服務器

登錄到某臺 linux 服務器,我這裏以 Centos 舉例說明

ssh xxx@xxx

# 切換root賬號
su

2. 安裝acme.sh

yum install socat -y
curl  https://get.acme.sh | sh
cd ~/.acme.sh/

3. 申請密鑰

到域名購買服務商,申請 api key,用於後期的 txt 記錄驗證

DNSPod

密鑰申請完畢之後,如下操作導入命令

# DNSPod
export DP_Id="id"
export DP_Key="key"

阿里雲

ALY_KEY 和 ALY_TOKEN:阿里雲 API key 和 Secrec 官方申請文檔

申請完畢之後,如下操作

export Ali_Key="key"
export Ali_Secret="secret"

godaddy

export GD_Key="key"
export GD_Secret="secret"

其他

至於其他平臺,應該如何導入 API key,可以參考下面的文檔,這裏不一一說明了

4. 證書生成

# 請注意,--dns後面的參數,一般來講後綴就是上面的導入key的前綴
# 如果不確定,到上面的github連接中去找

# 針對 hhui.top 域名生成通配的證書
./acme.sh --issue --dns dns_ali - d *.hhui.top

證書生成之後,會在.acme.sh目錄下,新生成一個 *.hhui.top(就是我們上面指定的通配域名) 文件夾,證書在裏面

5. 安裝證書

接下來將我們的證書安裝到 nginx(當然也可以是 tomcat),下面的腳本除了安裝之外,也添加了一個自動更新的任務(一般來說,60 天以後會自動更新,並會強制重啓 nginx 使新的證書生效,可以通過 crontab -e看到對應的定時任務)

./acme.sh  --installcert -d *.hhui.top --key-file /etc/nginx/ssl/key.pem  --fullchain-file /etc/nginx/ssl/cert.pem --reloadcmd     "service nginx force-reload"

6. nginx 配置

然後就是配置 nginx,支持 https

下面是一個基礎的 nginx 配置實例

server {
    server_name blog.hhui.top;
    root /home/yihui/xxx;
    index index.html;

    gzip on;
    gzip_buffers 32 4K;
    gzip_comp_level 6;
    gzip_min_length 100;
    gzip_types application/javascript text/css text/xml;
    gzip_disable "MSIE [1-6]\."; #配置禁用gzip條件,支持正則。此處表示ie6及以下不啓用gzip(因爲ie低版本不支持)
    gzip_vary on;

    location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
        access_log   off;
        expires      1d;
    }

    location ~* ^.+\.(css|js|txt|xml|swf|wav|pptx)$ {
        access_log   off;
        expires      10m;
    }

    location / {
        try_files $uri $uri/ @router;
    }

    location @router {
        rewrite ^.*$ /index.html last;
    }

    listen 443 ssl;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 1.1.1.1 valid=60s;
    resolver_timeout 2s;
}

server {
    if ($host = blog.hhui.top) {
        return 301 https://$host$request_uri;
    }

    listen 80;
    server_name blog.hhui.top;
    return 404;
}

II. 其他

1. 一灰灰 Bloghttps://liuyueyi.github.io/hexblog

一灰灰的個人博客,記錄所有學習和工作中的博文,歡迎大家前去逛逛

2. 聲明

盡信書則不如,以上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現 bug 或者有更好的建議,歡迎批評指正,不吝感激

3. 掃描關注

一灰灰 blog

QrCode

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章