let's encrypt 申請 https 證書

haibin_hu發表於2019-02-22

ssl證照使用 Let’s Encrypt 免費證照,證照有效期是90天,需要執行定時更新證照指令碼

參考:
https://www.jianshu.com/p/6ea81a7b768f
https://learnku.com/laravel/t/2525/using-certbot-lets-encrypt-small-step-run-towards-https

使用官方的申請工具 Certbot, 官網有安裝步驟,選擇系統有相應的步驟
這裡使用的ubuntu,nginx

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot python-certbot-nginx

更快捷的申請證照方式(推薦)

certbot --nginx

在執行此命令時有以下的錯誤,以為這個add-apt-repository universe執行的有問題

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 299: ordinal not in range(128)

又執行了一遍,已經全域性設定過了

'universe' distribution component is already enabled for all sources

參考以下文章,執行此命令
https://github.com/certbot/certbot/issues/...

grep -r -P '[^\x00-\x7f]' /etc/letsencrypt /etc/nginx

執行後出現下圖
let's encrypt 申請 https 證照
把漢字刪除後後再執行 certbot --nginx後正常

以下申請方式可以參考

首先設定/.well-known/acme-challenge/ 節點

server {
    listen  80;
    server_name a.com;
    error_page 500 502 503 504  /50x.html;
    # 配置此節點確認站點所有權
    location /.well-known/acme-challenge/ {
        alias /var/www/challenges/;
        try_files $uri =404;
    }

    location / {
        proxy_pass         http://localhost:9005;
        proxy_redirect     off;
        proxy_set_header   Host              $host;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

申請證照的三種方式

#推薦 手動建立認證檔案
certbot certonly --manual -w /var/www/challenges/ -d a.com   # 目錄是建立檔案可以被外網訪問的一個資料夾,可以是專案資料夾,也可以是自定義的,自定義的需要在nginx上單獨宣告
#這種方式也可以,和上面的基本一致,上面的是手動生成檔案,這條是自動生成檔案,可能不成功
certbot certonly --webroot -w /var/www/challenges/ -d a.com
#這種方式不推薦,需要關閉nginx服務才能執行
certbot certonly --standalone --email your@email.com -d a.com

執行第一種命令方式,比較重要的一點是上面 /var/www/challenges 這個目錄下需要手動生成一個檔案,內容在執行命令後會得到,目的是讓外網能檢測到這個站點是自己的站點,參考下面介紹

有幾個選項,選擇選擇一下 A 或者 Y
然後重點是下面,複製這個字串,然後到/var/www/challenges建立一個檔案ZIVnpTqot49eJ35qVjPS8_fONP0TV1AMtQDODffrb6g,內容為ZIVnpTqot49eJ35qVjPS8_fONP0TV1AMtQDODffrb6g.zrG5oFD2J6jl1kToZ-gFtyrO6rPU-VGyNq-kHZ8PKPg,然後訪問一下http://a.com/.well-known/acme-challenge/ZIVnpTqot49eJ35qVjPS8_fONP0TV1AMtQDODffrb6g,可以訪問再按回車下一步
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

ZIVnpTqot49eJ35qVjPS8_fONP0TV1AMtQDODffrb6g.zrG5oFD2J6jl1kToZ-gFtyrO6rPU-VGyNq-kHZ8PKPg

And make it available on your web server at this URL:

http://a.com/.well-known/acme-challenge/ZIVnpTqot49eJ35qVjPS8_fONP0TV1AMtQDODffrb6g

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

成功後的提示

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/a.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/a.com/privkey.pem
   Your cert will expire on 2019-05-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章