SSL/TLS関連の用語まとめ | 若手エンジニアのブログ

若手エンジニアのブログ

文系出身の若手女子エンジニアによる技術ブログ。
日々の経験や学びをアウトプットするためにブログを書いています。
バックエンド(Java+SpringFramework)を経てインフラエンジニアになりました。
今は育休中につき、本で勉強したことを中心にアウトプットしています。

仕事でSSL/TLS通信のために証明書を用意していて、

細かな用語などがごちゃごちゃしてきた…、ので、まとめてみます。

※用語解説中心なので、全体的な仕組みを知りたい方は他をあたってください(*_*)

 

もくじ

1.SSL/TLS通信とは

2.用語集証明書=公開鍵 / 秘密鍵 / CSR / 中間CA証明書 / ルート証明書 / オレオレ証明書(自己署名証明書) / OpenSSL / pemファイル

3.おわりに

参考記事

 

1.SSL/TLS通信とは

通信を暗号化するための仕組み。
昔はSSL/TLSで暗号化を行うには通信負荷がかかっていたため、クレジットカードの値入力など、入力フォームのページでのみ使われていた。
現在は、通信技術の発達による負荷軽減が可能になったことや、通信全体を保護しようという風潮から、
どのようなページであってもSSL/TLSによる暗号化が行われるのが主流となっている。

 

2.SSL/TLS通信で出てくる用語たち

■証明書=公開鍵

「サーバ証明書」、もしくは単に「証明書」とも呼ばれる。
「間違いなくこのサーバはAmebaのサーバですよ」といったことを証明するほか、
この証明書自体が、サーバの公開鍵となる。

 

ファイルの中身は「—–BEGIN CERTIFICATE —–」から始まる。

ファイルの拡張子は、「*.crt」、「*.cert」、「*.ca」など。

 

■秘密鍵

サーバの秘密鍵。

上記の証明書(公開鍵)とペアになる鍵で、機密情報として外部に漏らしたらあかんやつ。

 

ファイルの中身は「—–BEGIN PRIVATE KEY—–」から始まる。

ファイルの拡張子は、「*.key」など。

 

■CSR

Certificates Signing Request/証明書署名要求


簡単にいうと、サーバ証明書(公開鍵)の効力を発揮させるための準備書類。

公開鍵情報や、所有者名などが記載されているファイル。
 

ファイルの中身は「—–BEGIN CERTIFICATE REQUEST—–」から始まるが、

以降の内容は、見た目では暗号のようにしか見えない。。
 

ファイルの拡張子: 「*.csr」など。

 

 

■中間CA証明書

各サーバ証明書(公開鍵)の正当性を証明してくれる、認証局(CA)の署名が、

正当な署名であることを証明するための証明書。

 

 

前提として、正式なサーバ証明書は、「このサーバは信頼できますよ」というのを、信頼できる第三者に保証してもらうことが必要となる。

例えていうなら、ある人が「俺はハーバード大卒だ」と言っても、嘘かもしれないのに対し、

「たしかにこの人はハーバードを卒業しましたよ」と、ハーバード大学の教授のお墨付きまでもらえれば、信頼できるようなイメージ。

 

 

サーバ証明書も同じで、第三者=認証局にお墨付きをもらうことで、信頼感を保とうという仕組みになっている。

 

…で、ここで1つ問題が。

第三者である、ハーバード大の教授や、認証局が、そもそもニセモノな可能性もある。

そこで、第三者の言っていることが、そもそも信頼できますよという仕組みが必要となる。

 

つまり、ハーバード大学そのものから、当該教授が「たしかにこの人は我が大学の教授だ」と保証されれば、教授を名乗る人のことを信頼できるというわけである。

 

 

証明書と認証局の関係も同様で、

認証局を名乗る機関を、別の認証局(知名度が高く明らかに信頼できる認証局)が保証する仕組みが存在している。

信頼された認証局によって保証されているからこそ、最終的にサーバ証明書の信頼性も保証されるという、信頼のチェーン(連鎖)という考え方である。

 

 

前提が長くなったが、「中間CA証明書」というのは、

明らかに信頼できる認証局(青)が、サーバ証明書を保証する認証局(緑)の、正当性を保証してくれるものである。

 

 

■ルート証明書

各認証局の正当性を証明してくれる機関=ルート認証局(CA)が、自らの正当性を証明するための証明書。

 

通常の認証局は、前述の「中間CA証明書」でも説明した通り、

明らかに信頼できる認証局から、身元を保証してもらう必要がある。

 

では「明らかに信頼できる認証局」は、どこから身元を保証してもらうのかというと、自分自身で証明できるようになっている。

明らかに信頼できるからこそ、自分で自分を証明してOK、という考え方なのである。

 

 

ルート証明書とは、明らかに信頼されている認証局が、自分で自分を証明した証明書である。

 

 

■オレオレ証明書

 

サーバが自分で自分を証明した証明書。

正式名称は「自己署名証明書」という。

 

しつこくハーバード大の例を出すとこんなイメージ。

 

サーバで言うとこんな感じ。

 

 

「オレだよ、オレ!」というオレオレ詐欺証明の呼び名の通り、何の保証にもなっていない…(-_-;)

 

ではどこで使われるのかというと、

 ・企業内部でアプリケーションを作るためのテストをする「検証環境」のサーバの証明

 ・自社内ネットワーク内のみで利用されるサービスのサーバ証明

などが考えられる。

 

オレオレ証明であれば、認証局に認証してもらうためのお金がかからないこともあり、

企業であっても、場合に応じて使われることがあるらしい。

 

その他、個人の運営サイトでオレオレ証明が使われていることもあるかも。

 

私も、検証環境内で証明書を入れた際の挙動確認のために、オレオレ証明したことはあるが、

企業の公式ページとして公表するものや、お客様への納品物など、

信頼されるべきサイトではまず使ってはいけないものである。

 

※オレオレ証明の作り方はググってください。

 

■OpenSSL

SSL/TLSの機能を実装した、オープンソースのライブラリ。

以下コマンドでパッケージをインストールすれば使える。(@Linux)

 yum -y install openssl

 

適切にインストールされているかは、バージョン確認コマンドで行える。

  openssl version

 

※コマンドの使い方は他サイト様を見てください。

 

■pemファイル

証明書や秘密鍵の情報を、複数まとめて記述しておけるファイル。

情報をそのままの形ではなく、BASE64(文字データの変換形式の1つ)によって形式変換(エンコード)して記述される。

 

Windowsで作った証明書や鍵の情報を、Linuxではそのまま利用できないため、

pemファイルに変換して利用する、といった使い方がなされる(らしい)。

 

 

3.おわりに

~関連記事のご紹介~

公開鍵基盤を利用した技術として、以前PGP鍵の記事も書いたので、よろしければご覧ください。

 

 

 

参考サイト

https://ssl.sakura.ad.jp/column/ssl/

https://www.ssl-concier.com/news/topics/164

https://qiita.com/kunichiko/items/12cbccaadcbf41c72735

https://www.itra.co.jp/webmedia/points_of_ssl_ca_certification.html