無料のSSL証明書「Let’s Encrypt」で常時SSLサイトにしてみる

CentOS

無償でSSL(TLS)証明書の発行が可能な「Let’s Encrypt」を利用してサイトを常時SSL化してみます
「Let’s Encrypt」のメリットは無料で使えるっていうところは問題ないかと思いますが、個人サイトで利用するにあたってのデメリットとしては有効期限が90日間しかないので自動更新させる仕組みを入れないとあっという間にダメなサイトとなってしまうこと。
それと、無料だからこそ悪用してくる人がいて、本当にずっと無料なの?本当にずっと手軽に発行できるの?って不安が残るところ

まあ、そん時はそん時ってことで使ってみます

「Let’s Encrypt」の詳しい話は下記が参考になります
http://www.atmarkit.co.jp/ait/articles/1606/02/news049.html

Let’s Encryptのインストール

まず先にHTTPS用のポートを開放します

サーバを再起動してもHTTPS用のポートが開放されるようにする

HTTPサーバを起動している場合は必ず停止します

事前にGitとopenssl,mod_sslをインストール

Let’s Encryptをインストール

証明書の作成をする

メッセージに『Congratulations』が表示されれば成功です

作成される証明書の種類は
• SSLCertificateFile – サーバ証明書(cert.pem)
• SSLCertificateKeyFile – 秘密鍵(privkey.pem)
• SSLCertificateChainFile – 中間CA証明書(chain.pem)

作成された証明書のファイルは
/etc/letsencrypt/live/発行したドメイン名/
に作成されています

ApacheのサーバーにSSLの設定をする

バーチャルホストの設定で実施しています。バーチャルホストを利用しない場合はssl.confを使ってください

HTTP接続(80番ポート)は後で設定しますので先に443ポート用を実施します

apache2.4系からはconfファイルの先頭に
NameVirtualHost *:ポート番号
は不要となりました

SSLセキュリティのチェック

この設定でApacheを再起動させてHTTPSでサイトに接続します

設定がうまくいってないとブラウザに怒られます
20160706_ssl011

設定がうまくっていれば正常にサイトが表示されて緑の鍵マークがアドレスバーに表示されているのが分かります
20160706_ssl012

証明書の情報を表示させて、「Let’s Encrypt」の記述があることを確認してください
20160706_ssl013

もしもアドレスバーの鍵マークに三角やビックリマークが表示されている場合は外部からファイルを読みこまさている場合に読み込み先のURLがHTTPに指定されている可能性があります
HTTPSで表示させようとしているのにHTTPで表示する部分があるので「おいおい」と言われている状態です
画像を外部リンクしていたり、アフィリエイトをしていると引っかかりやすい部分です
読み込みをHTTPSに替えましょう

SSLセキュリティのチェック

サイトが正常に表示されたら、次はSSLセキュリティのチェックです
HTTPSにしたから安全というわけではなく、SSLにも脆弱性はいっぱい見つかっています
下記のサイトで判定してみてください

Qualys SSL Labs SSL Server Test
https://www.ssllabs.com/ssltest/
A判定は出したいところです

常時SSL化するconfファイルの設定

最後の設定です
HTTP接続された場合に強制的にHTTPSにリダイレクトさせることによって常時SSL化のサイトになります

「Let’s Encrypt」は無料で発行できるので運用するドメイン全てをSSL化してしまっています。なので80番ポート(HTTP接続)のconf設定は個別に書かずに1つのファイルにリダイレクト記述のみに絞っています

ブラウザのアドレスバーにHTTPでURLを打ち込んむとHTTPS接続に変わっていることが確認できれば成功です