Lets Encryptの導入

Lets Encryptについて

参考:https://ssl.sakura.ad.jp/column/free-or-paid/

無料でも問題ないのか?

同じSSL証明書である以上、強度は同等らしい。

何故無料で運営できているのか?

Lets Encryptは寄付により運用できている。

無料であることのデメリットは?

フィッシングサイトなどで悪用される場合がある。このため永久的に暗号化を保証できるか微妙ではある。
90日で更新が必要。なので自動化が必要になる。
寄付なので、サービス終了が起こり得るリスクがある。

導入手順

これに従って行う。
https://letsencrypt.jp/usage/

mod_sslの確認

このコマンドで、

# httpd -M

この表示があればOK.

ssl_module (shared)

443ポートの確認

iptableで開放されているか確認。

iptables -L

httpsの表示があればOK。

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https

Certbot クライアント準備

Epelを有効に

yum install epel-release

certbot-autoをインストール

# wget https://dl.eff.org/certbot-auto
# chmod a+x certbot-auto
# ./certbot-auto

./certbot-auto を実行することで、必要なパッケージがダウンロードされる。
その後自動的に対話式で証明書作成が始まる。
virtualhost設定を取得してドメインリストが表示されるので、該当のものを選択してEnter.

成功すると以下のような表示に。

Congratulations! You have successfully enabled xxxx.com~

pemファイルの格納場所や有効期限も記される。
pemは、以下にあるらしい。

/etc/letsencrypt/live/

sslの設定ファイルも自動生成されるみたい。

/etc/httpd/conf.d/xxxxxxx.com-le-ssl.conf

で、アクセスしてみるのだが、
Virtualhostが反映されない。。。
いろいろ調べたところ、自動生成されるSSL用confファイルの、ここだった。。

<IfModule mod_ssl.c>
<VirtualHost *:443>

</VirtualHost>
</IfModule>

これを

#<IfModule mod_ssl.c>
<VirtualHost *:443>

</VirtualHost>
#</IfModule>

これでOK.
mod_sslは入っているはずなのだが、
どういう意味だったのだろう。。。

とにかく、これでSSL化はOK.
あとはSSLへのリダイレクトを各サイトへ設定し、
自動更新の設定だな。

再度作成

ドメインが変更したり、再作成が必要なときは、

sudo /var/www/certbot-auto

これだけでOK.

自動更新設定

更新は、このコマンド一発でいけそう。

sudo /var/www/certbot-auto renew --post-hook "sudo service httpd restart"

Cert not yet due for renewal なので何も起こらないが、動作しているようだ。

あとはcronに設定して、様子を見る。

cronの実行確認

/etc/rc.d/init.d/crond status

cronの設定。
毎週月曜の0時に実行。
root権限で、

# crontab -e
00 00 * * 1 /var/www/certbot-auto renew --post-hook "sudo service httpd restart"

確認

# crontab -l
00 00 * * 1 /var/www/certbot-auto renew --post-hook "sudo service httpd restart"

これで自動化されるだろう。
メール飛ばす機能もつけたいがまた今度。