さくらなどのレンタルVPSでサーバを立てたあと、httpsでアクセスしたくなる。無料でssl証明書を取得する方法を解説する。
環境
Ubuntu 20.04
証明書の発行 and 自動更新
証明書の有効期限が90日なので定期的に更新する必要がある。手動でやるのは大変なので更新も自動化する。サーバーでやるときはsudoが必要になる。
初めにDNSとnginxの設定を行いhttpでアクセス可能にする。
$ sudo apt install python3-certbot-nginx
$ sudo certbot --nginx
色々聞かれるが、いい感じに答える。ドメインの選択、Renew the cert(2), HTTPをリダイレクト(2)。$ sudo certbot renew --dry-run
更新ができるかテスト。$ sudo systemctl status certbot.timer
自動更新ができているか確認。twice dailyは更新が必要かを確認していて、30日経過すると更新が必要になるらしい。実際に更新をするのは30日ごとになって、30日経過しているかを確かめるのが12時間ごと。(参考)
別のやり方
こちらのやり方だと証明書の自動更新はうまくできなそう。
$ sudo apt install certbot
$sudo certbot certonly --webroot -w /var/www/html -d example.com
/etc/letsencrypt
フォルダーのバックアップ (ダウンロードしてローカルに保存するとか)- nginxなどサーバーの設定の変更
certificate and chain は/etc/letsencrypt/live/example.com/fullchain.pemに保存される。
key fileは/etc/letsencrypt/live/example.com/privkey.pemに保存される。
エラー(詰まったところ)
「Problem binding to port 80: Could not bind to IPv4 or IPv6」
80番ポートが空いているとダメらしい。一旦webサーバーを止めれば良い。
参考サイト
- さくらインターネットのVPSでpythonサーバを立てる | Notes to Forget
- UbuntuでLet’s Encryptの無料SSL/TLSサーバ証明書を取得する
- Let’s Encrypt で Nginx にSSLを設定する – Qiita
- Ubuntu 20.04 Let’s Encryptを使用してNginxでhttps接続(Certbot使用) – Symfoware
Comments