Tomcat6/7に接続するユーザーを認証するためにSSLクライアント証明書を使用したいと思います。私はTomcatが正しく設定されており、Tomcatに与えたtruststoreのcertで署名した証明書は、IEとFirefoxの両方から正常に認証されています。連鎖クライアント証明書
私は顧客に自分のユーザーを管理できるようにしたいので、クライアント証明書をチェーンしたいと思います。これを達成するには、追加のユーザー証明書に署名するために使用する電子証明書管理CA証明書を顧客に発行します。私は、ユーザー証明書を送信するためにユーザーのブラウザーを必要とし、管理者CA(ルート証明書で署名されている)と連鎖して認証します。
私はopensslを使用していますが、ルートCAと中間CAを作成しました。中間CAを使用してリーフ証明書に署名しました。 3つの証明書をすべてpkcs12とpemに変換し、keytoolを使用してルート証明書をTomcatのトラストストアにインポートします。 openssl -verifyは中間証明書(および中間がルートに対して検証されている)に対してpkcs12の葉を検証します。しかし、ルート証明書(pkcs12)に対して検証するリーフ証明書(pkcs12)を取得できません。私はリーフ証明書を使用して認証するためにIEまたはFirefoxを取得することもできません。 IEは証明書を要求しますが、認証に失敗します(Tomcatのログには接続や失敗の記述はありません)。 Firefoxはリーフ証明書を要求しません。単に認証に失敗します。
root.bat:
openssl verify -CAfile ..\root\Root.pem Leaf.pem
は、私は3つの証明書を生成するために使用していますスクリプトです:ここでは
は、私はOpenSSLを使用してルートに対する葉を検証しようとする方法です。
intermediate.bat:
set name=Intermediate
set password=dummypassword
set caDir=../root
set caName=Root
set caPassword=dummypassword
openssl genrsa -des3 -passout pass:%password% -out %name%.key 2048
openssl req -new -key %name%.key -passin pass:%password% -out %name%.csr -subj "/C=US/ST=Chaos/L=TimeNSpace/O=None/CN=%name%"
openssl x509 -req -days 3650 -in %name%.csr -CA %caDir%/%caName%.crt -CAkey %caDir%/%caName%.key -passin pass:%caPassword% -set_serial 1 -extfile GenerateCertificate.cfg -extensions v3_ca -out %name%.crt
openssl pkcs12 -export -in %name%.crt -inkey %name%.key -passin pass:%password% -passout pass:%password% -chain -CAfile %caDir%/%caName%.crt -out %name%.pkcs12
openssl pkcs12 -in %name%.pkcs12 -out %name%.pem -nodes -passin pass:%password%
葉.BAT:
set name=Leaf
set password=dummypassword
set caDir=../intermediate
set caName=Intermediate
set caPassword=dummypassword
openssl genrsa -des3 -passout pass:%password% -out %name%.key 2048
openssl req -new -key %name%.key -passin pass:%password% -out %name%.csr -subj "/C=US/ST=Chaos/L=TimeNSpace/O=None/CN=%name%"
openssl x509 -req -days 3650 -in %name%.csr -CA %caDir%/%caName%.crt -CAkey %caDir%/%caName%.key -passin pass:%caPassword% -set_serial 1 -out %name%.crt
openssl pkcs12 -export -in %name%.crt -inkey %name%.key -passin pass:%password% -passout pass:%password% -chain -CAfile %caDir%/%caName%.pem -out %name%.pkcs12
openssl pkcs12 -in %name%.pkcs12 -out %name%.pem -nodes -passin pass:%password%
GenerateCertificate.cfg:
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = CA:true,pathlen:3