- SSLサーバ証明書は、(基本的に)ウェブサーバ内の「証明書ストア」に保存されている暗号化されたファイルです。
- サイトにアクセスがあると相手に提示して、通信内容が正しいことを証明するのに使われます。

YouTube動画でも話しています。
1. サイトがSSLサーバ証明書を取得する流れ
お店のホームページを作っています。
サイトの「セキュリティ保護」ができていないようなのですが、そもそもセキュリティ証明書の仕組みがよくわかりません。
どんな情報をどこに記載されていると、「セキュリティ保護」されたことになるのでしょうか?

確かに。
そもそも「セキュリティ証明書」って、いったい何がどこにあるの?
ウェブサイトの通信をセキュリティ保護(暗号化)するには、「認証局(CA:Certification Authority)」に申請して「SSLサーバ証明書」を受け取る必要があります。
「SSLサーバ証明書」は、2つの役割がある電子証明書です。
- 役割1)サイト運営者の実在証明
- 役割2)通信の暗号化
- 電子証明書)暗号で保護されたテキストファイル

サイト運営者は認証局に、サーバ証明書への署名依頼に必要な情報(CSR)を送ります。
ドメイン名やウェブサーバの公開鍵などです。
レンタルサーバを利用している場合は、サーバ管理会社などを介して登録できます。
すると、SSLサーバ証明書というデータを作ってくれます。
これで認証局が「このドメイン名はこのウェブサーバが正当です」と「お墨付き」を与えてくれたことになります。
受け取ったサーバ証明書は、ウェブサーバの「証明書ストア」という場所に保存します。
証明書ストアは、ウェブサーバのファイルシステムやレジストリなどにあります。
ウェブサイトにアクセスがあると、相手に提示するために送信します。

飲食店が 食品衛生管理責任者資格 の証明書を店頭に掲示しているような感じだね。
1-1. CRTファイル
もう少し詳しくみると、SSL証明書に関連するファイルには、主にKEYファイル・CSRファイル・CRTファイル・CERファイルがあります1。
認証局に生成してもらうのは、CRTです。
ファイル拡張子 | 内容 |
---|---|
.key | 秘密鍵ファイル(非公開) |
.csr | 「Certificate Signing Request」の略。 秘密鍵を元に作った公開鍵ファイル。 コモンネームなどの情報も付いている。 |
.crt .cer | どちらも「Certificate」の略。 サーバ証明書。公開してよい。 CSRファイルの正しさを認証局が証明。 UNIX系のサーバで生成すると .crt、Windows系のサーバで生成すると .crt 2。 |
KEYは、ウェブサーバ側で生成する秘密鍵です。
openssl genrsaコマンドを使うと、ランダムなキーを生成してファイルに保存できます。

openssl genrsa -out server.key 2048
RSA 秘密キーの生成には、基本的に 2 つの素数の生成が含まれます。秘密キーを生成すると、生成の進行状況を示すさまざまなシンボルが出力されます。(…)
キーの生成はランダムなプロセスであるため、キーの生成にかかる時間は多少異なる場合があります。
/docs/man1.0.2/man1/genrsa.html

キーを生成するだけなら、MacBookのターミナルでもできます。
CSRは、KEYを元に生成します。
KEYファイルをCSR生成で利用したら、すべてのセキュリティ証明の元になるので外部に公開してはいけません3。
一方、CSRは公開鍵です。
認証局に依頼してCSRをもとにCRT, CERを生成してもらいます。

2. あらかじめ持っているCAルート証明書

ところで「認証局」の証明書はどうして正しいと言えるの?
誰でも認証局になれるの?
それは、スマートフォンなどの端末内に、あらかじめ「CAルート証明書」という認証局の発行するもう1つの証明書があるからです。
これは、認証局自身の正当性を証明する電子データです。
代表的な認証局のルート証明書は、ウェブブラウザやメールソフトなどのソフトウェアにプリインストールされています。
そこで、ユーザーは意識することなくルート証明書を信頼しています。
つまり、ユーザーはメーカーを信頼し、メーカーやシステム開発会社が信頼した認証局の証明書を入れているわけです。
ちなみに、スマートフォンに入っていない「CAルート証明書」でも、自分の責任で あとから追加できます。

3. SSLサーバ証明書の使われ方
このように2つの経路で、ユーザー・サーバそれぞれに保存された証明書は、暗号通信を開始するときに利用されます。

ウェブブラウザは、サイトにアクセスするときにサーバ証明書の情報を検証し、その正当性を確認します。
SSLサーバ証明書の署名を、自分の持っているルート証明書と照らし合わせます。
ルート証明書の鍵でサーバ証明書の暗号を正しく解読できるなら、「正しい」と言えるわけです。
うまくいけば、そこでお互いの暗号通信に使う鍵を作って交換します。
やり取りする情報をこの共通鍵で暗号化することで、途中で傍受・改ざんを防げます。
インターネット通信の経路には、いろんなコンピュータが介在しています。
しかし、暗号化されていると誰かが勝手に中身を「盗み見る」ことができません。
また、途中のデータを「すり替え」たりしても、交換した鍵と合わなくなってしまうのです。




(補足)
- SSL証明書のファイル形式と作成方法まとめ | メディカルフィールズ社員ブログ
- デジタル証明書のエンコードと拡張子の違い│NDW
- SSL証明書のファイル形式と作成方法まとめ | メディカルフィールズ社員ブログ