GMO クラウド VPS で Let’s Encrypt の SSL を使う

postfix や logwatch などの設定

GMO クラウドの VPS Ubuntu 18.04 を借りたので、必要な設定をした。 お名前.com の VPS への Ubuntu 18.04 のインストールと設定 と同じように行った。

apt install zsh lv unison vim-nox emacs-nox lv zsh silversearcher-ag mail-utils

でよく使うパッケージをインストールした。

Let’s Encrypt の証明書の取得

apt install nginx

で nginx をインストールする。また

apt install certbot

で certbot をインストールする。

ドメインが www.example.com なら

certbot certonly --webroot /var/www/html/ -d www.example.com

として指示にしたがってメールアドレスなどを入力して、証明書を取得する。 /etc/letsencrypt/live/www.example.com/ にファイルができている。

証明書の期限は3か月らしいがUbuntu のパッケージの certbot をインストールすると /etc/cron.d/certbot ができていたので、自動で更新されるようだ。

証明書の更新 2019-08-01

certbot renew

とすると、期限が切れているのになぜか有効期限が 2019-09-30 となって、更新がされない。

certbot renew --force-renew

として強制的に更新した。私の環境で更新した証明書を使用するには nginx を再起動する必要があった。

service nginx restart

nginx の設定

nginx で使うためにとりあえず /etc/nginx/sites-available/default を次のようにした。

server {
    listen 80 default_server;
    listen [::]:80 default_server; 

    location ^~ /.well-known/acme-challenge/ {
      default_type "text/plain";
      root /var/www/html;
    }

    location / {
      return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

    ssl_certificate     /etc/letsencrypt/live/www.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
 
    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

cron で nginx の reload 2020-04-28

証明書が更新されても、反映させるためには nginx の reload をしないいけない。

crontab -e

42 2 * * * /bin/systemctl reload nginx.service

を追加した。

参考

Tags of current page

,