Let’s encryptのサーバ証明書を発行する
安全なインターネット。
無料でサーバ証明書を取得できるサービス Let’s Encrypt がパブリックベータに入りました。少し前からプライベートベータをやっていましたが、今回パブリックになったということで使ってみることにしました。まず最初に基本的なところですが、このサービスで発行できる証明書はドメインを所有していることを証明するDV(Domain Validation)証明書のみです。よくある有料の証明書は、組織の存在を証明するOV(Organization Validation)が多いですが、この無料証明書ではそこまで信頼性はありません。ただ、https通信を行うための正当な証明書として主要ブラウザにCA証明書が登録されているため、サイトの安全性を上げるためには十分使えます。では、ドメインの所有をどうやって確認するのかと思ったのですが、どうもツールを使ってサーバを一時的にいじってレスポンスを見るということをやっているようです。要は、自分でWebサーバの管理権を持っていないとできない操作をやって、その反応を見て判定しているようです。なかなか面白い方法ですね。なので、外からのアクセスが許されていないサーバでは発行できないのでしょう。
では、実際に発行の手順を。まずは、githubからツール一式をクローンします。
[code lang=”shell”]
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
[/code]
あとは、以下のコマンドを叩くだけで自動的にサーバの環境を読んで証明書発行の手続きをしてくれます。途中、ドメインの選択(複数ドメインをサーバに設定している場合)、必ずhttpsにリダイレクトするかとか聞かれたりましすが、まあそんなに迷うようなことはないでしょう。注意点としては、ワイルドカードで証明書を発行できないので、一個一個のドメインごとに証明書を発行する必要があるところぐらいでしょうか。ただ、この確認画面とかをスキップするコマンドラインオプションがよくわからず、更新を自動化したりできるかちょっと調べないとわからないです。証明書の期限はどうやら3ヶ月なので、こまめに更新を走らせる必要があります。
[code lang=”shell”]
./letsencrypt-auto
[/code]
実は、上記のツールを使うとApacheとかnginxの設定を勝手に呼んで、証明書の設定までやってくれてしまいます。個人的には、自動でやってもらった方がいいと思います。心配ならマニュアルでやるオプションもあります。
自分のサーバでちょっとハマったのはCDNの絡みでした。自分は、CDNにCloudFlareを使っているのですが、CDNが有効になっているとうまくいきませんでした。多分、さっきのドメインの正当性を確認する時、CDNのhttps設定がバッティングしてしまうからだと思います。一時的にCDNを無効にして証明書を発行すれば問題は発生しませんでした。これも自動で証明書更新する時は障害だなあ。
とまあ、かなり簡単に証明書を発行できてしまうので、ベータから抜けたら実サービスに使ってもいいんじゃないんでしょうか。少なくとも家で運用しているサービスには使ってみようと思います。今、このblogにも設定しています。ただ、上で書いたようにCloudFlareでhttpsを有効にしているので、表向きはCloudFlareの証明書が使われます。CloudFlareとうちのサーバ間は、Let’s Encryptの証明書が使われるようになっています。
—–
Leave a comment