【Azure 环境】把OpenSSL生产的自签名证书导入到Azure Key Vault Certificate中报错

Key ,Azure,环境,Azure · 浏览次数 : 258

小编点评

**问题描述:** 在尝试通过本地生成的自签名证书导入到 Azure Key Vault Certificate 时,出现了错误。错误信息如下: ``` the specified PEM X.509 certificate content can not be read. Please check if certificate is in valid PEM format. Accepted formats: PEM content or Base64 encoded PEM content. ``` **解决方案:** 根据错误信息,解决问题需要确保导入的 PEM 证书格式正确。以下是两种解决方案: **解决方案一:将 Private Key 文件格式转换为 PEM 格式** 1. 使用 OpenSSL 命令将 Private Key 文件转换为 PEM 格式: ```bash openssl pkcs8 -topk8 -inform PEM -in testpkcs1.pem -passin pass:Password@123 -outform pem -nocrypt -out pkcs8.pem ``` **解决方案二:确保 PEM 证书格式符合 Key Vault 的要求** 1. 检查 Azure Key Vault 的证书导入格式要求: ``` -----BEGIN CERTIFICATE----- -----END CERTIFICATE----------BEGIN PRIVATE KEY----- -----END PRIVATE KEY----- ``` 2. 确保导入的 PEM 证书符合这种格式要求。如果证书格式不符合要求,请将证书格式进行修改。 **其他建议:** * 在导入证书之前,确保证书的签名验证成功。 * 使用 OpenSSL 命令查看证书的格式,以确保它符合要求。 * 如果您使用的是 .pfx 格式的证书,请确保证书内包含密钥。

正文

问题描述

通过本地生成的自签名证书导入到Azure Key Vault Certificate报错。

错误信息

the specified PEM X.509 certificate content can not be read. Please check if certificate is in valid PEM format. Accepted formats: PEM content or Base64 encoded PEM content.

或是

Private key is not specified in the specified X.509 PEM certificate content. Please specify private key in the X.509 PEM certificate content.

错误截图

 

问题解答

在错误描述中,指出了上传的PEM证书内容错误,根据官方文档介绍,PEM所支持的格式为

-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----

-----BEGIN PRIVATE KEY----- -----END PRIVATE KEY-----

说明一:

导入证书时,需要确保密钥包含在文件中。 如果你以另一种格式单独存储私钥,则需将该私钥与证书组合在一起。 某些证书颁发机构 (CA) 提供其他格式的证书。 因此,在导入证书之前,请确保该证书为 PEM 或 PFX 文件格式,并且密钥使用 Rivest-Shamir-Adleman (RSA) 或椭圆曲线加密 (ECC) 方式的加密。

说明二:

Azure Key Vault 支持 .pem 和 .pfx 证书文件(用于将证书导入到 Key Vault 中)。 对于 PEM 文件格式,我们支持以下导入类型。 单个 PEM 编码的证书,以及一个包含以下内容的 PKCS#8 编码和解密的密钥

-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----

-----BEGIN PRIVATE KEY----- -----END PRIVATE KEY-----

导入证书时,需要确保该密钥包含在文件本身中。 如果让私钥单独采用另一格式,则需将私钥与证书组合在一起。 某些证书颁发机构提供不同格式的证书,因此在导入证书之前,请确保证书采用 .pem 或 .pfx 格式。

 

根据提示,在检查导入证书的内容中发现编码格式不一致。一开始使用的Private Key格式为 “ -----BEGIN RSA PRIVATE KEY----- ” ,而不是满足要求的“ -----BEGIN PRIVATE KEY----- ”。所以需要对Private Key的文件进行格式转换。

 

第一步:转换Private Key的格式为

openssl pkcs8 -topk8 -inform PEM -in testpkcs1.pem -passin pass:Password@123 -outform pem -nocrypt -out pkcs8.pem

 

第二步:根据Private Key生成Public Key证书

openssl req -new -x509 -key pkcs8.pem -out certpk8.pem -passin pass:Password@123 -days 3650

 

第三步:根据Key Vault的要求,合并Public Key 和Private Key 

//Linux
cat certpk8.pem pkcs8.pem > importpk8.pem
//Windwos type certpk8.pem pkcs8.pem > importpk8.pem

最后,在Azure Key Vault中导入 importpk8.pem 证书,并输入正确的密码。导入自定义证书成功。

 

 

附录一:附上OpenSSL生成 .pfx 证书的指令, 生成的 Local.pfx 可以直接导入Key Vault中

openssl.exe req -x509 -nodes -sha256 -days 3650 -subj "/CN=Local" -newkey rsa:2048 -keyout Local.key -out Local.crt

openssl.exe pkcs12 -export -in Local.crt -inkey Local.key -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider" -out Local.pfx

 

附录二:PEM 和 PFX 证书内容的对比

Key Vault Certificate要求上传PEM的格式为:

-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----

-----BEGIN PRIVATE KEY----- -----END PRIVATE KEY-----

 

参考资料

Azure Key Vault 支持的导入格式https://docs.azure.cn/zh-cn/key-vault/certificates/certificate-scenarios#formats-of-import-we-support

How can I resolve a "Bad parameter" error? What are the supported certificate formats for importing to Key Vault? https://docs.azure.cn/zh-cn/key-vault/certificates/faq#----------------------------key-vault-

 
 

与【Azure 环境】把OpenSSL生产的自签名证书导入到Azure Key Vault Certificate中报错相似的内容:

【Azure 环境】把OpenSSL生产的自签名证书导入到Azure Key Vault Certificate中报错

问题描述 通过本地生成的自签名证书导入到Azure Key Vault Certificate报错。 错误信息 the specified PEM X.509 certificate content can not be read. Please check if certificate is in

【Azure 环境】Azure 云环境对于OpenSSL 3.x 的严重漏洞(CVE-2022-3602 和 CVE-2022-3786)的处理公告

问题描述 引用报告:(OpenSSL3.x曝出严重漏洞 : https://www.ctocio.com/ccnews/37529.html ) 最近OpenSSL 3.x 爆出了严重安全漏洞,分别是 CVE-2022-3602 和 CVE-2022-3786. CVE-2022-3602 缓冲区溢

【Azure 应用服务】如何来检查App Service上证书的完整性以及在实例中如何查找证书是否存在呢?

问题描述 1:如何来检查App Service上证书的完整性呢? 2:如何来检查App Service的实例上是否包含这个证书呢? Windows 环境 or Linux 环境? 问题解答 问题一:如何来检查App Service上证书的完整性呢? 可以使用OpenSSL工具来访问目标域名,根据输出

【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)

在前一篇文章中,我们是把.NET 8应用读取SSL证书(X509)示例部署在App Service Windows环境中,那么如果部署在Linux环境,以及Linux Container中呢? 根据前文中的第一种方法,直接在把证书文件包含在源文件中,通过相对路径读取证书文件的方式,经测试,可以正常工

【Azure 云服务】指标哪去了?在执行 Swap (交换生产部署和Staging部署) 操作后看不见云服务的旧指标

问题描述 打开云服务(Cloud Service)的Metrics页面,发现过去了指标不见了? 以虚点构成无数据的图表。 问题解答 查看云服务的活动日志(Activity Logs),发现最近执行的操作有: 1) 发布Staging 部署,把新版本应用先部署到预生产环境 2) 点击 Swap 按钮,

【Azure 环境】使用az login登录遇见OSError: [WinError -2146893813] : '' 错误

az login | Decryption failed:[WinError -2146893813] Key not vaid for use in specified state | msal_extensions.persistence: DPAPI error likely caused by file content not previously encrypted. App dev

【Azure 环境】Azure 流分析服务(Steam Analytics) 报出 OutputDataConversionError 错误引起延迟及超时

问题描述 Azure 流分析服务(Steam Analytics) 报出 OutputDataConversionError 错误引起延迟及超时。 查看详细错误: 问题解答 在错误消息中,有非常明确的提示:Cannot write event(s) to SQL Database due to is

【Azure 环境】向Azure Key Vault中导入证书有输入密码,那么导出pfx证书的时候,为什么没有密码呢?

问题描述 将pfx证书导入Key Vault的证书时,这个PFX需要输入正确的密码导入成功。但是当需要导出时,生成的pfx证书则不需要密码。这是正常的情况吗? 问题解答 是的,这是Azure Key Vault 证书导入/导出 功能的设计使然。当一个PFX不需要密码的时候,也可以直接导入到Azure

【Azure 环境】使用 az ad group create 时候遇见 Insufficient privileges to complete the operation

问题描述 使用China Azure,通过Azure CLI 创建AAD组报错,提示权限不足 Insufficient privileges to complete the operation # 使用这个登录: az login --service-principal --username xxx

【Azure 环境】中国区Azure是否可以根据资源组的模板,生成一个可视化的架构图呢?

问题描述 这是一个国际版链接(https://docs.microsoft.com/en-us/answers/questions/370410/how-to-generate-architecture-diagram-from-azure-re.html), 介绍如何从 Azure 资源生成架构图