ata*_*lor 12 ssl groovy self-signed ssl-certificate
我有一些资源,我必须使用SSL来访问使用自签名证书.通常,大多数工具都有一个简单的设置,允许无错误地访问这些工具或只是警告.但是,使用JVM执行此操作的正确方法似乎是将签名证书作为CA导入密钥库.
我有一个我想要使用的groovy脚本,但我更喜欢我的脚本在任何任何JVM上独立工作而无需修改密钥库或分发新的密钥库.有没有简单的方法来覆盖认证验证?
ata*_*lor 18
经过一番研究,我找到了这篇文章.这是我最终使用的内容:
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)
Run Code Online (Sandbox Code Playgroud)
使用风险由您自行承担:这会破坏证书验证!
我只需要使用我正在处理的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17059 次 |
| 最近记录: |