Posts tagged ‘OpenSSL’

2. OpenSSLでクライアント認証「HTTPSサーバ構築編」


Translate to English / Google


前回は、Solaris 10に付属するOpenSSLで認証局を作成しました。

そこで、今回は作成した認証局でサーバ証明書を署名し、

Sun Java System Web Serverにサーバ証明書をインストールする手順までを

紹介します。





1. まず、はじめにWeb サーバ上で認証局でサーバ証明書を署名する為に

  証明書署名要求(CSR)を作成します。



Web サーバの管理画面より、構成より対象のインスタンス(ここではsw-120)を選択し、

「証明書」タブより、「サーバ証明書」タブを押下します。

すると、サーバ証明書の設定の画面で、「要求 …」ボタンがありますので、

「要求 …」ボタンを押下します。







「要求 …」ボタンを押下すると下記の画面が表示されます。ここでは使用可能なトークンを

選択する事ができます。



トークンは、例えば、Sun Crypto Accelerator 6000や、Sun Fire T2000のようなT1プロセッサ等の

H/Wのアクセラレータを使用するような場合に使用します。



このようなH/Wアクセラレータを使用する場合は、トークンを作成しますが、

このウィザードの画面では、それぞれの用途に応じたトークンを選択する事になります。

仮に、Webサーバ以外の物を使用しない場合は、デフォルトの「internal」を選択して下さい。

今回は、Webサーバの中に暗号を保存しますので、「internal」を選択します。

選択した後、「次へ」ボタンを押下してください。



補足:

WebサーバのSSLパフォーマンス

SSLの処理は暗号解析等を行うため、非常にシステムに対して負荷の掛かる作業を行っています。

そこで、SSLの処理を外部のH/Wアクセラレータ等を使用する事により、HTTPS通信における

パフォーマンスを向上させる事ができます。



また、現在RSAによる暗号化が主流ですが、将来的にはECC(楕円暗号化曲線)のアルゴリズムが主流

になる事が予想されます。



ECC(楕円曲線暗号)を使用する事によりRSAに比べ、暗号化強度を向上しても暗号化キーのサイズが

少なく済むため、ネットワーク帯域的にも、SSL処理に対する負荷も軽減できるようになります。

SJS Web Server 7.0 はこのECC もサポートしています。(RSAの場合、暗号化強度を高めるためには

キーサイズを大きくするしか方法はありませんが、ECCは、適用する曲線の選択を変更するだけです。

暗号化強度を強くしたい場合もサイズは比例して大きくなる事はありませんので、より暗号化強度が

必要な環境、もしくは大量のSSL通信が発生する環境の方がECCのメリットを実感できるようになります。)



Sun Java System Web Server 7.0 は下記をサポートしています。



Solaris 10 オペレーティングシステムを使用している場合は、カーネル SSL (KSSL) が使用できます。

SSL 用の暗号化カードハードウェアアクセラレータ(SCA 6000等)を使用してパフォーマンスを向上させることもできます。

Solaris で 64 ビットの Web Server を使用している場合は、UltraSPARC T1 プロセッサの暗号化アクセラレータを使用できます。



docs.sun.comより:SSLパフォーマンス













「次へ」ボタンを押下すると下記の画面が表示されます。ここでは、Webサーバの詳細を入力します。

ここで、注意すべき点は、組織 (o) の項目です。この部分は認証局(CA)を構築した際に、

Organization Name (eg, company)で指定した、組織名と完全一致する必要があります。

仮に異なる名前を入力した場合、認証局(CA)での署名に失敗しますので、注意して下さい。


Organization Name (eg, company) [Unconfigured OpenSSL Installation]:Sun Microsystems K.K.

</TD









次に、証明書のキーの種類を選択します。Sun Java System Web Server 7.0では、RSA,ECCを

サポートしていますので、何れかを選択して「次へ」ボタンを押下して下さい。















「次へ」ボタンを押下すると、下記の画面が表示されます。下記の画面は入力した内容を最終確認する画面です。

入力した内容に問題がない場合は、「完了」ボタンを押下して下さい。







「完了」ボタンを押下すると、下記の画面が表示されます。下記の画面はWebサーバから、認証局(CA)に対して

リクエストする「証明書署名要求(CSR)」の画面になります。ここで表示される、「BEGIN NEW CERTIFICATE REQUEST」から

「END NEW CERTIFICATE REQUEST」までの箇所をマウスで選択しコピー(Ctrl + C)して下さい。







コピーした上記の内容をファイルに保存してください。


> pwd

/.vfrCA/work/ssl/CA/server

> vi csr.pem


—–BEGIN NEW CERTIFICATE REQUEST—–
MIIB+zCCAWQCAQAwgYsxCzAJBgNVBAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzERMA8G
A1UEBxMIU2V0YWdheWExHjAcBgNVBAoTFVN1biBNaWNyb3N5c3RlbXMgSy5LLjEa
MBgGA1UECxMRU29mdHdhcmUgUHJhY3RpY2UxHTAbBgNVBAMTFHN3LTEyMC5qYXBh
bi5zdW4uY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTAgjVmg7Hqxp3
18bhJP2WvDGXu62Pm7M+igkbQPz0KYiBpSqE9ur4N5J6WrTvECcG8GSzsqoQlRCo
MB9st1KEi9wvgbAgJRYrh3nv+G/B11jocZ731CzHnMS9hbRC8xC4P+mUz1RJMqkv
djJe5HUM3sx49yOLmK+bC7mXm2f6kwIDAQABoC8wLQYJKoZIhvcNAQkOMSAwHjAc
BgNVHREEFTATggZzdy0xMjCCCXdlYnNlcnZlcjANBgkqhkiG9w0BAQUFAAOBgQC4
NnM6s5pUGXu9nRcbCFV/yiH+Es1hIqcDzyC44exBCXpSWkdfj0ezcujLI+/Poe3V
pY5+BoaUPeqIus9dYJhqu07ANU2B1mZDNys8koizRqWMpFH2Kz0XGrlNQIXWWoa2
TyTt+glQhcvzHGnrC5Xpe+3QktmRk7P2uGVi3Ir3bg==

—–END NEW CERTIFICATE REQUEST—–


>



ファイルに保存した後、上記画面の「閉じる」ボタンを押下します。ボタンを押下すると

下記の画面が表示されますので、「配備保留中」のリンクを押下して下さい。







「配備保留中」のリンクを押下すると下記の新規ウィンドウが表示されます。ここで、「配備 …」ボタンを押下

して下さい。







「配備 …」ボタンを押下すると下記の画面が表示されます。ここで「インスタンスを再起動」で「今すぐ」を

選択し、「了解 …」ボタンを押下して下さい。

以上で、Sun Java System Web Server 上に自動的に秘密鍵が生成され、「証明書署名要求(CSR)」までが

生成されました。







次に、上記で作成した証明書署名要求(CSR)を元に、認証局(CA)で実際に署名を行う方法を紹介します。

まず、既存のopenssl.confのコピーを生成し、サーバ証明書を作成する為に若干設定変更を行います。


> cp /etc/sfw/openssl/openssl.cnf /etc/sfw/openssl/openssl-server.cnf


> vi /etc/sfw/openssl/openssl-server.cnf

basicConstraints=CA:FALSE <—FALSEに変更

# This is OK for an SSL server.

nsCertType = server <———- ここをコメント会うと



さてそれでは実際に、認証局で署名を行いましょう。

-config には先ほど修正したファイルを指定します。

-in にはWebサーバで生成した証明書署名要求(CSR)を指定します。

-keyfile には認証局の秘密鍵を指定します。

-cert には認証局の証明書を指定します。

-out には署名済みのWebサーバの生成されたサーバ証明書を指定します。


> openssl ca -config /etc/sfw/openssl/openssl-server.cnf -in ./csr.pem -keyfile
/etc/sfw/openssl/private/cakey.pem -cert /etc/sfw/openssl/cacert.pem -out cert.pem



Using configuration from /etc/sfw/openssl/openssl-server.cnf
29833:error:0E06D06C:configuration file routines:NCONF_get_string:no value:
/on10/build-nd/F10U4B12b/usr/src/common/openssl/crypto/conf/conf_lib.c:329:
group=CA_default name=unique_subject
Enter pass phrase for /etc/sfw/openssl/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Mar 11 06:05:20 2008 GMT
Not After : Mar 11 06:05:20 2009 GMT
Subject:
countryName = JP
stateOrProvinceName = Tokyo
organizationName = Sun Microsystems K.K.
organizationalUnitName = Software Practice
commonName = sw-120.japan.sun.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Server
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
3C:08:1D:CA:8C:90:54:DB:F3:39:4F:E8:15:C3:90:4C:94:40:1C:D0
X509v3 Authority Key Identifier:
keyid:36:1F:D0:6B:95:99:BC:CB:FE:D9:C5:E6:F0:27:6B:36:96:89:E5:B0
DirName:/C=JP/ST=Tokyo/L=Setagaya/O=Sun Microsystems K.K./OU=Software
Practice/CN=Hanako Yamada/emailAddress=Hanako.Yamada@foo.bar.jp
serial:00
Certificate is to be certified until Mar 11 06:05:20 2009 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated



ここで生成されたWeb サーバの証明書の中身を確認してみましょう。


> cat cert.pem


Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=JP, ST=Tokyo, L=Setagaya, O=Sun Microsystems K.K., OU=Software
Practice, CN=Hanako Yamada/emailAddress=Hanako.Yamada@foo.bar.jp
Validity
Not Before: Mar 11 06:05:20 2008 GMT
Not After : Mar 11 06:05:20 2009 GMT
Subject: C=JP, ST=Tokyo, O=Sun Microsystems K.K., OU=Software Practice,
CN=sw-120.japan.sun.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:d3:02:08:d5:9a:0e:c7:ab:1a:77:d7:c6:e1:24:
fd:96:bc:31:97:bb:ad:8f:9b:b3:3e:8a:09:1b:40:
fc:f4:29:88:81:a5:2a:84:f6:ea:f8:37:92:7a:5a:
b4:ef:10:27:06:f0:64:b3:b2:aa:10:95:10:a8:30:
1f:6c:b7:52:84:8b:dc:2f:81:b0:20:25:16:2b:87:
79:ef:f8:6f:c1:d7:58:e8:71:9e:f7:d4:2c:c7:9c:
c4:bd:85:b4:42:f3:10:b8:3f:e9:94:cf:54:49:32:
a9:2f:76:32:5e:e4:75:0c:de:cc:78:f7:23:8b:98:
af:9b:0b:b9:97:9b:67:fa:93
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Server
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
3C:08:1D:CA:8C:90:54:DB:F3:39:4F:E8:15:C3:90:4C:94:40:1C:D0
X509v3 Authority Key Identifier:
keyid:36:1F:D0:6B:95:99:BC:CB:FE:D9:C5:E6:F0:27:6B:36:96:89:E5:B0
DirName:/C=JP/ST=Tokyo/L=Setagaya/O=Sun Microsystems K.K./OU=Software
Practice/CN=Hanako Yamada/emailAddress=Hanako.Yamada@foo.bar.jp
serial:00
Signature Algorithm: md5WithRSAEncryption
89:19:7f:25:55:3b:00:23:33:42:95:67:be:13:22:16:ba:46:
c1:a4:d0:73:df:96:47:c8:2c:63:a9:50:7c:02:30:32:69:39:
1f:1f:c6:fc:5e:4d:e2:28:7b:a5:ba:ba:43:67:c0:72:6a:58:
f6:87:c4:02:5e:48:4d:a8:2b:79:1e:1a:14:03:aa:0e:62:7c:
9d:2e:d6:1f:15:d6:bd:75:59:d0:41:05:8d:a6:0c:24:11:b4:
c2:87:e0:87:ca:d8:ca:b4:5d:d5:87:b0:97:83:25:da:46:0c:
32:17:0d:30:9d:55:62:19:fe:9f:96:1f:d8:99:57:6d:4d:31:
55:05
—–BEGIN CERTIFICATE—–
MIID6jCCA1OgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBrTELMAkGA1UEBhMCSlAx
DjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTZXRhZ2F5YTEeMBwGA1UEChMVU3Vu
IE1pY3Jvc3lzdGVtcyBLLksuMRowGAYDVQQLExFTb2Z0d2FyZSBQcmFjdGljZTEW
MBQGA1UEAxMNSGFuYWtvIFlhbWFkYTEnMCUGCSqGSIb3DQEJARYYSGFuYWtvLllh
bWFkYUBmb28uYmFyLmpwMB4XDTA4MDMxMTA2MDUyMFoXDTA5MDMxMTA2MDUyMFow
eDELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMR4wHAYDVQQKExVTdW4gTWlj
cm9zeXN0ZW1zIEsuSy4xGjAYBgNVBAsTEVNvZnR3YXJlIFByYWN0aWNlMR0wGwYD
VQQDExRzdy0xMjAuamFwYW4uc3VuLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
gYkCgYEA0wII1ZoOx6sad9fG4ST9lrwxl7utj5uzPooJG0D89CmIgaUqhPbq+DeS
elq07xAnBvBks7KqEJUQqDAfbLdShIvcL4GwICUWK4d57/hvwddY6HGe99Qsx5zE
vYW0QvMQuD/plM9USTKpL3YyXuR1DN7MePcji5ivmwu5l5tn+pMCAwEAAaOCAUww
ggFIMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZAMCwGCWCGSAGG+EIBDQQf
Fh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUPAgdyoyQ
VNvzOU/oFcOQTJRAHNAwgdoGA1UdIwSB0jCBz4AUNh/Qa5WZvMv+2cXm8CdrNpaJ
5bChgbOkgbAwga0xCzAJBgNVBAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzERMA8GA1UE
BxMIU2V0YWdheWExHjAcBgNVBAoTFVN1biBNaWNyb3N5c3RlbXMgSy5LLjEaMBgG
A1UECxMRU29mdHdhcmUgUHJhY3RpY2UxFjAUBgNVBAMTDUhhbmFrbyBZYW1hZGEx
JzAlBgkqhkiG9w0BCQEWGEhhbmFrby5ZYW1hZGFAZm9vLmJhci5qcIIBADANBgkq
hkiG9w0BAQQFAAOBgQCJGX8lVTsAIzNClWe+EyIWukbBpNBz35ZHyCxjqVB8AjAy
aTkfH8b8Xk3iKHulurpDZ8Byalj2h8QCXkhNqCt5HhoUA6oOYnydLtYfFda9dVnQ
QQWNpgwkEbTCh+CHytjKtF3Vh7CXgyXaRgwyFw0wnVViGf6flh/YmVdtTTFVBQ==
—–END CERTIFICATE—–

>



以上で、認証局(CA)による署名済みのサーバ証明書が生成されました。

署名済みのサーバ証明書が生成されましたので、ここで生成された証明書を

Web サーバにインストールしましょう。

Web サーバの管理画面より、「構成」→「対象の構成(sw-120)」を選択し、「証明書」タブを

選択後、「サーバ証明書」を選択して下さい。

「サーバ証明書」タブを選択すると「インストール …」ボタンが表示されますので、ボタンを

押下します。





「インストール …」ボタンを押下すると下記の画面が表示されます。ここでトークンを選択し、

「次へ」ボタンを押下して下さい。







「次へ」ボタンを押下すると下記の画面が表示されます。下記の画面では、署名済みの証明書から、

「BEGIN CERTIFICATE」から「END CERTIFICATE」までを画面内にコピー&ペーストして貼付けます。

コピー&ペーストした後「次へ」ボタンを押下して下さい。







「次へ」ボタンを押下すると下記の画面が表示されます。ここでは、Web サーバに保存する証明書の

ニックネームを入力します。

分かり易いニックネームを入力して、「次へ」ボタンを押下して下さい。







「次へ」ボタンを押下すると下記の画面を表示されます。ここではインストールする証明書の内容を

確認する画面になります。

問題がない場合は、「完了」ボタンを押下してください。







「完了」ボタンを押下すると下記の画面が表示されます。「Installation of Certificate successful」が

表示されれば、正常に認証局(CA)で署名されたサーバ証明書がインストールされています。









「完了」ボタンを押下すると、下記の画面が表示されます。ここで、「配備保留中」のリンクを押下して下さい。







「配備保留中」のリンクを押下すると下記の新規ウィンドウが表示されます。ここで、「配備」ボタンを

押下して下さい。







「配備」ボタンを押下した後、下記の画面が表示されますので、「了解」ボタンを押下し、

インスタンスを再起動して下さい。





「了解」ボタンを押下して下さい。ボタンを押下すると下記の画面が表示されます。







「閉じる」ボタンを押下すると、画面に下記のように表示されます。サーバ証明書が正常にインストール

されているか画面より確認して下さい。





上記までで、Web サーバのサーバ証明書のインストールが完了しました。しかしこの状態ではまだ、HTTPSの

通信ができません。そこで、HTTPSの通信ができるようにHTTPリスナーの設定を変更してみましょう。

「構成」→「対象の構成(sw-120)」を選択した後、「HTTPリスナー」タブを選択して下さい。

インスタンス中に存在する、HTTPのリスナー(http-listener-1)を選択して下さい。







HTTP リスナーを選択すると下記の画面が表示されます。ここで、「SSL」のタブを選択して下さい。



補足:

サーバ証明書の署名要求で設定した「サーバ名(cn)」と同一のサーバ名が下記で設定されていることを

確認して下さい。仮に署名要求で設定したサーバ名と、HTTPリスナー内のサーバ名が異なる場合は、

正常なサーバと認識されない為、サーバ名には御注意ください。

また、HTTPSのデフォルトのポート番号は443になります。443以外のポート番号が指定されている場合、

(デフォルトでは80等)はHTTPSの通信ができるように443に変更して「適用」ボタンを押下して先の手順に

進んでください。







「SSL」のタブを押下すると下記の画面に切り替わります。ここで、「SSL」のチェックボックスにチェックを付け

「適用」ボタンを押下して下さい。







「適用」ボタンを押下すると下記の画面が表示されます。「配備保留中」のリンクを押下して下さい。







「配備保留中」リンクを押下すると、下記の新規ウィンドウが表示されます。ここで、「配備」ボタンを

押下して下さい。







「配備」ボタンを押下すると下記の画面が表示されます。「インスタンスを再起動 今すぐ」にチェックを付け

「了解」ボタンを押下して下さい。







「了解」ボタンを押下した後、下記の画面が表示されます。「閉じる」ボタンを押下し、

完了して下さい。







次に、認証局(CA)の証明書をWeb サーバにインストールします。管理画面から「構成」→

「対象の構成(sw-120)」→「証明書」タブより「認証局」タブを押下して下さい。

すると下記の画面が表示されます。ここで「インストールボタン」を押下し認証局(CA)の証明書を

インストールする事ができます。



Pasted Graphic.tiff



「インストール」ボタンを押下すると下記の画面が表示されます。トークンを選択し、「次へ」ボタンを

押下して下さい。







「次へ」ボタンを押下すると下記の画面が表示されます。この画面で認証局(CA)の証明書を貼付けます。

証明書を貼付けた後「次へ」ボタンを押下してください。







認証局(CA)の証明書の入手先ですが、OpenSSLのディレクトリ配下にcacert.pemというファイルがありますので、

こちらの「BEGIN CERTIFICATE」から「END CERTIFICATE」までをコピー&ペースとしてご利用ください。


> less /etc/sfw/openssl/cacert.pem <–このファイルの内容を表示


—–BEGIN CERTIFICATE—–
MIID4jCCA0ugAwIBAgIBADANBgkqhkiG9w0BAQQFADCBrTELMAkGA1UEBhMCSlAx
DjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTZXRhZ2F5YTEeMBwGA1UEChMVU3Vu
IE1pY3Jvc3lzdGVtcyBLLksuMRowGAYDVQQLExFTb2Z0d2FyZSBQcmFjdGljZTEW
MBQGA1UEAxMNSGFuYWtvIFlhbWFkYTEnMCUGCSqGSIb3DQEJARYYSGFuYWtvLllh
bWFkYUBmb28uYmFyLmpwMB4XDTA4MDMxMTA1MzgxM1oXDTA5MDMxMTA1MzgxM1ow
ga0xCzAJBgNVBAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzERMA8GA1UEBxMIU2V0YWdh
eWExHjAcBgNVBAoTFVN1biBNaWNyb3N5c3RlbXMgSy5LLjEaMBgGA1UECxMRU29m
dHdhcmUgUHJhY3RpY2UxFjAUBgNVBAMTDUhhbmFrbyBZYW1hZGExJzAlBgkqhkiG
9w0BCQEWGEhhbmFrby5ZYW1hZGFAZm9vLmJhci5qcDCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEAwrSQg6m9CizA7xXjS3yVAgUNklxKuM9uKT8foOby72RmTfvR
Uoi3dwUI00JxQDvBvmZPElOcL1qk6H7HEMCAffAJkPvvyBCTFNKH0GgIvCaSyQX1
tmx7IVpeae+jwKVRhwUwsz8X+njXdF9rhtwIPTq8QRj+G4BOtWVKPLet/PUCAwEA
AaOCAQ4wggEKMB0GA1UdDgQWBBQ2H9BrlZm8y/7ZxebwJ2s2lonlsDCB2gYDVR0j
BIHSMIHPgBQ2H9BrlZm8y/7ZxebwJ2s2lonlsKGBs6SBsDCBrTELMAkGA1UEBhMC
SlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTZXRhZ2F5YTEeMBwGA1UEChMV
U3VuIE1pY3Jvc3lzdGVtcyBLLksuMRowGAYDVQQLExFTb2Z0d2FyZSBQcmFjdGlj
ZTEWMBQGA1UEAxMNSGFuYWtvIFlhbWFkYTEnMCUGCSqGSIb3DQEJARYYSGFuYWtv
LllhbWFkYUBmb28uYmFyLmpwggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEE
BQADgYEAjo9baqRceGPaZkKWm8eFSooa/b5cinz3v7qKxZKmKhsjZhyFne7BXCqY
umtzgycAgXkKzLyeyL/RulXtde1oubCIfAlzEhD3hp1MBbJ4/Pw7I6ixyf1kkrf7
+aJ3/KQBZrclXK1aGyjnQKOQE2XHGewUf+Ouk6v7B+TrERivZF0=
—–END CERTIFICATE—–



「次へ」ボタンを押下すると下記の画面が表示されます。ここでは認証局(CA)の証明書をインストールしていますので、

「CA 証明書」のラジオボタンにチェックを付け「次へ」ボタンを押下します。







「次へ」ボタンを押下すると下記の画面が表示されます。ここではインストールする認証局(CA)の証明書の確認を

行います。サブジェクトや発行者に記載されている内容を確認し「完了」ボタンを押下して下さい。







「完了」ボタンを押下すると下記の画面が表示されます。「閉じる」ボタンを押下しインストールウィザードを終了して下さい。







下記の画面では認証局(CA)の証明書が正しくインストールされているかを確認しています。インストールした認証局(CA)の

証明書は一覧の最後のエントリに記載されてますので、確認を行う際にはページを移動して確認を行ってください。







確認が終わった後、「配備保留中」のリンクを押下して下さい。







「配備」を行った後、インスタンスを再起動する必要がありますので、画面の内容に従い

インスタンスを再起動して下さい。









以上で、Web サーバに対するサーバ証明書のインストール作業は全て完了です。

この状態で、信頼されたHTTPS通信が可能なWeb サーバの構築が完了です。





次は、クライアントのブラウザからHTTPSの通信ができるかを確認してみましょう。

実際にクライアントのブラウザからアクセスする前に、ブラウザで1点だけ準備する事があります。

それは、認証局(CA)の証明書をブラウザにインストールしなければならない点です。


現在、Web サーバは自前のOpenSSLで構築した認証局(CA)で署名されたサーバ証明書を利用してHTTPSの
通信ができるように設定が完了していますが、クライアントのブラウザは自前で構築したOpenSSLの認証局(CA)
を信頼する設定にはなっておりません。そこで、OpenSSLの認証局(CA)で署名された全ての証明書を信頼する為に
クライアントのブラウザに対しても認証局(CA)の証明書をインストールする必要があります。
以下に、ブラウザに認証局(CA)の証明書のインストール手順を記載します。
ちなみに、下記はFirefoxを例にして記述しています。
Firefoxのメニューより、「環境設定」を選択して下さい。すると下記のような新規ウィンドウが表示されます。
この中で、「詳細」→「暗号化」タブを選択し、「証明書を表示」ボタンを押下して下さい。







「証明書を表示」ボタンを押下すると下記のような画面が表示されます。この中で「認証局証明書」タブを

選択し「インポート」ボタンを押下して下さい。







「インポート」ボタンを押下するとファイルダイアログが表示されますので、事前に認証局(CA)より

FTP等で入手しておいたcacert.pemを指定して「開く」ボタンを押下します。







ボタンを押下すると下記の画面が表示されますので、全てのチェックボックスにチェックを付け

「OK」ボタンを押下して認証局(CA)のインストールを完了します。







認証局(CA)の証明書が正しくインストールされているかを確認してみましょう。

下記のように、証明書名と発行者名中に独自で作成した証明書が表示されていれば問題ありません。

念のため、証明書を確認してみましょう。対象の署名書を選択し「表示」ボタンを押下してください。







「表示」ボタンを押下すると下記の画面が表示されます。この認証局(CA)の証明書では、

認証局で署名された、クライアント証明書やサーバ証明書、メール署名者の証明書、メール受信者の

証明書等を信頼できるようになっています。







以上で、クライアントであるブラウザ側の準備も完了しました。

それでは、実際にブラウザからWebサーバにHTTPSで通信を行ってみましょう。

警告画面等が表示されずに正常にHTTPSの通信ができたでしょうか?

ブラウザの鍵の絵の部分をダブルクリックすると「ページ情報」を表示する画面が表示されます。

内容を確認すると、このサイトへの接続は検証されており、信頼していますというメッセージが

表示されているかと思います。









以上で、OpenSSLを使用したセキュアなWebサーバの構築が完了です。

次回は、いよいよクライアント認証の設定方法について紹介します。





すいません、体裁が悪くて、これから外出で直前でアップしましたので、

体裁は後で綺麗にしなおします。


2008年3月13日 at 10:10 PM

1. OpenSSLでクライアント認証「認証局(CA)構築編」


Translate to English by Google




さて今日から数回の連載で、Sun Java System Web Server 7.0の

リバースプロキシの機能、もしくはSun Java System

Application Server 9.1 with HADBに付属するロードバランサプラグイン

をSun Java System Web Server 7.0にインストールして、

前段(DMZ)にWeb Serverを置いて、Web Serverでクライアント認証を

行わさせた後に、後段のApplication Serverの提供するサービスを

利用できるようにする方法について紹介していきたいと思います。


今回、構成するネットワーク構成としては下記のイメージになります。





まず、はじめにクライアント認証を行うために、証明書を認証局(CA)で署名しますが、

今回は、Solaris 10に付属するOpenSSLを使用して、自前で認証局を構築し、

その後で、Web Serverのサーバ証明書やクライアント証明書を作成

していく方法を紹介していきます。


まず、はじめに、Solaris 10に付属するOpenSSLを使用して、

認証局を構築する方法から紹介して行きたいと思います。


Solaris 10には既にOpenSSLのコマンドやライブラリがインストール

されています。(/usr/sfw/bin/openssl)

また、各種設定ファイルは/etc/sfw/openssl配下に存在しています。


まずは、認証局(CA)を構築する為に下記のファイルを修正して下さい。



OpenSSLの設定ファイルの編集

> vi /etc/sfw/openssl/openssl.cnf

basicConstraints=CA:TRUE <—FALSEから変更



次に、実際に認証局を構築します。


OpenSSLで認証局(CA)の構築

> /usr/sfw/bin/CA.pl -newca

CA certificate filename (or enter to create)


Making CA certificate …

Generating a 1024 bit RSA private key

…………++++++

………….++++++

writing new private key to ‘./demoCA/private/cakey.pem’

Enter PEM pass phrase: [********]

Verifying – Enter PEM pass phrase:[********]

—–

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.

—–

Country Name (2 letter code) [US]:JP

State or Province Name (full name) [Some-State]:Tokyo

Locality Name (eg, city) []:Setagaya

Organization Name (eg, company) [Unconfigured OpenSSL Installation]:Sun Microsystems K.K.

Organizational Unit Name (eg, section) []:Software Practice

Common Name (eg, YOUR name) []:Hanako Yamada

Email Address []:Hanako.Yamada@foo.bar.jp

コマンドを実行するとコマンドを実行したカレントディレクトリに「demoCA」と

呼ばれるディレクトリが生成されます。


> ls

demoCA

> cd demoCA/

> ls

cacert.pem certs crl index.txt newcerts private serial

> cp -R * /etc/sfw/openssl/

ここで、認証局を構築した際に、自動的に生成される認証局の証明書の中身を

確認してみましょう。

また、上記のように生成されたファイルは全て「/etc/sfw/openssl」ディレクトリ配下に

コピーしておいてください。


認証局(CA)の証明書の内容の確認

> openssl x509 -in /etc/sfw/openssl/cacert.pem -text


Certificate:
Data:
Version: 3 (0x2)
Serial Number: 0 (0x0)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=JP, ST=Tokyo, L=Setagaya, O=Sun Microsystems K.K., OU
=Software Practice, CN=Hanako Yamada/emailAddress=Hanako.Yamada@
foo.bar.jp
Validity
Not Before: Mar 11 05:38:13 2008 GMT
Not After : Mar 11 05:38:13 2009 GMT
Subject: C=JP, ST=Tokyo, L=Setagaya, O=Sun Microsystems K.K., OU
=Software Practice, CN=Hanako Yamada/emailAddress=Hanako.Yamada@
foo.bar.jp
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:c2:b4:90:83:a9:bd:0a:2c:c0:ef:15:e3:4b:7c:
95:02:05:0d:92:5c:4a:b8:cf:6e:29:3f:1f:a0:e6:
f2:ef:64:66:4d:fb:d1:52:88:b7:77:05:08:d3:42:
71:40:3b:c1:be:66:4f:12:53:9c:2f:5a:a4:e8:7e:
c7:10:c0:80:7d:f0:09:90:fb:ef:c8:10:93:14:d2:
87:d0:68:08:bc:26:92:c9:05:f5:b6:6c:7b:21:5a:
5e:69:ef:a3:c0:a5:51:87:05:30:b3:3f:17:fa:78:
d7:74:5f:6b:86:dc:08:3d:3a:bc:41:18:fe:1b:80:
4e:b5:65:4a:3c:b7:ad:fc:f5
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
36:1F:D0:6B:95:99:BC:CB:FE:D9:C5:E6:F0:27:6B:36:96:89:E5:B0
X509v3 Authority Key Identifier:
keyid:36:1F:D0:6B:95:99:BC:CB:FE:D9:C5:E6:F0:27:6B:36:96:89:E5:B0
DirName:/C=JP/ST=Tokyo/L=Setagaya/O=Sun Microsystems K.K./OU
=Software Practice/CN=Hanako Yamada/emailAddress=Hanako.Yamada@
foo.bar.jp
serial:00
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: md5WithRSAEncryption
8e:8f:5b:6a:a4:5c:78:63:da:66:42:96:9b:c7:85:4a:8a:1a:
fd:be:5c:8a:7c:f7:bf:ba:8a:c5:92:a6:2a:1b:23:66:1c:85:
9d:ee:c1:5c:2a:98:ba:6b:73:83:27:00:81:79:0a:cc:bc:9e:
c8:bf:d1:ba:55:ed:75:ed:68:b9:b0:88:7c:09:73:12:10:f7:
86:9d:4c:05:b2:78:fc:fc:3b:23:a8:b1:c9:fd:64:92:b7:fb:
f9:a2:77:fc:a4:01:66:b7:25:5c:ad:5a:1b:28:e7:40:a3:90:
13:65:c7:19:ec:14:7f:e3:ae:93:ab:fb:07:e4:eb:11:18:af:
64:5d
—–BEGIN CERTIFICATE—–
MIID4jCCA0ugAwIBAgIBADANBgkqhkiG9w0BAQQFADCBrTELMAkGA1UEBhMCSlAx
DjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTZXRhZ2F5YTEeMBwGA1UEChMVU3Vu
IE1pY3Jvc3lzdGVtcyBLLksuMRowGAYDVQQLExFTb2Z0d2FyZSBQcmFjdGljZTEW
MBQGA1UEAxMNSGFuYWtvIFlhbWFkYTEnMCUGCSqGSIb3DQEJARYYSGFuYWtvLllh
bWFkYUBmb28uYmFyLmpwMB4XDTA4MDMxMTA1MzgxM1oXDTA5MDMxMTA1MzgxM1ow
ga0xCzAJBgNVBAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzERMA8GA1UEBxMIU2V0YWdh
eWExHjAcBgNVBAoTFVN1biBNaWNyb3N5c3RlbXMgSy5LLjEaMBgGA1UECxMRU29m
dHdhcmUgUHJhY3RpY2UxFjAUBgNVBAMTDUhhbmFrbyBZYW1hZGExJzAlBgkqhkiG
9w0BCQEWGEhhbmFrby5ZYW1hZGFAZm9vLmJhci5qcDCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEAwrSQg6m9CizA7xXjS3yVAgUNklxKuM9uKT8foOby72RmTfvR
Uoi3dwUI00JxQDvBvmZPElOcL1qk6H7HEMCAffAJkPvvyBCTFNKH0GgIvCaSyQX1
tmx7IVpeae+jwKVRhwUwsz8X+njXdF9rhtwIPTq8QRj+G4BOtWVKPLet/PUCAwEA
AaOCAQ4wggEKMB0GA1UdDgQWBBQ2H9BrlZm8y/7ZxebwJ2s2lonlsDCB2gYDVR0j
BIHSMIHPgBQ2H9BrlZm8y/7ZxebwJ2s2lonlsKGBs6SBsDCBrTELMAkGA1UEBhMC
SlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTZXRhZ2F5YTEeMBwGA1UEChMV
U3VuIE1pY3Jvc3lzdGVtcyBLLksuMRowGAYDVQQLExFTb2Z0d2FyZSBQcmFjdGlj
ZTEWMBQGA1UEAxMNSGFuYWtvIFlhbWFkYTEnMCUGCSqGSIb3DQEJARYYSGFuYWtv
LllhbWFkYUBmb28uYmFyLmpwggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEE
BQADgYEAjo9baqRceGPaZkKWm8eFSooa/b5cinz3v7qKxZKmKhsjZhyFne7BXCqY
umtzgycAgXkKzLyeyL/RulXtde1oubCIfAlzEhD3hp1MBbJ4/Pw7I6ixyf1kkrf7
+aJ3/KQBZrclXK1aGyjnQKOQE2XHGewUf+Ouk6v7B+TrERivZF0=
—–END CERTIFICATE—–



以上で、Solaris 10を使用したOpenSSLの認証局の構築は終わりです。

次回は、Sun Java System Web Server 7.0のサーバ証明書を作成する方法を紹介します。


2008年3月12日 at 11:35 AM


Java Champion & Evangelist

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2017年2月
« 10月    
 12345
6789101112
13141516171819
20212223242526
2728  

カテゴリー

Twitter

clustermap

ブログ統計情報

  • 921,965 hits

Feeds