🔖

SSL/TLS化の仕組みとcertbotで証明書発行を自動化

2024/01/14に公開

なぜ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証明書を適切なパスへ配置

https://gitlab.com/bay1998/hacluster-chef/-/tree/main/itamae/recipe/lets_encrypt?ref_type=heads

参考

https://qiita.com/s-katsumata/items/629222b24113d7a49b79

Discussion