メモ > サーバ > 各論: SSL証明書 > SSLの概要
SSLの概要
■SSLとTLS
SSLは「Secure Sockets Layer」の略で、インターネット上でやりとりされるデータの「盗聴」「改ざん」「なりすまし」を防止するための通信方式。
SSLの設計を根本から見直して新しく作成されたものがTLSで「Transport Layer Security」の略。
よって現在使われているのはTLSだが、馴染みのあるSSLという名前で呼ばれ続けている。
SSLのバージョンについて|GMOイプシロン株式会社
https://www.epsilon.jp/ssl/ssl_version.html
■暗号化とハッシュ化
ハッシュ化は、復号化を前提としていない。
暗号化は、復号化を前提としている。
ハッシュ化とは?暗号化との違いや利用シーンを詳しく解説!|ITトレンド
https://it-trend.jp/encryption/article/64-0065
■公開鍵暗号方式と共通鍵暗号方式
共通鍵暗号方式は、暗号化するための鍵とそれを復号するための鍵に同じものを使用する方式。
公開鍵暗号方式は、暗号化(復号)するときに「公開鍵」「秘密鍵」という別々の鍵を用いる方式。共通鍵暗号方式よりも複雑で処理コストも高い。
SSLでも共通鍵暗号方式で暗号化と復号化を行うが、共通鍵を安全にやりとりしてからとなる。
共通鍵を安全にやりとりするために公開鍵暗号方式を使用する。
PKIとは?|GMOグローバルサイン【公式】
https://jp.globalsign.com/ssl-pki-info/pki/aboutpki.html
■公開鍵暗号方式の仕組み
公開鍵で暗号化されたものを、秘密鍵によって復号化できる暗号化方式。
クライアントは、ルート証明書(公開鍵が含まれており、ブラウザに組み込まれている)を持っている。
Webサーバには、サーバ証明書(公開鍵が含まれている)と秘密鍵(SSL導入の際に組み込む)が組み込まれている。
サーバ証明書は、中間認証局によって中間証明書を使って発行される。
その中間証明書は、ルート認証局によってルート証明書を使って発行される。
ルート証明書は、はじめからブラウザに組み込まれている。
この前提で、以下の流れで暗号化通信が行われる。
1. クライアントからWebサーバに、接続要求を行う。
2. Webサーバからクライアントに、サーバ証明書を送る。
3. クライアントは、ルート証明書でサーバ証明書の妥当性を検証する。
4. クライアントは、共通鍵を生成する。
5. クライアントは、サーバ証明書内の公開鍵で共通鍵を暗号化する。
6. クライアントからWebサーバに、暗号化した共通鍵を送付する。
7. Webサーバは、暗号化された共通鍵を秘密鍵で複合する。
8. クライアントとWebサーバの両方が共通鍵を持ったことになるので、以降は共通鍵で暗号化通信を行う。
より簡易に書くと
1. クライアントは、Webサーバからサーバ証明書を受け取る。
2. クライアントは共通鍵を生成し、サーバ証明書内の公開鍵で暗号化する。
3. Webサーバは、クライアントから暗号化された共通鍵を受け取る。
4. Webサーバは、暗号化された共通鍵を秘密鍵で複合する。
という流れになる。
公開鍵だけで複合できない根拠は「SSL証明書の安全性と有効期限」を参照。
SSL/TLS暗号化通信の仕組み|GMOグローバルサイン【公式】
https://jp.globalsign.com/ssl-pki-info/ssl_practices/ssl_encryption.html
【図解】SSL/TLSとは何か?仕組みや導入方法をわかりやすく解説します | カゴヤのサーバー研究室
https://www.kagoya.jp/howto/rentalserver/ssl/
SSLって何?意味や仕組みをわかりやすく解説! | さくらのSSL
https://ssl.sakura.ad.jp/column/ssl/
■証明書の関係
秘密鍵 … 流出してはいけない鍵ファイル。
公開鍵 … 流出しても問題無い鍵ファイル。
CSR … 証明書を発行するための署名要求(Certificate Signing Request)。つまり認証局に対し、SSLサーバ証明書への署名を申請する内容。
CSRには、公開鍵、発行者情報やコモンネーム(FQDN)、電子署名(もとのCSRをハッシュ化し、さらに秘密鍵で暗号化したもの)が含まれる。
秘密鍵があれば、CSRは何度でも生成できる。
証明書 … 認証局から発行されるSSL証明書。
CSRをもとに発行される。
中間証明書 … 認証局から発行されるSSL証明書。
証明書に階層構造を持たせることにより、認証局が攻撃されたときの影響を抑えている。
CSRについて教えてください | GMOグローバルサイン サポート
https://jp.globalsign.com/support/ssl/certificates/about-csr.html
■秘密鍵と変換
秘密鍵には以下のように複数の種類があり、それぞれ変換することができる。
なお複数の形式があるのは、「OSやツールの違い」「特定の用途に最適化された設計になっている」「歴史的背景(新旧の形式が共存)」などによる。
id_rsa ... OpenSSH形式で保存された、RSAの秘密鍵。(RSAは、桁数が大きい合成数の素因数分解問題が困難であることを安全性の根拠とした暗号化方式。)
主にLinuxやUNIXへのSSH接続に使用する。
Linux上で「ssh-keygen -t rsa」などのコマンドを実行することで作成できる。
このファイルに拡張子は無い。対応する公開鍵は id_rsa.pub というファイルに作成される。
pem ... 「Privacy Enhanced Mail」の略で、電子メール暗号化技術。
AWSなどのクラウドサービスが発行する。SSL証明書やTLSでの鍵交換、API認証にも使用される。
BASE64エンコードされたテキストファイルとなっている。
ppk ... 「Putty Private Key」の略で、PuTTY形式の秘密鍵。
PuTTYというWindows向けSSHクライアントが使用する鍵。WinSCP・Tera Term・FileZillaなどでも使用される。
puttygenコマンドやPuTTYgenツールを使用して生成または変換できる。
id_rsa⇒pem⇔ppk 相互変換 | Punio Kid Works
https://web.archive.org/web/20191229185925/http://www.puniokid.com/tips/linux/69/
SSH秘密鍵 id_rsa -> putty形式&OpenSSH形式に変換 - Qiita
https://qiita.com/dskst/items/391fc55018fbf3cf795e