[Ubuntu]Let's Encryptで無料の証明書を利用する

2019/12/22

Nginxで無料証明書「Let's Encrypt」を利用してみる。
「Let's Encrypt」は非営利団体の ISRG (Internet Security Research Group) が運営している、証明書の発行・インストール・更新を無料利用することができる。

インストール

Ubuntu18には「certbot」パッケージがあるのでインストール

# apt-get install certbot

※後々の設定でうまくいきませんでした。

# git clone https://github.com/certbot/certbot

こちらは、ソースないの「certbot-auto」が利用できる。

証明書の作成

certbot の場合

※設定がうまくいきませんでした。

# certbot certonly -d ドメイン名
Saving debug log to /var/log/letsencrypt/letsencrypt.log

How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 

ここで、こけました。

certbot-auto の場合

certbot-auto を実行すると、Apache か Nginx 聞かれる。
この辺は、サーバ設定によりますが Nginx 個人的事情で問題があったので Apacheにしました。

# ./certbot-auto -d ict-kids.net
Saving debug log to /var/log/letsencrypt/letsencrypt.log

How would you like to authenticate and install certificates?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Apache Web Server plugin (apache)
2: Nginx Web Server plugin (nginx)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 
...

https にリダイレクトするか聞かれますが、とりあえずリダイレクトしないようにしました。


Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

設定がうまくいくと、以下のファイルが書き出される。

/etc/letsencrypt/live/ドメイン名/fullchain.pem
/etc/letsencrypt/live/ドメイン名/privkey.pem

Apache の場合

以下のパスにファイルを作成されたようです。

Created an SSL vhost at /etc/apache2/sites-available/000-default-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/000-default-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/000-default-le-ssl.conf

Nginx の場合

/etc/nginx/site-avaible/xxxx ファイルにSSLの設定を記述する

server {
        listen 443 default_server ssl;
        listen [::]:443 ssl default_server;
        server_name ドメイン名;

        ....
        ssl_certificate /etc/letsencrypt/live/ドメイン名/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/ドメイン名/privkey.pem;
        ....
}

Let's Encrypt の更新

90日で証明書の有効期限が切れるため、crontabなどで定期的に更新スクリプトを実行する必要がある。

※2020/04/09 更新

/root/src/certbot/certbot-auto renew --post-hook "service apache2 restart"