我需要将 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 关注
- 134 浏览
添加回答
举报
0/150
提交
取消