我们有一个java applet,它与运行在tomcat上的spring应用程序通信并使用spring的http调用者。
我们希望使用带有客户端身份验证的ssl保护applet,我们有一个用于登录的jsp页面,在成功登录applet加载后。
使用ssl保护jsp页面,当applet加载applet内的http调用者时,进行第二次握手显然与浏览器握手无关,好吧,我不介意,但是我想要java插件来使用浏览器证书和客户端证书但不是,我必须使用java ControlPanel将客户端证书加载到java插件,如果我的服务器证书是自签名的,那么我必须将服务器证书加载到java ControlPanel并且nrowser。
另一件事是当applet开始加载时,java插件弹出一个询问客户端密钥库密码的对话框,我想避免这种情况。
总而言之:我希望java插件能够使用浏览器的可信证书和客户端证书,并避免弹出密钥库密码对话框。
我已经用Google搜索了两天,但却找不到任何有关如何实现这一目标的线索。
我将不胜感激。
我正在使用jdk 1.6.0 u23和firefox 3.6.13。
答案 0 :(得分:1)
Java有自己的keystore
数据库,它拥有这些客户端证书,由3个变量控制;
-Djavax.net.ssl.keyStore=<client_keystore_file_path>
-Djavax.net.ssl.keyStorePassword=<password to access the client keystore file>
-Djavax.net.ssl.keyStoreType=<keystore_type>
例如;
-Djavax.net.ssl.keyStore=c:\certs\client.pfx
-Djavax.net.ssl.keyStorePassword=test
-Djavax.net.ssl.keyStoreType=pkcs12
为了能够使用它,你必须使用keytool
程序(JRE / JDK附带)来转换&amp;将客户端证书添加到密钥库中,here
就是如何执行此操作的示例。
答案 1 :(得分:1)
Java插件文档说applet可以访问浏览器密钥库:
但不幸的是,文档很少,我从未尝试过。
祝你好运,如果你找到它,可以在这里发布你的解决方案!