Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> サーバー関連 -> LAMP環境のさくらVPSに無料SSL「Let’s Encrypt」を導入する

LAMP環境のさくらVPSに無料SSL「Let’s Encrypt」を導入する

Cent OS 6.9のさくらVPSサーバーに、Let’s Encryptを導入しましたので、その時の作業メモです。

実際は、何度か詰まって試行錯誤したので、少し作業の順番が異なるかも知れません。

■全パッケージのアップデート

何気に、これ、重要です。やっておかないと、後で詰まりますw
sudo yum update

■Python2.7のインストール

Pythonがインストールされていない場合は、2.7以降をインストールします。
sudo yum install centos-release-scl
sudo yum install python27 python27-python-tools
sudo yum install dialog
sudo scl enable python27 bash
sudo scl enable python27 bashで、Linux上で使用されるPythonのバージョンを切り替える事が出来ます。
もし、既にインストールされているPythonのバージョンが2.6とかで、letsencrypt上でエラーが起きるなら、このコマンドを叩くと治る可能性があります。

■pipのインストール

pipが無いなら、インストールしておきます。
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
python get-pip.py

■letsencryptをgit経由でダウンロード

Git経由でダウンロードしておきます。
別にGitじゃなくても良いですけどね。
cd /var/
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

■初期設定

./certbot-auto --help
このコマンドを実行すると、必要なライブラリ等がすべてインストールされます。エラーが出る場合は、Pythonがインストールされているか、yum updateされているか、などを確認してください。

■証明書の発行

./certbot-auto certonly -a standalone -d testdomain.com
これで上手くいけば、下記に証明書ファイルが生成されます。
ls /etc/letsencrypt/live/testdomain.com

備考:上記コマンドの場合、一度httpdを停止させてから処理を行う必要があります。下記のように、webroot認証を使えば、httpdを稼働していても問題なく処理出来ます。

./certbot-auto certonly --webroot -w /var/www/html/ -d testdomain.com -m your@emailaddress.com

上記は、testdomain.comのドキュメントルートが/var/www/htmlの場合の例です。

■Apache上でVirtual Hostの設定

あとは、/etc/httpd/conf.d/ssl.confあたりに、VirtualHostの設定を追加します。
NameVirtualHost *:443

<VirtualHost *:443>
ServerAdmin test@testdomain.com
DocumentRoot /var/www/virtual/testdomain.com
ServerName test domain.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/testdomain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/testdomain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/testdomain.com/chain.pem
</VirtualHost>

■んで、ドキドキのサーバーリロード。

service httpd configtestで、あらかじめ設定が正しいか確認しておき、Syntax OKが出たら、service httpd reloadでApacheをリロードします。ドキドキの瞬間ですね。
これでエラーが出るなら、証明書のデータがおかしかったり、何かが足りないと思いますので、一旦ssl.confの内容を元に戻したり、コメントアウトしたりして、やり直しですw
ここで成功すれば、SSLの導入はひとまず完了です。

■cronで証明書を自動更新

これだけだと、3ヶ月後に証明書が失効してしまうので、cronで自動更新させます。
crontab -e

0 10 1,15 * * /var/letsencrypt/certbot-auto renew --agree-tos && service httpd reload
上記は、毎月1日と15日の10時に自動更新します。
月2回もやる必要はないですけどね。

■完成!!

おつかれさまでした! めっちゃめんどいですが、普通にLinux環境にSSLを入れる作業と、それほどめんどさは変わらないので、無料SSL、ありだと思います。

トラブルシューティング

Q: certbot-auto renewすると、「Bootstrapping dependencies for RedHat-based OSes...」みたいなエラーが起こって、証明書の更新ができない。
A: 現状、Python2系を使っているけど、Python3の使用が要求されてるっぽいので、Pythonインストールの環境変数をリセットしてから更新すると上手く行きました。処理の途中で、Python3系が自動的にインストールされます。
unset PYTHON_INSTALL_LAYOUT
service httpd stop
/var/letsencrypt/certbot-auto renew --force-renewal --agree-tos
service httpd start

この記事の最終更新日:2018/04/24
最初に記事を書いた日:2017/11/02

この記事をシェアする

このエントリーをはてなブックマークに追加

関連記事

資料室のトップに戻る
Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> サーバー関連 -> LAMP環境のさくらVPSに無料SSL「Let’s Encrypt」を導入する
▲Top English