代码之家  ›  专栏  ›  技术社区  ›  ataylor

如何在groovy中将SSL与自签名证书一起使用?

  •  10
  • ataylor  · 技术社区  · 14 年前

    我有一些必须使用SSL访问的资源,这些资源使用自签名证书。一般来说,大多数工具都有一个简单的设置,允许在没有错误或警告的情况下访问这些工具。然而,在JVM中这样做的正确方法似乎是将签名证书作为CA导入密钥库。

    3 回复  |  直到 14 年前
        1
  •  19
  •   ataylor    8 年前

    经过一番研究,我发现 this post . 以下是我最终使用的:

    import javax.net.ssl.HostnameVerifier
    import javax.net.ssl.HttpsURLConnection
    import javax.net.ssl.SSLContext
    import javax.net.ssl.TrustManager
    import javax.net.ssl.X509TrustManager
    
    def nullTrustManager = [
        checkClientTrusted: { chain, authType ->  },
        checkServerTrusted: { chain, authType ->  },
        getAcceptedIssuers: { null }
    ]
    
    def nullHostnameVerifier = [
        verify: { hostname, session -> true }
    ]
    
    SSLContext sc = SSLContext.getInstance("SSL")
    sc.init(null, [nullTrustManager as X509TrustManager] as TrustManager[], null)
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory())
    HttpsURLConnection.setDefaultHostnameVerifier(nullHostnameVerifier as HostnameVerifier)
    

        2
  •  9
  •   hvgotcodes    14 年前

    我只需要用我正在开发的grails应用程序来处理这个问题。您将只处理密钥库一次。假设您拥有证书,只需将其放入密钥库,然后通过命令行道具将jvm指向密钥库。。。

    编辑-我不知道有什么方法可以绕过密钥库的需要。但是你可以用你需要的证书创建一个证书,然后把它和你的应用程序一起传递。你只做一次。

    edit edit——下面是keytool和javacl prop的命令

    keytool -import -trustcacerts -alias www.the-domain.com -file the-cert.der -keystore store.jks
    
    -Djavax.net.ssl.trustStore=/path/to/store.jks