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

     2023-03-29     205

关键词:

【中文标题】导出 java ca 证书,以便它可以从 go 中使用【英文标题】:Export java ca certificate so that it is usable from go 【发布时间】:2020-12-27 18:31:18 【问题描述】:

我需要将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 能够理解和使用的格式?

【问题讨论】:

证书可能是二进制格式。如果它不包含可读的标题(只需使用文本编辑器打开它),您需要将其转换为 PEM:openssl x509 -in cert.cer -out cert.pem @Marc 是的,它是二进制的,但是建议的命令不起作用。它失败了4654165440:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE 您可以告诉 openssl 实际输入格式:openssl x509 -in cert.cer -out cert.pem -inform DER,甚至可以选择使用-outform PEM 输出格式。您也可以尝试将-rfc 选项改为keytool -printcert 以PEM 格式输出。 【参考方案1】:

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

证书默认以二进制编码输出。

有问题的编码是DER,它是证书数据的二进制表示。

但是,Go 标准库需要 PEM 编码,它只是 DER 数据的 base64 加上一些页眉/页脚。

你有(至少)两个选择:

告诉keytool 以 PEM 格式导出

这是通过使用-exportcerts 命令的-rfc 标志来完成的。根据手册页:

如果指定了 -rfc 选项,则 printable 中的输出 由 Internet RFC 1421 证书编码定义的编码格式 标准。

RFC1421 是用于 PEM 的。

从 DER 转换为 PEM

这可以通过以下方式使用 openssl 来完成:

openssl -in exported_file.der -inform DER -out ca.crt

【讨论】:

使用 C# 从 CA 证书为设备创建 X509 证书

】使用C#从CA证书为设备创建X509证书【英文标题】:CreateX509CertificateforDevicefromaCAcertificateusingC#【发布时间】:2021-12-2611:53:54【问题描述】:我声明我不是证书主题的专家,我可能对证书链签名不太了解。我们的客户将向我们发送... 查看详情

配置对港口的https访问

.../docs/1.10/install-config/configure-https/默认情况下,Harbor不提供证书。可以在没有安全性的情况下部署Harbor,这样您就可以通过HTTP连接到它。但是,只有在没有连接到外部internet的空间隙测试或开发环境中才可以使用HTTP。在没有空间... 查看详情

Java 从 Windows 密钥库访问中间 CA?

...2011-07-2512:29:35【问题描述】:我需要在Windows上构建一个证书链,从X.509智能卡证书通过一个或多个中间CA到根CA。当CA证书位于JKS密钥库中时,这很容易,但我也需要使用Windows密钥库。我可以从“Windows-ROOT”获取根CA证 查看详情

智能卡从 CA 证书中检索公钥

】智能卡从CA证书中检索公钥【英文标题】:SmartCardRetrievepublickeyfromCAcertificate【发布时间】:2021-03-0313:27:20【问题描述】:我正在尝试读取行驶记录仪公司的智能卡。除了识别部分,我可以很好地读取所有数据。这是我真正需要... 查看详情

ca证书下载以及导出公私钥教程

1证书下载流程1、登入CFCA中国金融认证中心官网网址:http://www.cfca.com.cn/,点击“证书自助”-“相关下载”,   2、在生产证书下载选项中点击à“证书下载”-“生产系统证书下载”-“新证书下载平台(生产证书)”;&n... 查看详情

windowsserver2008r2升级之ca备份

...菜单中打开注册表编辑器;定位至CertSvc/Configuration,选择导出;输入名称,选择备份位置后点击保存;保存成功后,CA备份后的证书、注册表及数据库如下图所示; 查看详情

java中利用keytool创建一个ca证书

1什么是CA证书CA证书,顾名思义,就是CA机构颁发的数字证书。人人都可以找工具制作证书。所谓认证机构(CA,CertificateAuthority),是采用公开密钥基础技术,专门提供网络身份认证服务,负责签发和管理数... 查看详情

如何用java读取使用证书

证书(Certificate,也称public-keycertificate)是用某种签名算法对某些内容(比如公钥)进行数字签名后得到的、可以用来当成信任关系中介的数字凭证。证书发行机构通过发行证书告知证书使用者或实体其公钥(public-key)以及其它一些辅助... 查看详情

使用powershell更新lync/skype边缘服务器内网证书

...sCertificate将已安装的证书分配给内部接口。在MMC控制台中导出已安装的证书,导出的证书应包含私钥。将导出的证书安装到其他Lync边缘服务器上的MMC控制台中的Personal文件夹。使用Set-CsCertificate将已安装的证书分配给内部接口。... 查看详情

来自 CA 的 PKCS12 Java 密钥库和 Java 中的用户证书

】来自CA的PKCS12Java密钥库和Java中的用户证书【英文标题】:PKCS12JavaKeystorefromCAandUsercertificateinjava【发布时间】:2011-04-0613:37:07【问题描述】:我最近负责用Java模拟Apple产品(iPhone配置实用程序)。我有点卡住的部分之一是关于Ex... 查看详情

从 https 站点获取证书

】从https站点获取证书【英文标题】:Gettingacertificatefromanhttpssite【发布时间】:2012-12-0118:45:15【问题描述】:我需要为我公司的***站点获取站点证书,以便我可以使用它来设置OSX内置的cisco客户端。我可以在Chrome和Safari的锁定图... 查看详情

如何在 Android 设备上安装受信任的 CA 证书?

】如何在Android设备上安装受信任的CA证书?【英文标题】:HowtoinstalltrustedCAcertificateonAndroiddevice?【发布时间】:2011-05-2613:42:24【问题描述】:我已经创建了自己的CA证书,现在我想将它安装在我的AndroidFroyo设备(HTCDesireZ)上,以便... 查看详情

android中受信任的CA列表?

...-1604:16:44【问题描述】:我想知道在android上“允许”哪些证书颁发机构..因为我要购买ssl证书,所以我想了解使用它是否会在android中遇到一些问题。谢谢【问题讨论】:【参考方案1】:您可以从安卓设备或模拟器http://www.setupmobi... 查看详情

netty中使用ssl双向认证(包括证书生成)

参考技术A双向证书认证的双方称为client和server,首先为client和server生成证书。由于仅仅是自己学习使用,因此可以在本地自建一个CA,然后用CA的证书分别签发client和server的证书。CA的创建和签发使用OpenSSL。在windows环境上安装Ope... 查看详情

cer与pfx证书的加密与解密

...书管理器窗口1、点击“下一步”,系统提示是否将私钥导出,选择导出私钥,点击“下一步”注意:如果要将证书进行备份,请确定选择“导出私钥”,否则导出的证书将是不完整的(因为不含私钥)。2、选择保存文件格式为 查看详情

如何创建 android.jar 或者我从哪里得到它,以便我可以在 Java 库中使用 Android 的所有组件

】如何创建android.jar或者我从哪里得到它,以便我可以在Java库中使用Android的所有组件【英文标题】:Howtocreateandroid.jarORwheredoigetitsothaticanuseallthecomponantsofAndroidinJavaLibrary【发布时间】:2021-03-2721:02:16【问题描述】:我在AndroidStudio... 查看详情

使用openssl创建多级ca证书链签发证书并导出为pkcs12/p12/pfx文件(代码片段)

文章目录1.生成根CA证书并自签2.生成二级CA证书并使用CA根证书签发3.生成服务器证书并使用二级CA证书签发4.制作CA证书链5.打包为p12文件6.转化为keystore文件7.注意事项8.使用`opensslx509`和`opensslca`签发CA证书的差别操作... 查看详情

ca数字证书是啥?

ca数字证书是什么?CA[1]中心是国家认可的权威、可信、公正的第三方机构,专门负责发放并管理所有参与网上业务的实体所需的数字证书。数字证书是网路世界中的身份证。可以在网路世界中为互不见面的使用者建立安全可靠的... 查看详情