Java WSImport-over-SSL和假(dev)证书
最近,我花了几个小时试图让WSImport在通过HTTPS托管的web服务上工作,并使用假证书开发人员部署 我尝试使用Java 8 jdk的windows版本的wsimport.exe 我指定了选项-XdisableSSLHostnameVerification,但它不断抱怨证书错误。 诚然,证书是无效的,但在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跳过证书检查的简单方法。最后我得到了一个解决方案,使用包装器类 我认为分享解决方案是有意义的。 希望它能为更好的目的节省一些人的时间 解决方案假设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);
}
}
这真的帮助了我。谢谢,这为我节省了很多时间。这真的帮助了我。谢谢,这为我节省了很多时间。