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
を追加した。