繁体   English   中英

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

[英]How to use SSL with a self-signed certificate in groovy?

我有一些资源,我必须使用SSL来访问使用自签名证书。 通常,大多数工具都有一个简单的设置,允许无错误地访问这些工具或只是警告。 但是,使用JVM执行此操作的正确方法似乎是将签名证书作为CA导入密钥库。

我有一个我想要使用的groovy脚本,但我更喜欢我的脚本在任何任何JVM上独立工作而无需修改密钥库或分发新的密钥库。 有没有简单的方法来覆盖认证验证?

经过一番研究,我找到了这篇文章 这是我最终使用的内容:

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)

使用风险由您自行承担:这会破坏证书验证!

我只需要使用我正在处理的grails应用程序。 您只需处理一次密钥库。 假设你有证书,只需将它放入你的密钥库,然后通过命令行道具将你的jvm指向密钥库......

编辑 - 我不知道有什么方法可以绕过对密钥库的需求。 但是您可以使用您需要的证书创建一个并使用您的应用程序传递它。 你只做一次。

编辑编辑 - 这是keytool和java CL prop的命令

keytool -import -trustcacerts -alias www.the-domain.com -file the-cert.der -keystore store.jks

-Djavax.net.ssl.trustStore=/path/to/store.jks

如果您调用命令行程序curl而不是使用本机groovy / JVM工具,则可以通过从命令行运行以下命令来禁用用户的证书检查:

$ echo 'insecure' >>~/.curlrc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM