为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
尚方宝剑之说 2022-06-27 16:28:42
我需要将 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


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信