我需要將 java 服務與 go app 集成,可以將其配置為指定檢查 TLS 時使用的 CA 證書文件。我不熟悉go。Java REST 端點使用自簽名證書進行保護。我正在嘗試使用以下方式導出它keytool:keytool -export -alias rootca -file ca.crt -keystore cacerts該ca.crt文件可通過 keytool 本身使用以下命令進行檢查:keytool -printcert -v -file ca.crt現在,當我嘗試在 go 應用程序中使用這個文件時,它是prometheus,通過傳遞指向導出文件tls_config的值,我得到一個錯誤:ca_certerr="創建 HTTP 客戶端時出錯:無法使用指定的 CA 證書 /etc/prometheus/ssl/ca.crt"Prometheus 正在使用 go 的標準crypto/tls,所以我的問題是:我導出 Java 文件的方式是否正確且可用?如何將導出的 Java CA 文件轉換為 Go 能夠理解和使用的格式?
1 回答

至尊寶的傳說
告訴
TA貢獻1789條經驗 獲得超10個贊
根據 的手冊頁keytool
,在-exportcert
命令下:
證書默認以二進制編碼輸出。
所討論的編碼是DER,它是證書數據的二進制表示。
但是,Go 標準庫需要PEM編碼,它只是 DER 數據的 base64 加上一些頁眉/頁腳。
你有(至少)兩個選擇:
告訴keytool
以 PEM 格式導出
這是使用命令的-rfc
標志來完成的-exportcerts
。根據手冊頁:
如果指定了 -rfc 選項,則以 Internet RFC 1421 證書編碼標準定義的可打印編碼格式輸出。
RFC1421是用于 PEM 的。
從 DER 轉換為 PEM
這可以通過以下方式使用 openssl 來完成:
openssl -in exported_file.der -inform DER -out ca.crt
- 1 回答
- 0 關注
- 163 瀏覽
添加回答
舉報
0/150
提交
取消