簡體   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