前置作業:
相關資料:
- Certbot:生產憑證更新工具
- Let’s Encrypt:免費CA,時效90天
環境: Ubuntu v16
sudo 權限
網域: 網域主人
DNS: 確實將http指向對應之IP
資料查詢導向,查詢相關文章 certbot 要以 certbot 這項工具查詢,Let’s Encrypt 不是工具是機構名稱!
certbot 官方是用 snap 這套 package manager 去安裝的,我習慣的package manager 還是 apt-get
安裝 Certbot
sudo apt-get update
sudo apt-get install software-properties-common # 管理 apt 相關套件的工具
sudo add-apt-repository ppa:certbot/certbot # 載入 certbot
sudo apt-get install nginx # [選填]:如果沒安裝過 nginx 可以安裝
sudo apt-get update # 更新 apt-get
sudo apt-get install python-certbot-nginx # 安裝 certbot for nginx
產生憑證
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com certonly
# 以本站為例產生憑證方式為: `sudo certbot --nginx -d hi-founder.com certonly`
正常就會幫你產生好憑證了
我會使用 certonly
這個參數 是因為nginx 習慣自己定義東西
Nginx相關設定
以本站網址為例: /etc/nginx/conf.d/hi-founder.com.conf
server {
server_name hi-founder.com;
location / {
...
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/hi-founder.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/hi-founder.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = hi-founder.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name hi-founder.com;
listen 80;
return 404; # managed by Certbot
}
自動更新憑證
systemctl list-timers
就可以看到 certbot 相關的功能自動更新 下方指令為 certbot 確認更新有沒有問題
sudo certbot renew --dry-run
題外話:我這網域https不是用certbot來更新的,範例中的設定檔也不是。