Let's EncryptでSSL化した時のメモ(CentOS6.9、Apache2.2)

  • 投稿日:
  • by
  • カテゴリ:

導入方法を検索したら古い情報も多くて手間取ったけど、
下記サイトに情報がまとまっている。インストールも簡単だった。
https://letsencrypt.jp/usage/#Install

まずiptablesを変更して443ポートを空けておく
> vi /etc/sysconfig/iptables
> /etc/init.d/iptables restart

インストールは下記だけで済んだ。
> sudo yum install epel-release
> wget https://dl.eff.org/certbot-auto
> chmod a+x certbot-auto
> ./certbot-auto
必要なライブラリやPythonのインストールも自動でやってくれる。
httpからhttpsにリダイレクトするか尋ねられたのでyesにしたら、httpd.confのVirtualHost設定も書き換えてくれたみたい。

certbotのstandaloneプラグインだと証明書発行時にWebサーバの停止が生じる。
稼働中のサイトが止まるのは困るのでwebrootプラグインを使うのが良い。

証明書は/etc/letsencrypt/archive内に保存される。
シンボリックリンクが/etc/letsencrypt/liveに作られるので、httpd.confに記述する証明書ファイルパスはこちらを使う。

証明書取得時に使用したオプションは下記に保存されて、更新時もこの設定が使われる。
/etc/letsencrypt/renewal/****.conf

有効期限の確認方法
> openssl x509 -noout -dates -in /etc/letsencrypt/archive/ドメイン名/cert1.pem

定期的に証明書を更新するためにcronに下記を登録した。
0 4 1,15 * * root /bin/certbot-auto renew --webroot-path /var/www/html --renew-hook "/etc/rc.d/init.d/httpd reload"
毎月1日と15日に実行、/var/www/html/.well-known/acme-challenge内に一時ファイルが作られてそれを認証サーバが読みにきて認証される。
--renew-hookで証明書更新成功時にhttpdの設定を再読み込みするようにした。

蛇足:
稼働中の本番サーバーでいきなり実行するのは怖かったので、実際は下記の手順で試した。
・ちょうどrsyncで同期させたテストサーバ(ドメイン無し)があったのでそちらでmanualプラグインで実行。
> ./certbot-auto certonly --manual -d example.com
進めると、認証ファイル名とそのファイルに記述する認証コードが表示されるので指示通りのURLでアクセスできるよう本番サーバにファイルを置く。
・ENTERを押すとそのファイルにWebアクセスがあり、/etc/letsencrypt/に証明書などが生成される。
・証明書をテストサーバに持ってきてhttpd.confでSSL用のVirtualHostを設定。
・hostsファイルを書き換えてドメイン名でテストサーバにアクセス。正常にSSLが機能していることを確認。
・本番サーバーでwebrootプラグインで実行。