🔖
SSL/TLS化の仕組みとcertbotで証明書発行を自動化
なぜHTTPS化するのか?
- 通信における「盗聴」「なりすまし」「改ざん」を防止する。
- 「なりすまし」
- サーバーとクライアントで相互の信頼を証明しないといけない。
- そのため、サーバー証明書認証とクライアント証明書認証を実施する。
- 「盗聴」
- 共通鍵認証を用いて、通信内容を暗号化する。
- 公開鍵認証を用いて、やりとりする共通鍵を暗号化して相手へ渡す。
- 「なりすまし」
- HTTP通信をSSL/TLSというプロトコルを用いて通信データの暗号化を実現する。
通信のSSL/TLS化の仕組み
- まず大きく分けて二つのフェーズに分かれる。
- サーバーのなりすまし防止
- サーバー側の信頼を証明する必要がある。
- CA(中間認証局)が発行したクライアント証明書とサーバー証明書の検証する。
- サーバーからサーバー証明書とCA公開鍵をクライアント側へ送付。
- クライアントは送付されたCA公開鍵とサーバーが正当であることを証明書を元に確認。
- クライアントはCA公開鍵を元に共通鍵をサーバー側へ送付。
- サーバーはCA秘密鍵を用いて送付データを復号化して、共通鍵を取得。
- サーバークライアント間通信の「盗聴」防止
- サーバーとクライアントだけが保持している共通鍵を元に通信データを暗号化。
- サーバーのなりすまし防止
Let's Encryptとは
- 認証局。無料でSSL証明書を発行してくれる。
メリット
- TLSのX.509証明書を無料で発行できる
- 発行が自動化できる
デメリット
- 証明書の有効期間は90日と短い。
- 発行に際しての認証作業を省略し、自動でSSL証明書の発行している
- セキュリティレベルは低い。
- サポート対応なし。
結論
- コストと労力をかけたくないため、個人ブログレベルだとLet'sEncryptが最適である。
Cookbook
- Certbotをインストール。
- Let’s Encrypt 認証局から SSL 証明書を発行してもらうためのクライアントツール。
- 以下を自動で実行してくれる。
- サーバー秘密鍵を作成
- 無料認証局へSSL証明書発行依頼
- SSL証明書を適切なパスへ配置
参考
Discussion