ようこそ!逆襲のニートブログへ

ブログ内検索

最近の記事

はてなブックマーク数

この日記のはてなブックマーク数

カテゴリー

月別アーカイブ

SSL証明書の自作

Webサイト(Nginx)にSSLを導入したい。
だけど、有料のSSL証明書は高いので、とりあえずオレオレ証明書(自作のSSL証明書)を使いたい。
どうすればいいのか?やり方を調べてみた。

参考サイトのメモ。

(参考)nginx ssl 自作 - Google 検索

・SSL証明書の作り方
apache のかわりにnginxを使ってみる(12) nginx でSSLを使ってみた | レンタルサーバー・自宅サーバー設定・構築のヒント

・SSL証明書の作り方
nginx で ssl 設定をする | dogmap.jp

・nginxで中間CA証明書を使用する方法
ウノウラボ by Zynga Japan: Tips for nginx

・NginxのSSL設定方法
HTTPS サーバの設定 - nginx.org




Nginxとは離れて、一般的なオレオレ証明書の作り方を調べてみる。

(参考)ssl 証明書 自作 - Google 検索

・結構詳しいSSL証明書の作り方
SSL用証明書の作成(Linux編)

・割と簡潔なSSL証明書の作り方
OpenSSLで自己認証局と証明書の作成 - bnote




SSLの仕組みを理解した上で、SSL証明書の導入作業を行いたい。
=何をやっているのか、分からない状態だとトラブルがあったときに、問題解決に当たれない。

ん~、もうちょっと図解入りの説明があったらいいなー(・∀・)

「ssl 仕組み 図」「ssl シーケンス 図」等のキーワードでGoogle検索すると、図解がヒットした。

鍵交換の実例 | インターネットの安全を実現する鍵交換技術 | 信頼のシステム開発.COM

HTTPS(SSL/TLS)では、公開鍵暗号を用いて安全に鍵交換を行います。
また、成り済ましを防ぐために、PKIを用いて相手認証を行います。
Webブラウザから、HTTPSサーバにアクセスすると、まず、サーバ証明書を取得します。
クライアント(Webブラウザ)側で、サーバ証明書の信頼性を確認すると、乱数を生成し、サーバ証明書の公開鍵で暗号化してサーバに送ります。
サーバ側では、送られてきた乱数をもとに、セッション用の共通鍵を生成します。
クライアント側でも同じ共通鍵を生成します。
以後、共通鍵暗号を用いてセッションのデータを暗号化して通信を行うことができるようになります。


HTTPS over SSL/TLSのシーケンス

図解で学ぶネットワークの基礎:SSL編 - 図解で学ぶネットワークの基礎:SSL編:ITpro
これはいいかも。分かりやすそう。

図解で学ぶネットワークの基礎:SSL編 - Lesson3:実際の通信はどうなってる?やりとりの詳細を見てみよう:ITpro
SSLのメッセージ構成とやりとりの内容

SSL等の暗号通信って、基本的に、
(1) 最初は、公開鍵暗号で、やりとりする。=共通鍵を交換する段階。
(2) 次に、共通鍵暗号で、やりとりする。
という2段階構成になってます。

で、SSLの場合、(1)の公開鍵を配布する方法が、認証局(CA)が発行するサーバー証明書なんですね。

図解で学ぶネットワークの基礎:SSL編 - Lesson4:相手が信頼できることを確かめる「サーバー証明書」とは...:ITpro
「サーバー証明書」と「署名」とは?
オレオレ証明書の場合、認証局の役割も自分でやることになるんだなー。
だから、いろいろな鍵ファイルを作成する段階が必要になっていると。

認証局 - Wikipedia

暗号において、公開鍵証明書認証局または認証局 (CA、Certificate Authority、Certification Authority) は、他の当事者にデジタル 公開鍵証明書 を発行する実体である。これは、信頼された第三者 の例である。
サービスに課金する商用CAは多い。政府などではCAを独自に立てていることがあり、またそれ以外に無料のCAもある。



認証局とは【CA】 - 意味/解説/説明/定義 : IT用語辞典

電子商取引事業者などに、暗号通信などで必要となるデジタル証明書を発行する機関。

認証局にはルート認証局(root CA)と中間認証局(intermediate CA)がある。ルート認証局は上位の認証局による認証を受けず、自分の正当性を自ら証明する。他の認証局に対してデジタル証明書を発行し、認証局に対する信頼の拠り所となる。ルート証明書の信頼性は、厳しい監査を受けることや、認証業務運用規程(CPS)を公開すること、運用実績や知名度など、デジタル証明書以外の方法で示される。ルート認証局以外の認証局が中間認証局で、ルート認証局など上位の認証局からデジタル証明書を発行してもらうことで、自らの正当性を証明する。

通常、Webブラウザなどデジタル証明書を利用するソフトウェアには、ソフトウェアの発行元やユーザが信頼できるルート認証局の証明書が同梱されている。Webサイトなどに接続した時に、相手の提示した証明書が信用できるかどうかは、発行元の認証局を調べ、さらにその認証局を認証している上位局を調べ…といった具合に辿っていき、最終的に自分の手元にあるルート証明書に一致するルート認証局にたどり着けば、信用できると確認できる。

なお、商用認証局から証明書の交付を受けるには費用がかかるため、Webサイトなどの中には、自らがルート認証局となって証明書を発行し、暗号化通信などを利用するサイトもある。そのようなサイトの場合、あらかじめ同梱されたルート認証局の認証は受けていないことになるため、Webブラウザなどがその旨警告するようになっている。



オレオレ証明書の場合は、Webブラウザで「大丈夫なのか?」という警告メッセージが出るんだよね。
まあ、しゃーないわな。
そこは、ユーザーに対する説明文を掲載して、注意を促すことでOKとしよう。




OpenSSLでの作業手順を分かりやすく解説したWebサイトがあった。

CentOSの自己認証局で証明書を発行する方法 « infoScoop Developer's Blog
証明書作成のためにやることは主に3つです。

いろいろなファイルの相関関係が分からなかったんだよね!
この図を見てスッキリ!!!

(1) 自己認証局の秘密鍵 → cakey.pem
(2) 自己認証局の証明書 → cacert.pem
(3) Webサーバーの秘密鍵 → key.pem
(4) Webサーバーの署名要求証明書(CSR) → csr.pem
(5) 認証局が発行するWebサーバーの証明書 → cert.pem

必要なファイルが5個もあるので、ややこしい!!!(・∀・)
SSLの設定を行うとき、自分が何の作業をやっているのか、理解しながら進めたいですねー。

●CSRとは?
CSRとは【Certificate Signing Request】(証明書署名要求) - 意味/解説/説明/定義 : IT用語辞典

デジタル証明書の発行を認証局に請求するメッセージのこと。申
請者の識別情報や公開鍵などから成り、秘密鍵で電子署名されて認証局に送信される。
CSRを受け取った認証局が証明書の発行を認めると、デジタル証明書を認証局の秘密鍵で署名して申請者に送信する。
CSRの書式はRFC 2986(PKCS #10)で定められているものが広く利用されており、これをBASE64で符号化したテキストデータを用いることが多い。



証明書署名要求 - Wikipedia

公開鍵基盤のシステムにおいて、証明書署名要求 (英: CSR, certificate signing request または certification request) とは公開鍵証明書を申し込むために申請者から認証局へ送られるメッセージのことである。
CSRを作成する前に、申請者はまず公開鍵と秘密鍵のペアを生成し、秘密鍵を秘匿する。
CSRには (X.509証明書の場合はディレクトリ名などの) 申請者を識別する情報と、申請者によって選択された公開鍵が含まれる。
対応する秘密鍵はCSRに含まれないが、要求全体の電子署名に使われる。
CSRは認証局によって要求される他の資格証明や身元証明を伴うことがあり、認証局は追加情報を得るために申請者へ連絡を取ることがある。
要求が成功すると、認証局は公開鍵証明書を送り返す。
この証明書は認証局の秘密鍵で電子署名されている。




●SSL設定作業の具体的な操作内容

OpenSSLでの自己認証局(CA)や証明書などの作成方法
↑OpenSSLで上記(1)~(5)を実際に作る作業手順は、この辺りの説明を参考にすればいいかな?

SSL署名要求書及び自己認証局作成 with Nginx | youria blog
↑Nginxで使う前提で説明してあるので、一番自分の知りたい情報に近いかな?
「参考にしたサイト」のリストも、ありがたい情報だ。

[OpenSSL] プライベート認証局(CA)を構築して証明書の発行を行なう - Life with IT
↑生成されるファイル群について、詳細に説明してあった。

これだけ参考情報があれば、そろそろSSLの設定作業の方針が立つかな?
関連記事

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURL:
http://gooddays1.blog37.fc2.com/tb.php/907-681e24a4

FC2Ad