Apache
letsencrypt

Apache 2.4 on Ubuntu 16.04でSSL

久しぶりに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では直っている)ので、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ヶ月一度更新する必要があります。