ゴール
環境
さくらVPS
Ubuntu
nginx
NodeJS(express + nuxt)
postgreSQL
ざっくりな流れ
Let's Encrypt
インストール
cd certbot
./certbot-auto --help
実行
80ポートと443ポートを開いておく
nginxは一旦stopしとく
sudo service nginx stop
./certbot-auto certonly --standalone -d ドメイン名 -d www.ドメイン名
nginx
ssl対応
# httpをリダイレクト
server {
listen 80 default_server;
return 301 $request_uri;
}
# https
server {
listen 443 ssl http2;
server_name imatomix.com;
ssl on;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
....
}
sudo service nginx start
A+化
「The server does not support Forward Secrecy with the reference browsers. Grade reduced to A-.」とある。ググる。
Forward Secrecy に対応させる必要があり、そのためには鍵交換時の暗号化方式に ECDH を指定する必要があるとのこと。
あと、SSLもいろいろで、脆弱な暗号化方式があるらしい。それらを無効化するといいらしい。
nginxの設定を修正
# https
server {
listen 443 ssl http2;
server_name imatomix.com;
ssl on;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDH !aNULL !eNULL !SSLv2 !SSLv3';
....
}
cronで自動更新
su -
crontab -e
00 05 01 * * service nginx stop && /path/to/certbot-auto renew --force-renewal && service nginx start