2011年11月23日水曜日

Tomcat 6(Windows X64版) SSL(クライアント認証)の設定

TomcatのSSL(クライアント認証)の設定手順について説明します。
なお、今回は、Tomcatにクライアント認証を設定する範囲に限定し、Webアプリへの認可の設定まで説明しません。

①OpenSSLを使用し、オレオレ認証局のCA証明書をPEM形式からJKS形式に格納します。
c:\tomcat>keytool -import -file "ca-cert.pem" -trustcacerts -alias ca -keystore
cacerts.jks -storepass password
所有者: CN=ca.yasuyasu.com, C=JP
発行者: CN=ca.yasuyasu.com, C=JP
シリアル番号: f0fc15b1f79fb38b
有効期間の開始日: Tue Nov 22 22:29:35 JST 2011 終了日: Thu Dec 22 22:29:35 JST 2
011
証明書のフィンガープリント:
         MD5:  3E:E5:C6:97:57:AB:44:2C:1C:67:04:39:3C:5C:F0:C6
         SHA1: 66:A8:7E:03:B2:33:5D:4F:80:2A:BA:56:E2:BC:2A:E2:49:02:6C:71
         署名アルゴリズム名: SHA1withRSA
         バージョン: 3

拡張:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 01 6D FE 40 0F CD 30 16   0B B1 E3 69 7E 1B D1 2A  .m.@..0....i...*
0010: 7D 38 CC 22                                        .8."
]
]

#2: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

#3: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 01 6D FE 40 0F CD 30 16   0B B1 E3 69 7E 1B D1 2A  .m.@..0....i...*
0010: 7D 38 CC 22                                        .8."
]

]

この証明書を信頼しますか? [no]:  yes
証明書がキーストアに追加されました。

②OpenSSLを使用し、クライアント認証用の鍵ペアおよび証明書を作成します。なお、クライアント認証用の証明書は、①のCAで発行した証明書になります。
c:\tomcat>c:\OpenSSL-Win64\bin\openssl.exe req -new -keyout "user-client-key.pem
" -out "user-client-req.pem" -days 3600
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
...............++++++
..................++++++
writing new private key to 'user-client-key.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) [AU]:JP
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:client.yasuyasu.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

c:\tomcat>c:\OpenSSL-Win64\bin\openssl.exe x509 -req -days 3600 -CA "ca-cert.pem
"  -CAkey "ca-key.pem" -CAserial "serial.conf" -in "user-client-req.pem" -out "u
ser-client-cert.pem"
Loading 'screen' into random state - done
Signature ok
subject=/C=jp/CN=clientuser.yasuyasu.com
Getting CA Private Key
Enter pass phrase for ca-key.pem:

また、証明書をPEM形式からPKCS#12形式に変換します。ブラウザにインポートするために使用します。
c:\tomcat>c:\OpenSSL-Win64\bin\openssl.exe x509 -in "user-client-cert.pem" -out
"user.x509.pem"
c:\tomcat>c:\OpenSSL-Win64\bin\openssl.exe pkcs12 -export -inkey "user-client-ke
y.pem" -in "user.x509.pem" -out userclient.p12
Loading 'screen' into random state - done
Enter pass phrase for user-client-key.pem:
Enter Export Password:
Verifying - Enter Export Password:

Tomcatの設定ファイル(server.xml)を開き、以下のように、トラストアストアを指定します。また、clientAuth属性をtrueに設定します(ポイントは太字箇所)。

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS" 
               truststoreFile="c:\tomcat\cacerts.jks"  
               truststorePass="password" 
               keystoreFile="C:\Program Files\Apache Software Foundation\Tomcat 6.0\server.jks" 
               keystorePass="password" />

④Tomcatを再起動します。

⑤ブラウザにクライアント証明書(PKCS#12)をインポートします。


⑥ブラウザを使用し、「https://localhost:8443/sampleapp」にアクセスします。以下の証明書選択画面が表示されるため、証明書を選択してアクセスできることを確認します。


0 件のコメント: