Cuối cùng đã nhận được giải pháp cho vấn đề của tôi, vì vậy tôi sẽ đăng kết quả ở đây nếu có ai khác bị kẹt.
Nhờ Michael Martin của Michael's Software Thoughts & Ramblings tôi phát hiện ra rằng:
keytool theo mặc định sử dụng thuật toán DSA khi tạo tự ký cert.Các phiên bản trước của Firefox chấp nhận các khóa này mà không có sự cố . Với Firefox 3 beta 5, sử dụng DSA không hoạt động nhưng sử dụng RSA. Chuyển "-keyalg RSA" khi tạo chứng chỉ tự ký tạo ra một chứng nhận Firefox 3 beta 5 hoàn toàn chấp nhận.
Tôi chỉ cần đặt cờ đó, xóa tất cả bộ nhớ cache trong FireFox và nó hoạt động như một sự quyến rũ! Tôi đang sử dụng điều này như là một thiết lập thử nghiệm cho dự án của tôi và tôi cần phải chia sẻ điều này với những người khác, vì vậy tôi đã viết một tập lệnh lô nhỏ tạo hai chứng chỉ SSL. Người ta có thể bị bỏ vào thiết lập Tomcat và cái kia là tệp .p12 có thể được nhập vào FireFox/IE. Cảm ơn!
Cách sử dụng: đối số dòng lệnh đầu tiên là tên người dùng của ứng dụng khách. Tất cả mật khẩu là "mật khẩu" (không có trích dẫn). Thay đổi bất kỳ bit mã hóa cứng nào để đáp ứng nhu cầu của bạn.
@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
Kết quả là hai tệp. Một được gọi là server.jks mà bạn thả vào Tomcat và một tệp khác có tên {username} .p12 mà bạn nhập vào trình duyệt của mình. Tệp server.jks có chứng chỉ ứng dụng khách được thêm dưới dạng chứng chỉ đáng tin cậy.
Tôi hy vọng người khác thấy điều này hữu ích.
Và đây là XML mà cần phải được bổ sung vào Tomcat conf/tập tin của bạn sever.xml (chỉ thử nghiệm trên trên 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"
/>
Đối với 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" />
Cảm ơn rất nhiều vì điều này! Tôi đã thử nghiệm các hướng dẫn khác nhau cả ngày và đây là lần đầu tiên thực sự làm việc với clientAuth = "true " –
Đây là một câu trả lời hay, tôi đã tiết kiệm rất nhiều thời gian với tập tin dơi. Và tốt nhất là nó hoạt động hoàn hảo. – Yster