获取java.lang.IllegalArgumentException:仅启用了SSLv3 - com.ibm.jsse2.disableSSLv3设置为TRUE

时间:2017-06-21 05:07:42

标签: java spring https ssl-certificate websphere-8

尝试使用soap webservice,即“https://”类型。在我的AppConfig.java中设置以下系统属性。

@PostConstruct

public void init(){

Security.setProperty("ssl.SocketFactory.provider",
            "com.ibm.jsse2.SSLSocketFactoryImpl");
    Security.setProperty("ssl.ServerSocketFactory.provider",
            "com.ibm.jsse2.SSLServerSocketFactoryImpl");
    System.setProperty("java.protocol.handler.pkgs",
            "com.ibm.net.ssl.internal.www.protocol");

    try {
        if(trustStore!= null){
            File certFile = new File(trustStore);
            if(certFile.exists()){
                System.setProperty("https.protocols", "SSLv3");
                System.setProperty("javax.net.ssl.trustStore", trustStore);
                System.setProperty("javax.net.ssl.trustStorePassword",trustStorePassword);

                System.setProperty("javax.net.ssl.keyStore", trustStore);
                System.setProperty("javax.net.ssl.keyStorePassword",trustStorePassword);
                String trustStoreType = "JKS";
                System.setProperty("javax.net.ssl.trustStoreType",trustStoreType);
                System.setProperty("javax.net.debug", "SSL");
                printSysProps();
            }}catch(Exception e){...}

请帮我解决此问题。

2 个答案:

答案 0 :(得分:1)

此错误将返回,因为Java的更高版本默认情况下禁用SSLv3协议。因此,当您尝试在代码中设置和使用SSLv3协议时,它会因为它被禁用而抱怨。

SSLv3不再被认为是安全的,所以不应该使用它。如果您尝试与之通信的服务器支持更新的更安全的TLS协议,我建议您尝试这些协议。

我不会在Java安装上启用SSLv3,因为除非您绝对需要,否则其他评论建议您可以这样做。

答案 1 :(得分:0)

您可以尝试设置系统属性,如下所示:

System.setProperty("com.ibm.jsse2.disableSSLv3", "false");