SSL証明書 - toge510/homelab GitHub Wiki

SSL

  • SSL(Secure Socket Layer)/ TLS(Transport Layer Security)
  • 安全にデータを送受信するプロトコル。データの暗号化や通信相手の認証をしたりすることでデータを守る。
  • バージョンアップ:SSL2.0 => SSL3.0 => TLS1.0 => TLS1.1 => TLS1.2 => TLS1.3
  • どのバージョンを使用するかはSSLハンドシェイクにより決定。

SSLで防ぐことができる脅威

  • なりすまし
  • 改竄
  • 盗聴

暗号化で盗聴を防ぐ

ハッシュ化で改竄を防ぐ

  • データのハッシュ値も合わせて送ることで、受け取った端末において、受け取ったデータから計算したハッシュ値と、添付されていたハッシュ値を比較して、同じなら改竄されていないと判断できる。

証明書でなりすましを防ぐ

  • 証明書でなしすましを防ぐ。証明書の情報を元に、通信相手の身元を確認することができる。
  • 証明書が本物かどうかは、証明書に含まれる、認証局(CA, Certification Authority)のデジタル署名によって判断できる。

SSLを支える技術

共通鍵暗号方式

  • SSLは、暗号化鍵と復号カビに同じ鍵(共通鍵)を使用する「共通鍵暗号方式」を使用。
  • 通信相手に、どうやって、共通鍵を共有するか?が問題。鍵配送問題。

鍵交換アルゴリズム

  • 公開鍵、秘密鍵を使用して安全に共通鍵を共有する。DHE,ECDHEといったアルゴリズムがある。
  • 鍵配送問題を解決できる。

デジタル署名アルゴリズム

  • 通信相手が信頼できるかどうかは、証明書に含まれるデジタル署名で判断する。
  • デジタル署名は、RSA署名というデジタル署名アルゴリズムにより生成されている。
  • RSA署名は、「ハッシュ化」と「公開鍵暗号方式」を組み合わせた技術。
  • 公開鍵暗号方式:暗号化鍵と復号鍵に異なる鍵を使用する暗号方式。代表的なものでRSA暗号がある。RSA暗号は秘密鍵と公開鍵を逆にしても成立する特徴がある。
  • RSA署名は、RSA秘密鍵を「署名鍵」にして、データの署名を生成し、送信する。受け取った受信者は、RSA公開鍵を「検証鍵」 として署名を検証する。

事前準備フェーズ

  • サーバ管理者はWebサーバ-でRSA秘密鍵と、それに対応するRSA公開鍵を含むCSR(Certificate Signing Request)ファイルを作成する。
  • CSR
    • Common Name/SANs(FQDN,WebサイトのURL)
    • Organization
    • Organizational Unit
    • Locality
    • State or Province
    • Country
  • CSRとともに、認証局に証明書発行の申請をする。
  • 認証局が申請元の身元審査をする。メール認証やDNS認証。
  • サーバ証明書が発行される。
  • RSA秘密鍵と、サーバ証明書をWebサーバにインストールする。
  • 中間証明書(中間CA証明書、チェーン証明書)というサーバ証明書を発行した認証局の証明書もインストールする。

中間証明書について

  • 認証局はたくさんのデジタル証明書を管理するために、「ルート認証局」と「中間認証局」という2種類の認証局で構成されている。
  • ルート認証局は、ルート証明書(ルートCA証明書)を発行する。ルート証明書は、ルート認証局自身の秘密鍵でデジタル署名されている。
  • 中間認証局は、サーバにインストールするサーバ証明書を発行する認証局。中間認証局は、上位の認証局の秘密鍵で署名を受けて、発行してもらう。

Webサーバに、中間証明書と、サーバ証明書をインストールすることで、ルート証明書は中間証明書を辿ってサーバ証明書を検証することができる。

  • ブラウザにバンドルされているルート証明書が、ルート認証局の秘密鍵で署名された中間証明書を検証し、中間認証局の秘密鍵で署名されたサーバ証明書を検証する。

image