本サイトのSSL証明書に、Let’s Encryptを導入してみた
目次
これまで
さて、本サイトにSSL証明書を設置してからまもなく1年が経とうとしています。
そこでやってくるのは、SSL証明書の更新作業です。
ここで使っていた証明書は、COMODOのPositiveSSLという\1,200/年というものです。
1か月に換算するとたったの100円という安いものです。
やりたいこと
1か月に換算すると100円だけど、更新時には1200円も居るので、個人ブログのためとは
言えお財布にはあまりよくないですよね...
そこで、この1200円をケチれないか調べているとLet’s Encryptに出会いその導入方法
をメモします。
前提として
既に、WEBサーバの設定は出来上がっているつもりで話します。
あくまで、証明書を取得するところのみのお話です。
作業内容
Let’s Encryptをインストール
1 2 |
git clone https://github.com/letsencrypt/letsencrypt.git |
gitがインストールされていない場合は、インストールをお願いします。
yum install git
セットアップ作業
1 2 3 |
cd letsencrypt ./letsencrypt-auto certonly --webroot --webroot-path {ドキュメントルート} -d {ドメイン名} -m {メールアドレス} |
この方法は、既にWEBサーバが構築されている場合でサイトを停止したくない場合の方法です。
他にも、--webroot
のところで別のオプションが用意されています。
--standalone・・・認証用にスタンドアロンで80番をリッスンするサーバが立ち上がります。
しかし、既存の設定などは変えたくないので、webrootのオプションで対応しました。
これだと使用するドキュメントルートに認証用のファイルが設置されるタイプなので、既存環境への影響が一番少ないと判断したからです。
続いて必要な引数について説明しますね。
ドキュメントルート | ドメイン名 | メールアドレス | |
---|---|---|---|
説明 | WEBサーバのドキュメントルートを指定 | SSL証明書を発行してもらうドメイン名 | 期限切れなどが通知されるメールアドレス |
例 | /var/www/html/など | example.comなど | info@example.comなど |
証明書の発行
問題がなければ、以下のファイルパスに証明書などが生成されます。
証明書は、/etc/letsencrypt/live/{ドメイン名}/cert.pem
秘密鍵は、/etc/letsencrypt/live/{ドメイン名}/privkey.pem
中間証明書は、/etc/letsencrypt/live/{ドメイン名}/chain.pem
※証明書と中間証明書がセットになったものは、/etc/letsencrypt/live/{ドメイン名}/fullchain.pem
nginxを利用している人はこのファイルを指定しましょう。
あとは、発行された証明書のファイルパスをWEBサーバの設定ファイルに書き込みましょう。
証明書の有効期限
お金を払って購入した証明書の期限であれば、1年やら3年やらと期限が長いですが
Let’s Encryptの場合、90日(3か月)しかありません。
そのため、有償で取得した他の証明書に比べ、4~12倍多く証明書の差し替え作業が発生します。
証明書の自動更新
そんな、期限の短いものは使いにくいという方が居るかもしれませんが、
Let’s Encryptの場合、自動的に更新させ適用までやるということがコマンドでできます。
まず、
1 2 |
./certbot-auto renew |
を実行すると、証明書の有効期限が1か月未満の場合自動的に更新されます。
このコマンドと、crontabを組み合わせることで事実上自動的に適用までさせることができます。
どうするかというと
1 2 |
./certbot-auto renew --post-hook "{実行したいコマンド(webの再起動とか)}" |
と--post-hook
をいうオプションを付ければ、処理成功後に指定したコマンドを実行させることが可能です。
これを「crontab -e」で
1 2 |
0 3 * * 0 /root/letsencrypt/certbot-auto renew --post-hook "systemctl restart nginx" > /dev/null 2>&1 |
のように設定すれば、
毎週日曜日の午前3時に、証明書更新が必要なら更新処理がされて
その後、新しい証明書適用のためにnginxが再起動されるという寸法です。
まとめ
いつまで、Let's Encryptが無償でSSL証明書を使わせて頂けるか不明ですが使える限り
使うことで、自サイトをSSL化させることができます。
これだと、ドメイン認証型のSSL証明書は売れなくなるんじゃないのかなとも思います。
まあ、一応ベンダーのものを使いたいのであればお金を払って購入するのは否定しません。
しかし、SSL化したいだけであれば無償のものを使うのも一つの手だと思います。