Saba note

醜悪コード Ugly hacks ITものづくり

無料SSLを取得する Let’s Encrypt

Let’s Encrypt 総合ポータル
普通のSSLと何が違うのかというのはいろんなサイトさんで説明しているので詳しいことは割愛。とはいえ、この無料SSLの最大の特徴は3ヶ月で自動的に無効になり更新が必要というところです。認証はDVのみ。無料にて完全自動化なので、ヘルプデスクとかお問い合わせとかが全くないので自力でやらないとだめ。以上が簡単ではありますが、この無料SSLの特徴になります。

取得ツールのインストール

SSLの発行はGithubからツールをインストールして行います。

cd /usr/local/
git clone https://github.com/certbot/certbot

certbotが落ちてくればOKです。
続いて、certbotが依存するパッケージをインストール。普通のインストールプラグラムを叩くだけ。すごい時間がかかる。

cd certbot/
./certbot-auto -n

詳しい使い方は、helpを読む。やたらと長いのでリダイレクトしておくといいですよ。
help

./certbot-auto --help all > help.txt

SSLの発行

SSLの発行もコマンドで行います。

$./certbot-auto certonly --webroot \
> -w /var/www/html -d example.com \
> -m oosamuuy@gmail.com \
> --agree-tos -n

ちょっと時間がかかる感じですが、結構すんなり発行されます。
まだちゃんと調べていないのですが、設定したパス(DocumentRoot)に.well-knownというディレクトリが作成されています。何に使うんでしょう。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for example.com
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your cert
   will expire on 2017-06-17. To obtain a new or tweaked version of
   this certificate in the future, simply run certbot-auto again. To
   non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

SSL証明書は、/etc/letsencrypt/live/*に生成されるという解説多いですが、実際は、

/etc/letsencrypt/archive/example.com/cert.pem (証明書)
/etc/letsencrypt/archive/example.com/fullchain.pem (証明書+中間CA証明書)
/etc/letsencrypt/archive/example.com/privkey.pem (秘密鍵)
/etc/letsencrypt/archive/example.com/chain.pem (中間CA証明書)

かつてのディレクトリにシンボリックリンク貼ってあるのですぐわかると思います。
あとはいつものSSLの設定をするだけです。

自動更新

無料SSLゆえなのか90日で期限切れとなります。ですが更新もすべてコマンドラインで行うことができるのでcronなどで自動更新するように設定しておきます。
更新コマンドはLet’s Encryptで取得している証明書をすべて更新してしまうものとドメインごとに個別に行うものがあります。

 /usr/local/certbot/certbot-auto renew --force-renewal

これで一括で更新できます。更新はいつでもできますが更新回数に制限があるため90日以内のどこか1月おきとか2月おきとかに設定するのがよいよいです。
また –dry-runオプションで実際の動作を確認できます。(この更新コマンドはハングアップしたかな?ってぐらいものすごい時間かかるときがあります。ですが比較的安定していてまだ更新自体失敗したことないので気長に待つのがよいかと思います。)

 /usr/local/certbot/certbot-auto renew --force-renewal --dry-run

/etc/letsencrypt/renewal/example.com.confが作成されるので、下記項目のパスをSSL設定パスへ書き換えておきます。

vi /etc/letsencrypt/renewal/example.com.conf

archive_dir = /etc/letsencrypt/archive/example.com
cert = /etc/letsencrypt/live/example.com/cert.pem
privkey = /etc/letsencrypt/live/example.com/privkey.pem
chain = /etc/letsencrypt/live/example.com/chain.pem
fullchain = /etc/letsencrypt/live/example.com/fullchain.pem

ドメイン個別で更新するには、

/usr/local/certbot/certbot-auto certonly --webroot -w /var/www/example -d example.com --renew-by-default && /usr/local/apache2/bin/apachectl restart

という感じで最初にドメインを取得した際と同様のcertonlyコマンドを使います。
これをcloneなどに登録しておきます。Cronの使い方はこちら

エラーとかトラブルシューティング

Let’s Encrypt を利用したSSLサイトにFirefoxでアクセスすると証明書エラーが発生する


コマンド解説 (コマンドリファレンス)
Let’s Encrypt サーバー証明書の取得と自動更新設定メモ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です