[英]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.