SSLサーバ証明書
役割
SSLの接続要求時に認証情報・公開鍵情報等をひとつにまとめて、クライアントへ渡す クライアントは、受け取ったSSLサーバ証明書から、接続相手の情報を確認して通信を行う
発行元
- 信頼された認証局が発行
- 信頼されていない認証局が発行(自己証明書(オレオレ))
中身
- 公開鍵の情報
- コモンネーム
- 公開鍵の所有者情報
- 所有者を証明した認証局の情報
- 証明書の有効期限
- 証明書のシリアル番号
- 証明書の失効リスト参照先
Apache SSL 設定
<前提>
Windows Server 2012
Apache 2.4
秘密鍵(server.key)の生成
$ cd ~/Apache24/bin
$ openssl.exe genrsa -out ..\conf\server.key 1024
公開鍵(server.csr)の生成
$ openssl.exe req -new -key ..\conf\server.key -out ..\conf\server.csr -config ..\conf\openssl.cnf
- Country Name (2 letter code) [AU]:JP // C:Country Name(国コード)
- State or Province Name (full name) [Some-State]:TOKYO // S:State or Province Name(都道府県)
- Locality Name (eg, city) []:KANDA // L:Locality Name(市区町村)
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:NESCO // O:Organization Name(組織)
- Organizational Unit Name (eg, section) []:NESCO // OU:Organizational Unit Name(部門)
- Common Name (e.g. server FQDN or YOUR name) []:support.nesco // CN:Common Name(SSLを使うIPアドレスまたはサイト名)
- Email Address []: // Email Address(メールアドレス)
- A challenge password []: // A challenge password(証明書を破棄する場合のパスワード)
- An optional company name []: // An optional company name(別の組織名)
デジタル証明書の生成(署名)
ルート証明書のハッシュ値を秘密鍵で暗号化する
$ openssl.exe x509 -in ..\conf\server.csr -out ..\conf\server.crt -req -signkey ..\conf\server.key -days 365
中間証明書について
公開鍵と秘密鍵
- 公開鍵と暗号化すると、秘密鍵でしか複合できない
- 秘密鍵と暗号化すると、公開鍵でしか複合できない
- クライアントが公開鍵で暗号し、サーバが秘密鍵で複合する
- 秘密鍵は、サーバで保持、公開鍵はサーバアクセス時の初回でクライアントへ配布
- サーバは送信データをハッシュ化し秘密鍵で暗号化したデジタル署名と、データを送信する クライアントはデータをハッシュ化し公開鍵で複合した結果がデータと同じかで改竄チェックを行う。
HOGE
Webアプリケーション作成時に考慮すべき3つのリスク
リスク | 対処法 |
---|---|
盗聴 | 暗号化 |
改竄 | メッセージダイジェスト |
なりすまし | 電子署名と電子証明書 |
デジタル証明書(電子証明書)
認証局(CA:Certificate Authority)が発行
(ルート証明機関、中間証明機関の両方を含む)
- SSL証明書
- IPsec認証
- RDP認証
電子署名
公開鍵基盤(PKI)
以下の仕組みのこと
1. 公開鍵と暗号化すると、秘密鍵でしか複合できない
1. 秘密鍵と暗号化すると、公開鍵でしか複合できない