Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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
Java WSImport-over-SSL和假(dev)证书_Java_Ssl_Https_Webservice Client_Wsimport - Fatal编程技术网

Java WSImport-over-SSL和假(dev)证书

Java WSImport-over-SSL和假(dev)证书,java,ssl,https,webservice-client,wsimport,Java,Ssl,Https,Webservice Client,Wsimport,最近,我花了几个小时试图让WSImport在通过HTTPS托管的web服务上工作,并使用假证书开发人员部署 我尝试使用Java 8 jdk的windows版本的wsimport.exe 我指定了选项-XdisableSSLHostnameVerification,但它不断抱怨证书错误。 诚然,证书是无效的,但在dev环境中它应该是可以接受的 我没有找到让wsimport跳过证书检查的简单方法。最后我得到了一个解决方案,使用包装器类 我认为分享解决方案是有意义的。 希望它能为更好的目的节省一些人的

最近,我花了几个小时试图让WSImport在通过HTTPS托管的web服务上工作,并使用假证书开发人员部署

我尝试使用Java 8 jdk的windows版本的wsimport.exe

我指定了选项-XdisableSSLHostnameVerification,但它不断抱怨证书错误。 诚然,证书是无效的,但在dev环境中它应该是可以接受的


我没有找到让wsimport跳过证书检查的简单方法。

最后我得到了一个解决方案,使用包装器类

我认为分享解决方案是有意义的。 希望它能为更好的目的节省一些人的时间

解决方案假设java安装在c:\Program Files\java\jdk1.8.0\U 40中:

如何编译

c:\Program Files\Java\jdk1.8.0\u 40\bin\javac-cp c:\Program Files\Java\jdk1.8.0\u 40\lib\tools.jar WSImportSSLByPass.Java

如何使用

c:\Program Files\Java\jdk1.8.0\u 40\bin\Java-cp c:\Program Files\Java\jdk1.8.0\u 40\lib\tools.jar;。WSImportSSLByPass%wsimport参数%

代码

要放入wsimportssslbypass.java中


最后,我得到了一个解决方案,使用包装器类

我认为分享解决方案是有意义的。 希望它能为更好的目的节省一些人的时间

解决方案假设java安装在c:\Program Files\java\jdk1.8.0\U 40中:

如何编译

c:\Program Files\Java\jdk1.8.0\u 40\bin\javac-cp c:\Program Files\Java\jdk1.8.0\u 40\lib\tools.jar WSImportSSLByPass.Java

如何使用

c:\Program Files\Java\jdk1.8.0\u 40\bin\Java-cp c:\Program Files\Java\jdk1.8.0\u 40\lib\tools.jar;。WSImportSSLByPass%wsimport参数%

代码

要放入wsimportssslbypass.java中


在双向ssl握手的情况下,我们可以这样修改WSImportSSLByPass类

    import com.sun.tools.internal.ws.WsImport;

public class OCBWSImport {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Throwable {
        // TODO code application logic here
        //System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\Java\\jdk1.8.0_131\\jre\\lib\\security\\cacerts");
        //System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
        //System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");

        //Certificate for 2-way handshake
        System.setProperty("javax.net.ssl.keyStore", "D:\\tuanpa\\yourp12file.p12");
        System.setProperty("javax.net.ssl.keyStorePassword", "password of p12 file");

        //Hostname checking bypass
        javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
                new javax.net.ssl.HostnameVerifier() {

            public boolean verify(String hostname,
                    javax.net.ssl.SSLSession sslSession) {
                //return hostname.equals("192.168.1.10");
                return true;
            }
        });
        WsImport.main(args);
    }

}

在双向ssl握手的情况下,我们可以这样修改WSImportSSLByPass类

    import com.sun.tools.internal.ws.WsImport;

public class OCBWSImport {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Throwable {
        // TODO code application logic here
        //System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\Java\\jdk1.8.0_131\\jre\\lib\\security\\cacerts");
        //System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
        //System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");

        //Certificate for 2-way handshake
        System.setProperty("javax.net.ssl.keyStore", "D:\\tuanpa\\yourp12file.p12");
        System.setProperty("javax.net.ssl.keyStorePassword", "password of p12 file");

        //Hostname checking bypass
        javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
                new javax.net.ssl.HostnameVerifier() {

            public boolean verify(String hostname,
                    javax.net.ssl.SSLSession sslSession) {
                //return hostname.equals("192.168.1.10");
                return true;
            }
        });
        WsImport.main(args);
    }

}

这真的帮助了我。谢谢,这为我节省了很多时间。这真的帮助了我。谢谢,这为我节省了很多时间。