返回
Featured image of post Certbot + Let's Encrypt + Nginx,想要https嗎?

Certbot + Let's Encrypt + Nginx,想要https嗎?

Certbot + Let's Encrypt + Nginx,想要https嗎?好用的工具

前置作業:

相關資料:

環境: 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來更新的,範例中的設定檔也不是。

comments powered by Disqus