猿问

导出 java ca 证书,以便它可以从 go 中使用

我需要将 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_cert

err="创建 HTTP 客户端时出错:无法使用指定的 CA 证书 /etc/prometheus/ssl/ca.crt"

Prometheus 正在使用 go 的标准crypto/tls,所以我的问题是:

  • 我导出 Java 文件的方式是否正确且可用?

  • 如何将导出的 Java CA 文件转换为 Go 能够理解和使用的格式?


尚方宝剑之说
浏览 135回答 1
1回答

至尊宝的传说

根据 的手册页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
随时随地看视频慕课网APP

相关分类

Go
我要回答