実際には、MySQL Connector/JとMySQL間の通信がSSL通信になります。MySQL Connector/Jの仕様では、サーバ証明書に加えて、クライアント証明書が必要となります(SSL通信では、クライアント認証とサーバ認証が実行されます)。
なお、MySQLのSSL通信(サーバ認証)の設定に関しては、「http://memoyasu.blogspot.com/2011/11/mysql55-ssl.html」を参照してください。
手順の流れは以下になります。
①クライアント証明書と鍵ペアを発行する。
②MySQLの設定ファイル(my.ini)を修正する(クライアント証明書と鍵のパスを指定)。
③MySQLを再起動する。
④Tomcatの設定ファイル(server.xml)を修正する。
⑤Tomcatの起動時のJavaオプションを追加する。
⑥Tomcatを再起動する。
(1)OpenSSLを使用し、MySQL Connector/Jに対する鍵ペアと証明書を発行します。
c:\tomcat>c:\OpenSSL-Win64\bin\openssl.exe req -new -keyout "client-key.pem" -ou
t "client-req.pem" -days 3600
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
..........++++++
.................++++++
writing new private key to '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 "client-req.pem" -out "client
-cert.pem"
Loading 'screen' into random state - done
Signature ok
subject=/C=JP/CN=client.yasuyasu.com
Getting CA Private Key
Enter pass phrase for ca-key.pem:
unable to write 'random state'
(2)MySQLの設定ファイル(my.ini)を修正します。太字箇所を追加します。
★パスの区切りは、"\"ではなく、"/"であることに注意!
[client]
ssl-ca=C:/tomcat/ca-cert.pem
ssl-cert=C:/tomcat/client-cert.pem
ssl-key=C:/tomcat/client-key.pem
(3)MySQLを再起動します。
(4)server.xml(C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf配下)を編集します。connectURL属性に、太字箇所を追加します。
<Realm className="com.yosiyosi.realm.CustomJDBCRealm"
driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost:3306/bushido?useSSL=true"
userTable="auth_users" userNameCol="user_name" userCredCol="user_password"
userRoleTable="auth_roles" roleNameCol="role_name"
connectionName="root" connectionPassword="password"/>
(5)keytoolコマンドを使用し、CA証明書をPEM形式からDER形式に変換します。
c:\tomcat>c:\OpenSSL-Win64\bin\openssl.exe x509 -outform DER -in ca-cert.pem -out ca.cert
c:\tomcat>keytool -import -file ca.cert -keystore server.jks -alias ca
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
所有者: 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
証明書がキーストアに追加されました。
(6)keytoolコマンドを使用し、クライアント証明書をPEM形式からDER形式に変換します。
c:\tomcat>c:\OpenSSL-Win64\bin\openssl.exe x509 -outform DER -in client-cert.pem
-out client.cert
c:\tomcat>keytool -import -file client.cert -keystore client.jks -alias client
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
所有者: CN=client.yasuyasu.com, C=JP
発行者: CN=ca.yasuyasu.com, C=JP
シリアル番号: 5
有効期間の開始日: Wed Nov 23 00:22:25 JST 2011 終了日: Fri Oct 01 00:22:25 JST 2
021
証明書のフィンガープリント:
MD5: 15:78:E2:00:B1:A0:BF:03:AB:47:1B:CF:91:B0:E6:99
SHA1: 10:0C:11:64:CE:A2:41:FB:35:1D:13:16:29:E8:CB:EA:C6:14:12:C5
署名アルゴリズム名: SHA1withRSA
バージョン: 1
この証明書を信頼しますか? [no]: yes
証明書がキーストアに追加されました。
(7)Tomcatの起動時に、Javaのオプションとして以下を追加します。
-Djavax.net.ssl.keyStore=c:\tomcat\client.jks
-Djavax.net.ssl.keyStorePassword=password
-Djavax.net.ssl.trustStore=c:\tomcat\server.jks
-Djavax.net.ssl.trustStorePassword=password
(8)Tomcatを再起動します。
「http://127.0.0.1:8080/sampleapp/sample.html」にアクセスし、FORM認証が成功することを確認します。
■補足■
SSL通信でエラーが発生した場合には、Javaオプションに以下を設定してTomcatを起動します。SSL通信する際の詳細なログが標準出力に出力されて便利です。
-Djavax.net.debug=all
<出力例>
2011-11-23 01:42:15 Commons Daemon procrun stdout initialized
trustStore is: c:\tomcat\server.jks
trustStore type is : jks
trustStore provider is :
init truststore
adding as trusted cert:
Subject: CN=ca.yasuyasu.com, C=JP
Issuer: CN=ca.yasuyasu.com, C=JP
Algorithm: RSA; Serial number: 0xf0fc15b1f79fb38b
Valid from Tue Nov 22 22:29:35 JST 2011 until Thu Dec 22 22:29:35 JST 2011
trigger seeding of SecureRandom
done seeding SecureRandom
***
found key for : server
chain [0] = [
[
Version: V3
Subject: CN=yasu.hoge.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=jp
Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
Key: Sun RSA public key, 1024 bits
modulus: 122242012982209662923393081262187509019889149396697912939693246792421045784628744532131386668778037133171905458919922944159056873911220455399771810893972594625969976059362725970167560234465556141102327452863823309180840502041205195494958180017978965410060359966763326464061148776167266441521233069679259172879
public exponent: 65537
Validity: [From: Mon Oct 17 21:34:43 JST 2011,
To: Sat Apr 14 21:34:43 JST 2012]
Issuer: CN=yasu.hoge.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=jp
SerialNumber: [ 4e9c20e3]
]
Algorithm: [SHA1withRSA]
Signature:
0000: 60 CA 23 E8 32 1B A8 73 51 6F A8 AE A2 BE E3 92 `.#.2..sQo......
0010: 0F BD 05 FF AB B0 C3 EE 17 62 53 49 AF 1E F1 EF .........bSI....
0020: 36 FC F5 79 75 FF A3 44 AA 8D 4A C4 91 47 1A A5 6..yu..D..J..G..
0030: 05 60 8F 2A E0 FE 07 52 13 1C BD 09 11 10 92 74 .`.*...R.......t
(省略)
0 件のコメント:
コメントを投稿