Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java2se html单元进行SSL客户端证书身份验证_Java_Ssl_Ssl Certificate_Htmlunit_Unit Testing - Fatal编程技术网

使用Java2se html单元进行SSL客户端证书身份验证

使用Java2se html单元进行SSL客户端证书身份验证,java,ssl,ssl-certificate,htmlunit,unit-testing,Java,Ssl,Ssl Certificate,Htmlunit,Unit Testing,我目前正在使用htmlunit模拟废弃需要安装ssl客户端证书(https连接)的网页。此证书已成功安装在我的windows操作系统中。通过web浏览器(chrome&IE)访问给定网页时,会发出提示,选择将使用的个人证书。我想访问windows证书存储区,最好是此个人证书,以进行身份验证并创建到我的htmlunit客户端的成功连接 我已经设法研究了SunMSCAPI和Windows MY,以阅读以下代码所示的应用商店 Provider provider = Security.g

我目前正在使用htmlunit模拟废弃需要安装ssl客户端证书(https连接)的网页。此证书已成功安装在我的windows操作系统中。通过web浏览器(chrome&IE)访问给定网页时,会发出提示,选择将使用的个人证书。我想访问windows证书存储区,最好是此个人证书,以进行身份验证并创建到我的htmlunit客户端的成功连接

我已经设法研究了SunMSCAPI和Windows MY,以阅读以下代码所示的应用商店

        Provider provider = Security.getProvider("SunMSCAPI");
        KeyStore store = KeyStore.getInstance("Windows-MY", provider);
        store.load(null, null);

        Enumeration<?> aliases = store.aliases();
        while (aliases.hasMoreElements()) {
            String alias = aliases.nextElement().toString();
            if (alias.equals("mypersonalcert")) {

                Certificate[] signerKey = (Certificate[]) store
                        .getCertificateChain(alias);
                Object entry = store.getKey(alias, null);
                System.out
                        .println("cert aquired! got it");

            }
        }
Provider-Provider=Security.getProvider(“sunmsapi”);
KeyStore store=KeyStore.getInstance(“Windows我的”,提供程序);
store.load(null,null);
枚举别名=store.alias();
while(别名.hasMoreElements()){
字符串别名=别名.nextElement().toString();
if(别名等于(“mypersonalcert”)){
证书[]签名密钥=(证书[])存储
.getCertificateChain(化名);
Object entry=store.getKey(别名,null);
系统输出
.println(“获得证书!明白了”);
}
}
如何成功地将其集成到我的htmlunit webconnection和web客户端实例以进行连接?提前谢谢。

您可以使用 WebClientOptions.setSSLClientCertificate(URL certificateUrl、字符串certificatePassword、字符串certificateType)

将HTMLUnit指向您选择的客户端证书