無料で使えるSSL「Let's Encrypt」を試す

      2016/05/18

SSL証明書と言うのは、通常はVerisign(現シマンテック)などでお金を払わないと使用する事ができません。
今までは、無料でSSLを使いたい場合はいわゆる「オレオレ証明書」と呼ばれる自己認証局による証明書を使用するのが一般的でした。
しかし、この方法ではセキュリティに問題がある上に、ブラウザでアクセスした際に警告が表示されるため本番環境などでは使用することが出来ません。

今回紹介する「Let's Encrypt」は、まだパブリックベータ版というステータスではありますが、正規の認証局による証明書が無料で導入出来るため比較的お手軽に無料のSSL証明書を警告無しで使うことが可能です。

さて、早速作業開始してみましょう。
試した環境はServersmanVPSのCentOS6.7です。

まずは、必要なパッケージ群をインストールします。
作業は、実際にドメインを運用しているWEBサーバー上で実施する必要があります。

yum install httpd openssl mod_ssl git

opensslなどは、既にインストール済みでもセキュリティのupdate等がある場合があるので、できれば一緒にupdateしておきましょう。
※上記コマンドでupdateも同時に実施してくれます。

次にLet's EncryptのクライアントをGithubからcloneして、インストールします。

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
service httpd stop
./letsencrypt-auto certonly --standalone -d hoge.m-heroes.net

※作業中は、port80が使われているとエラーになるため、Apacheを停止しておく必要があります。
hoge.m-heroes.netは発行したい証明書のドメイン名を指定して下さい

実行するとpythonが自動でインストールされた後にブルー画面のダイアログが表示され、メールアドレスを聞いてきますので適当なアドレスを入力してOKを選択します。
※上記アドレスは、証明書を無くした場合にリカバーするのに使用するので、受信可能であれば何でも大丈夫です。
そして利用規約に同意しろとの事なのでAgreeを選択します。

すると、/etc/letsencrypt/live/hoge.m-heroes.net/配下にごそっと証明書が生成されます。
あとはApacheの設定で生成された証明書を指定して起動しなおせば完了です。
※ディレクトリ名は発行したドメイン名で置き換えて下さい。

SSLCertificateFile /etc/letsencrypt/live/hoge.m-heroes.net/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/hoge.m-heroes.net/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/hoge.m-heroes.net/chain.pem

以上で完了です。
ブラウザからSSLにアクセスすると警告無しでSSL接続が出来るようになったと思います。
作業自体はオレオレ証明書を作るよりも楽ですね。

ただし証明書の期限は90日なので、期限が切れる前に上記の作業を再度実施する必要があります。
期限が短い上に作業中にApacheを停止しないといけないので、運用中のサーバーで更新する場合にはメンテナンス時間を考慮する必要があるので結構面倒ではあります・・・。

Let's Encryptのクライアントが作業中のサーバーが正規のサーバーであることを確認するためにport80を使っているようなのですが、他のドメイン認証のSSLみたいにDocumentRootに特定のファイルとか置いて確認とかじゃダメなんでしょうかね・・・?
まあ、まだベータ版ですし、今後自動更新も出来るようになるらしいので期待したいと思います。

今のところ、テスト環境の検証用や、管理画面や社内システムでSSLを使いたい場合などであれば問題なく利用できそうです。

自動更新出来るようになったらしいので、試してみました。

 - 技術系(インフラ) , , ,