Ubuntu 16.04 + Apache 2.4にLet's Encryptを設定する

海外の格安VPS、AlaphaRacksでHTTPSのHTTPサーバを立てたので、その作業録。

環境

Chinese Year Specialという年間$8のプランを契約。 Ubuntuのバージョンは16.04なのだが、カーネルのバージョンは2.6.32の古め。 そのため、dockerは使えない。

# uname -r
2.6.32-042stab127.2
# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"

ApacheのSSLモジュール有効化

SSLモジュールを有効化し、a2ensiteでHTTPSサイトを有効化する。 あとは設定ファイルにServerNameを追加する。

# a2enmod ssl
# vi /etc/apache2/sites-available/default-ssl.conf
        ServerAdmin xxx@yyy.zzz (変更)
        ServerName xxx.yyy.zzz (追加)
# a2ensite default-ssl
# service apache2 reload

Let’s Encryptのインストールと設定

# apt-get install letsencrypt python-letsencrypt-apache

Apacheを止めてから、Let’s Encryptを実行。

# service apache2 stop
# letsencrypt --authenticator standalone --installer apache
# service apache2 start

この時点でブラウザからHTTPSでアクセスできるはずなので確認。

Let’s Encryptのスクリプトがリダイレクトの設定を失敗したときは、 HTTPサイトの設定にHTTPSへのリダイレクトを追加する。

# vi /etc/apache2/sites-available/000-default.conf
        Redirect "/" "https://****/" (追加)
# service apache2 restart

cronへの追加

Let’s Encryptの証明書は有効期限が3ヶ月なので、定期的にスクリプトを実行する必要がある。 cronで定期的に実行するように設定する。

# crontab -e
0 0 1 * * service apache2 stop; letsencrypt renew; service apache2 start