久しぶりにApacheをインストールしました。設定ファイルがディレクトリ毎に色々と分かれていたり、設定用のコマンドがあったりして、ちょっと戸惑いましたが、Let's Encryptの証明書でSSL化するまでの手順です。
インストール
# apt-get install apache2
# a2enmod ssl
# vi /etc/apache2/sites-available/default-ssl.conf
ServerAdmin xxx@yyy.zzz <- 変更
ServerName xxx.yyy.zzz <- 追加
DocumentRoot /var/www/html
# a2ensite default-ssl
# service apache2 reload
これだけで、sslモジュールが有効になり、とりあえずSSLでアクセスできるようにはなる。あとは、ルータの設定をして、外からhttps://xxx.yyy.zzzに接続できるようにしておく。
Let's EncryptでSSL証明書を取得
Let's EncryptでSSL証明書を発行するためには、Certbotクライアントが必要。Apache用のプラグインもインストールする。
# apt-get install letsencrypt python-letsencrypt-apache
# letsencrypt run --apache
Ubuntu用のaptパッケージ名は、certbotではなく、まだ古い名前のletsencryptのまま。このコマンドを使うと、一発でApacheの設定まで可能。
ただ、Please choose whether HTTPS access is required or optional.でSecureを選ぶとRedirectの設定がエラーになってしまった(たぶん最新版のcertbotでは[直っている] (https://github.com/certbot/certbot/issues/1243))ので、Easyを選んで、Redirectの設定はあとで手動で行う。
# vi /etc/apache2/sites-available/000-default.conf
Redirect "/" "https://xxx.yyy.zzz/" <- 追加
</VirtualHost>
# service apache2 reload
これで終了。ブラウザからアクセスして証明書のエラーが出なくなればOK。
証明書の更新
証明書の有効期限が近づいてきたというメールが来ましたので、更新しました。コマンド一発。
# letsencrypt renew
Let's Encryptの証明書は有効期間は90日間なので、3ヶ月一度更新する必要があります。