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

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