gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 20:08:15 29 4
gpt4 key购买 nike

我需要将 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_configca_cert指向导出文件的值我得到一个错误:

err="error creating HTTP client: unable to use specified CA cert /etc/prometheus/ssl/ca.crt"


Prometheus 使用 go 的标准 crypto/tls所以我的问题是:
  • 我导出 Java 文件的方式是否正确且可用?
  • 如何将导出的 Java CA 文件转换为 Go 能够理解和使用的格式?
  • 最佳答案

    根据 keytool 的手册页,在 -exportcert 下命令:

    The certificate is by default output in binary encoding.


    有问题的编码是 DER这是证书数据的二进制表示。
    但是,Go 标准库需要 PEM编码只是 DER 数据的 base64 加上一些页眉/页脚。
    你有(至少)两个选择:
    告诉 keytool以 PEM 格式导出
    这是使用 -rfc 完成的。标记到 -exportcerts命令。根据手册页:

    If the -rfc option is specified, then the output in the printableencoding format defined by the Internet RFC 1421 Certificate EncodingStandard.


    RFC1421是用于 PEM 的。
    从 DER 转换为 PEM
    这可以通过以下方式使用 openssl 来完成:
    openssl -in exported_file.der -inform DER -out ca.crt

    关于java - 导出 java ca 证书,以便它可以从 go 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63809700/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com