無料SSL証明書の導入「Let's encrypt」

2017年4月10日

サーバー セキュリティ テクノロジー

GoogleがHTTPSを推奨してHTTP/2.0が2017年には主流になるのではないかとエンジニア周辺ではザワザワしていますが、 HTTPSの流れは2016年度にもAppleのアプリ開発の認証サーバーをSSLのみに変更しているし、Yahooを始め、大手のサイトが個人情報入力ページだけでなく、トップページからSSLにリダイレクトする仕様になっている。 世の中はどんどんHTTPSの流れになってきています。 SSL必須ですよ・・・

SSLではない?TLS?

正確に言うとSSL規格はすでに脆弱性の為にブラウザなどで使用禁止になっているんですよね。 SSLの上位規格としてTLSというプロトコルに名前も仕様も変わってきています。 ほぼ毎年DNSにおける脆弱性が多発しています。 そして、SSLでは、穴がありすぎるということでTLSに切り替わることが決まったようです。 まあSSLって言っていて問題はなさそうですね。今のところは。

将来80番ポートは使えなくなる?

Googleが、SEOにおいてもSSLを上位表示すると好評したことや、ChromeブラウザでJSコンソールにアラートを表示し始めた事で世の中は、80番ポートを使ってはいけなくなるのではないかと言われていますが、恐らくそんなことはないでしょう。 きっと、法人サービスはSSL必須で、開発環境や、TEST環境などは、80番で十分でしょう。 誰にも迷惑掛けないしSEOも必要ないでしょうからね。

SSL証明書も無料課の流れ

AWSではLBを使うと無料でSSL証明書が使用できるし、世の中に無料SSLサービスを出してきた会社が出てきています。 今までは金もかかるし、サーバー設定も面倒くさい、ドメイン管理だけで手一杯と感じていた独自エンジニアも多いと思いますが、SSLをタダで手に入れられるとなれば、入手しないという方向性は無いでしょう。 という事で、僕もSSLをブログに導入する事にしました。 AWSを使っている人は、そちら側で行ってもらいたいんですが、それ以外の方法でサーバーを公開している場合は、以下の2つのサービスが無料SSLとして公開されています。
  1. StartSSL
  2. Let's Encrypt
でも、実はStartSSLは、2017年4月の時点で、ちゃんとサーバーに証明書をセットしても、ブラウザで、エラーが出てしまいます。 ※これで、丸2日ぐらいやられてしまいました・・・ ということで、Let'sEncryptしか選択肢はないようです。

Let's Enctyprのセットは非常に簡単

簡単に説明すると、以下の手順で導入が完了できます。
  1. 1. certbotのインストール
  2. 2. コマンドを実行、証明書の取得
  3. 3. モジュールの設定、再起動(今回はApache)
※参考サイトを見てもらうか、ググってもらうと、コマンドなどは参考にできます。

証明書の取得

コマンドを実行した後、証明書は /etc/letsencrypt/live/*domain* に保存されます。 適宜セットしましょう。 ちなみに、今回の場合のapacheのconfは以下の通りです。 <VirtualHost *:443> DocumentRoot "/var/www/html" ServerName ideacompo.com:443 SSLCertificateFile /etc/letsencrypt/live/ideacompo.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/ideacompo.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/ideacompo.com/chain.pem <Directory /> AllowOverride All Require all granted </Directory> </VirtualHost>

注意点

インストールはgitかaptかyumでサクッとインストールできるのですが、コマンドを実行した時に、少しトラブったので、メモしておきます。 DNS情報がレジストリと食い違っていると、IPの逆引きができない為、エラーが出て、設定が完了しません。 Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): Obtaining a new certificate Performing the following challenges: tls-sni-01 challenge for ideacompo.com tls-sni-01 challenge for game.ideacompo.com tls-sni-01 challenge for image.ideacompo.com tls-sni-01 challenge for photo.ideacompo.com tls-sni-01 challenge for pic.ideacompo.com tls-sni-01 challenge for wordpress.ideacompo.com Waiting for verification... Cleaning up challenges Failed authorization procedure. photo.ideacompo.com (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: DNS problem: NXDOMAIN looking up A for photo.ideacompo.com, image.ideacompo.com (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: DNS problem: NXDOMAIN looking up A for image.ideacompo.com, pic.ideacompo.com (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: DNS problem: NXDOMAIN looking up A for pic.ideacompo.com IMPORTANT NOTES: - The following errors were reported by the server: Domain: photo.ideacompo.com Type: connection Detail: DNS problem: NXDOMAIN looking up A for photo.ideacompo.com Domain: image.ideacompo.com Type: connection Detail: DNS problem: NXDOMAIN looking up A for image.ideacompo.com Domain: pic.ideacompo.com Type: connection Detail: DNS problem: NXDOMAIN looking up A for pic.ideacompo.com To fix these errors, please make sure that your domain name was entered correctly and the DNS A record(s) for that domain contain(s) the right IP address. Additionally, please check that your computer has a publicly routable IP address and that no firewalls are preventing the server from communicating with the client. If you're using the webroot plugin, you should also verify that you are serving files from the webroot path you provided. root@debian:/usr/local/letsencrypt# You have new mail in /var/mail/root root@debian:/usr/local/letsencrypt# root@debian:/usr/local/letsencrypt# ./letsencrypt-auto --apache Saving debug log to /var/log/letsencrypt/letsencrypt.log Which names would you like to activate HTTPS for? 今回は、お名前comのDNSレコードの登録が足りていなかったので、追加して解決。 または、登録されていないサブドメイン以外を番号指定することで、設定継続できます。

参考サイト

http://qiita.com/yucjk0120/items/7ef77ad17a96071e9258

設定完了

上記作業が完了し、非常にサクッとSSL対応することができました。 小さくて見えづらいですが、左上に「保護された通信」という文字が表示されているので、成功です。 以後、色々なサービスでの活用ができるので、大きな一歩になりました。 ちなみに、このブログは2017年4月1日時点の情報です。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。