【发布时间】:2011-10-05 19:59:57
【问题描述】:
我在网上搜索了几个小时关于这个问题,但我找到的答案都没有真正适合我的问题,所以这是我,问我在 SOF 中的第一个问题。
所以,我正在尝试使用 htmlunit 库从 java 程序中打开 Web 浏览器。我需要连接的网站需要 SSL 连接,并且证书存储在 USB 密钥中。其 iKey2023 产品。
系统以前可以工作(我没写),但是U盘里的一个证书过期了,所以自动转到下一个(一共4个证书),突然不工作了.
它给了我 javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 错误。
我现在回到家,忘记了方法的确切名称,但我记得以下内容。
浏览器实例已创建,使用 IE8
browser.setWebConnection 方法被调用。根据 API,此方法是一个内部 API。
通过将 URL 作为参数传递来连接到网站
它在第 3 步抛出异常。
更多细节。小细节可能不正确,但我试图描述一个大图景。 在步骤 2,该方法需要 WebConnection 对象作为参数,并且有该接口的实现。在此实现中,使用 sun.security.pkcs11.SunPKCS11(configFileInputStream) 创建了一个密钥库(我拼写正确吗?)
原来是这样的。
提供者 p = new sun.security.pkcs11.SunPKCS11(configFileInputStream); 安全性.addProvider(p);
并从此提供者创建一个密钥库。
使用此密钥库,在 WebConnection 实现中,它创建一个 SSLSocket。
因此,在证书切换到新证书后,它并没有正确提取证书。
这是我尝试过的。
我尝试在 htmlunit 库中使用不同的方法,例如 setSecurityProvider,并尝试将在上面的代码 sn-p 中创建的 Provider 对象。我遇到了类转换异常。
我尝试手动设置系统属性(trustStore、trustStorePassword、keyStore 等)。为了做到这一点,我想从 USB 密钥中导出证书,但它不允许我从中导出私钥,所以我无法真正从中创建一个有效的 PKCS12 文件(openSSL 想要一个私有密钥文件以及用于转换的 .pem 文件,我没有那个密钥文件)。
他们没有工作,我现在很困。
【问题讨论】:
标签: ssl certificate htmlunit