Ubuntu20.04 で Certbot を使った SSL 証明書の発行と更新
以前に「Ubuntu18.04 で Certbot を使った SSL 証明書の発行と更新」の記事を投稿しましたが、OS を Ubuntu20.04 にした内容となります。
Certbot
Certbot は無料で SSL 証明書を発行・更新できるサービスです。従来は、SSL 証明書の発行は面倒な手続きが多く、時間のかかる作業でした。しかし今では、 Certbot で Let's Encrypt 認証局の SSL 証明書発行から Apache や Nginx の設定まで自動で設定するのが一般的になりました。
ここでは AWS EC2 にある Ubuntu20.04 サーバの Apache に Certbot を使って SSL対応する流れを紹介したいと思います。
Apache インストール
まずは Ubuntu20.04 に Apache をインストールします。
$ sudo apt update $ sudo apt install apache2
Certbotで正しく処理するには、ドメイン名またはFQDNの設定が必要になります。Apache の設定ファイルに ServerName を指定します(ここでは xxx.yyy.co.jp )。 www などエイリアスがある場合は、 ServerAlias の設定も行いましょう。
$ sudo vi /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerAdmin xxx@yyy.co.jp
DocumentRoot /var/www/html
ServerName xxx.yyy.co.jp
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
設定が終わったら、 Apache を再起動します。
$ sudo service apache2 restart
Certbot インストール
次に Certbot をインストールします。以前は「 python-certbot-apache 」をインストールしていましたが、 Python3 に変わっていることに注意してください。
$ sudo apt-get install certbot python3-certbot-apache
インストールが終わったら Certbot を実行しましょう。以下では apache オプションをつけています。以下重要な箇所のログのみ記します。
$ sudo certbot --apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): xxx@yyy.co.jp You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory (A)gree/(C)ancel: A Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? (Y)es/(N)o: N Which names would you like to activate HTTPS for? ---------------------------------------- 1: xxx.yyy.co.jp ---------------------------------------- (Enter 'c' to cancel): 1 Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ---------------------------------------- 1: No redirect 2: Redirect ---------------------------------------- (press 'c' to cancel): 2 Congratulations! You have successfully enabled https://xxx.yyy.co.jp
途中の質問は
- メールアドレス
- 規約の同意
- メール受信
- SSL化するドメイン名, FQDNまたはエイリアス
- http をhttps にリダイレクトするか
などがあります。
最後の方に「Congratulations! You have successfully enabled https://xxx.yyy.co.jp」と表示されていれば SSL 対応が完了です。
SSL 証明書の更新
Let's Encrypt の SSL 証明書は期限が3ヶ月と短いです。以前は cron を使って自動で更新できるようにしていました。しかし、最新の certbot には自動更新の機能がありますので、特別何かを設定する必要はありません。念のため正しく動作しているか確認してみましょう。
$ sudo systemctl status certbot.timer
● certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Wed 2021-10-06 12:42:41 UTC; 5min ago Trigger: Thu 2021-10-07 05:34:19 UTC; 16h left Triggers: ● certbot.service Oct 06 12:42:41 ip-172-31-21-72 systemd[1]: Started Run certbot twice daily.
このように表示されていれば問題ないでしょう。1日に2回実行されているようですね。
まとめ
Webシステムを作成するにあたり、SSL対応はセキュリティ上必須です。以前は、ある程度知識を持ったエンジニアが時間をかけて作業していましたが、 Certbot を利用すると素人でも簡単に設定できるようになりました。いい時代になったなぁと感じますね。
TKS2では特殊なサイトのSSL化も対応可能です。 もしお困りのときはぜひお声がけください。