最後に私の問題の解決策を得たので、他の誰かが動けなくなった場合はここに結果を投稿します.
Michael's Software Thoughts & Ramblings のMichael Martin のおかげで、次のことがわかりました。
デフォルトでは、keytool は自己署名証明書を生成するときに DSA アルゴリズムを使用します。Firefox の以前のバージョンでは、これらのキーを問題なく受け入れていました。Firefox 3 ベータ 5 では、DSA を使用しても機能しませんが、RSA を使用すると機能します。自己署名証明書を生成するときに「-keyalg RSA」を渡すと、Firefox 3 ベータ 5 が完全に受け入れる証明書が作成されます。
そのフラグを設定し、FireFox のすべてのキャッシュをクリアしただけで、うまく機能しました。これをプロジェクトのテスト セットアップとして使用しており、これを他の人と共有する必要があるため、2 つの SSL 証明書を作成する小さなバッチ スクリプトを作成しました。1 つは Tomcat セットアップにドロップでき、もう 1 つは FireFox/IE にインポートできる .p12 ファイルです。ありがとう!
使用法: 最初のコマンドライン引数は、クライアントのユーザー名です。すべてのパスワードは「password」です (引用符なし)。ハードコーディングされたビットを必要に応じて変更します。
@echo off
if "%1" == "" goto usage
keytool -genkeypair -alias servercert -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -keystore server.jks -storepass password
keytool -genkeypair -alias %1 -keystore %1.p12 -storetype pkcs12 -keyalg RSA -dname "CN=%1,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -storepass password
keytool -exportcert -alias %1 -file %1.cer -keystore %1.p12 -storetype pkcs12 -storepass password
keytool -importcert -keystore server.jks -alias %1 -file %1.cer -v -trustcacerts -noprompt -storepass password
keytool -list -v -keystore server.jks -storepass password
del %1.cer
goto end
:usage
echo Need user id as first argument: generate_keystore [username]
goto end
:end
pause
結果は 2 つのファイルです。1 つは、Tomcat にドロップする server.jks という名前のファイルで、もう 1 つは、ブラウザーにインポートする {username}.p12 という名前のファイルです。server.jks ファイルには、トラステッド証明書として追加されたクライアント証明書があります。
他の誰かがこれが役立つことを願っています。
Tomcat conf/sever.xml ファイルに追加する必要がある XML は次のとおりです (Tomcat 6.x でのみテスト済み)。
<Connector
clientAuth="true" port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="${catalina.home}/conf/server.jks"
keystoreType="JKS" keystorePass="password"
truststoreFile="${catalina.home}/conf/server.jks"
truststoreType="JKS" truststorePass="password"
SSLVerifyClient="require" SSLEngine="on" SSLVerifyDepth="2" sslProtocol="TLS"
/>
Tomcat 7 の場合:
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" SSLEnabled="true"
maxThreads="200" scheme="https" secure="true"
keystoreFile="${catalina.base}/conf/server.jks" keystorePass="password"
clientAuth="false" sslProtocol="TLS" />