如果我有:
System.setProperty("javax.net.ssl.keyStore", '/etc/certificates/fdms/WS1001237590._.1.ks');
System.setProperty("javax.net.ssl.keyStorePassword", 'DV8u4xRVDq');
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地打开安全连接.
但是,我想将证书直接存储在战争中,所以我使用:(文件输入流最终将成为资源流,但我这样做是为了让它工作.)
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("/etc/certificates/fdms/WS1001237590._.1.ks"), "DV8u4xRVDq".toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, "DV8u4xRVDq".toCharArray());
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(kmf.getKeyManagers(), null, null);
Run Code Online (Sandbox Code Playgroud)
现在,如果我打开相同的连接,我得到: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
是否可以轻松地将客户端证书附加到使用wsdl2java生成的Axis2存根?我需要在每个请求的基础上动态更改客户端证书,因此只需将其存储在密钥库中就不适用于我们的情况.
我已经找到了为非SOAP调用执行此操作的示例,但找不到与使用Axis客户端存根相关的任何内容.试图破解XML for SOAP调用是一个选项,我猜,albiet是一个痛苦的选择!呻吟!
我正在尝试创建一些连接到自签名HTTPS服务器的示例Java项目.我似乎无法让Java停止尝试验证证书.我不想相信这个证书,我只想完全忽略所有证书验证; 这个服务器在我的网络中,我希望能够运行一些测试应用程序而不必担心证书是否有效.
java -Dcom.sun.net.ssl.checkRevocation=false HelloWorld
org.apache.axis2.AxisFault: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Run Code Online (Sandbox Code Playgroud)
该-Dcom.sun.net.ssl.checkRevocation =假没有帮助.我还尝试添加以下代码:
public static void DisableCertificateValidation() {
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { return null; }
public void checkClientTrusted(X509Certificate[] certs, String authType) { }
public void checkServerTrusted(X509Certificate[] certs, String authType) { }
}
};
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} …Run Code Online (Sandbox Code Playgroud) 这不是设计应该发生的事情,但出于安全考虑,我想知道如何将"正确"的证书发送到服务器,假设有多个证书符合某个CA签名的要求?
我正在使用一个简单的SSL JAVA示例客户端,连接到Apache HTTPD.
我尝试使用4个证书进行测试,每次都删除所选的证书,并注意下一个选择了谁.除了证书的"sha256"的词典顺序之外,我找不到合理的逻辑(即日期,别名等).这似乎不太可能......
示例客户端执行类似的操作
System.setProperty("javax.net.ssl.keyStore","device.p12");
System.setProperty("javax.net.ssl.keyStorePassword","password");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.trustStore","truststore.jks");
System.setProperty("javax.net.ssl.trustStorePassword","password");
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sslSock = (SSLSocket) factory.createSocket("87.69.60.100",443);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sslSock.getOutputStream(), "UTF8"));
wr.write("GET /lather HTTP/1.1\r\nhost: 87.69.60.100\r\n\r\n");
wr.flush();
Run Code Online (Sandbox Code Playgroud)
Apache配置了
SSLCACertificateFile rootCA.crt
SSLVerifyClient require
Run Code Online (Sandbox Code Playgroud)
我找不到相关文件来回答这个问题.我也想知道 - Apache是否有可能以某种方式转发多个证书链?(对于一个行为不端的客户发送一些奇怪的东西).
谢谢!
我正在尝试从Web服务请求数据,该服务需要客户端提供客户端证书.服务器使用SSL进行所有通信,并使用自签名证书.我给了Netbeans服务的WSDL文件,它生成了客户端代码wsimport.
当我的客户端代码在常规Java应用程序中编写时,我没有任何问题; 我将信任存储设置为cacerts包含服务器证书的文件,将密钥存储设置为服务器管理员以JKS格式提供的文件,包含2个密钥 - 客户端私钥和服务器的公钥,构建请求对象,然后发送请求.
当我将其移至企业Java环境时,问题就出现了.要求规定代码必须是在Glassfish应用程序服务器上运行的Enterprise Archive中的Enterprise JavaBean.看来Glassfish有自己的安全设置,可以覆盖JVM的设置.当运行包含Web服务调用的EJB方法时,SSL协商失败:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.我不知道如何像我的JVM设置一样设置Glassfish的安全设置,任何人都可以解释Glassfish的安全设置吗?我所做的研究只展示了如何将Glassfish设置为Web服务服务器,而不是Web服务客户端.
我有一个服务器的.cer证书文件,我把它添加到我的信任存储区,使用Java keytool将它添加到默认cacerts文件中.根据http://blog.johnryding.com/post/1548502059/acquire-an-ssl-certificate-for-your-java-programs-中的步骤,修改包含自签名证书的cacerts文件会更好吗?双赢?InstallCert
我有信任存储文件,密钥存储文件,以及.cer证书文件和.p12浏览器证书,存储在$ JAVA_HOME/jre/lib/security和$ JAVA_HOME/lib/security中.
我正在使用Netbeans 6.9.1和Glassfish 3.1 Final.下面的相关代码段是从我的EJB复制而来的.该异常发生在最后一行.
System.setProperty("javax.net.ssl.trustStore", "C:\\jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStore", "C:\\userCertificate.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "password");
RequestObject request = new RequestObject;
request.setQuery("some data");
request.setUsername("user");
request.setPassword("pass");
Service service = new Service();
Endpoint port = service.getWebServicePort();
Result result …