问题描述

通过本地生成的自签名证书导入到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中报错的更多相关文章

  1. 【Azure 环境】使用Microsoft Graph PS SDK 登录到中国区Azure, 命令Connect-MgGraph -Environment China xxxxxxxxx 遇见登录错误

    问题描述 通过PowerShell 连接到Microsoft Graph 中国区Azure,一直出现AADSTS700016错误, 消息显示 the specific application was ...

  2. 【Azure 环境】在Windows系统中 使用Terraform创建中国区Azure资源步骤(入门级)

    Terraform(全称:Hashicorp Terraform )是一种开源工具,用于预配和管理云基础结构. 它将基础结构编入描述云资源拓扑的配置文件中. 这些资源包括虚拟机.存储帐户和网络接口等. ...

  3. 【Azure Developer - 密钥保管库 】使用 Python Azure SDK 实现从 Azure Key Vault Certificate 中下载证书(PEM文件)

    问题描述 在Azure Key Vault中,我们可以从Azure门户中下载证书PEM文件到本地. 可以通过OpenSSL把PFX文件转换到PEM文件.然后用TXT方式查看内容,操作步骤如下图: Op ...

  4. IIS 使用OpenSSL 生成的自签名证书,然后使用SingalR 客户端访问Https 站点通信

    使用SignalR 的客户端去发送消息给使用 https 部署的站点,官方文档目前并没有详细的教程,所以在此记录下步骤: 使用管理员身份打开cmd 窗口,选择一个整数保存文件夹的地址,切换到对应的文件 ...

  5. 在 Azure 中的 Linux 虚拟机上使用 SSL 证书保护 Web 服务器

    若要保护 Web 服务器,可以使用安全套接字层 (SSL) 证书来加密 Web 流量. 这些 SSL 证书可存储在 Azure Key Vault 中,并可安全部署到 Azure 中的 Linux 虚 ...

  6. Akka-CQRS(13)- SSL/TLS for gRPC and HTTPS:自签名证书产生和使用

    到现在,我们已经完成了POS平台和前端的网络集成.不过,还是那句话:平台系统的网络安全是至关重要的.前一篇博客里我们尝试实现了gRPC ssl/tls网络连接,但测试时用的证书如何产生始终没有搞清楚. ...

  7. 在 Azure 中的 Windows 虚拟机上使用 SSL 证书保护 IIS Web 服务器

    若要保护 Web 服务器,可以使用安全套接字层 (SSL) 证书来加密 Web 流量. 这些 SSL 证书可存储在 Azure Key Vault 中,并可安全部署到 Azure 中的 Windows ...

  8. nginx配置https及Android客户端访问自签名证书

    前一篇随笔通过keytool生成keystore并为tomcat配置https,这篇随笔记录如何给nginx配置https.如果nginx已配置https,则tomcat就不需要再配置https了.通 ...

  9. 【Azure Developer】Python代码通过AAD认证访问微软Azure密钥保管库(Azure Key Vault)中机密信息(Secret)

    关键字说明 什么是 Azure Active Directory?Azure Active Directory(Azure AD, AAD) 是 Microsoft 的基于云的标识和访问管理服务,可帮 ...

随机推荐

  1. Python 工匠:一个关于模块的小故事

    前言 模块(Module)是我们用来组织 Python 代码的基本单位.很多功能强大的复杂站点,都由成百上千个独立模块共同组成. 虽然模块有着不可替代的用处,但它有时也会给我们带来麻烦.比如,当你接手 ...

  2. 理想汽车 x JuiceFS:从 Hadoop 到云原生的演进与思考

    理想汽车在 Hadoop 时代的技术架构 首先简单回顾下大数据技术的发展,基于我个人的理解,将大数据的发展分了4个时期: 第一个时期: 2006 年到 2008 年.2008 年左右,Hadoop 成 ...

  3. HTML <option> 标签的属性:selected ; disabled ; label ; value;

    HTML <option> 标签的属性:selected ;  disabled ; label ; value; 1. selected="selected" sel ...

  4. node前后端交互(Express)

    1. Express框架是什么 1.1 Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用.我们可以使用 npm install expres ...

  5. Springboot连接数据库

    好家伙, 这里使用的软件是IDEA 2021 1.新建项目 2.更改配置项目文件目录 更改前: 更改后: 2.1.更改pom.xml文件 在该文件中添加: <dependency> < ...

  6. Linux常用基础命令一

    一.目录操作 进入路径 cd [目录地址] 切换回主目录 cd 返回上一个路径 cd - 打印当前路径 pwd 列出目录下文件 ls ---查看只包含非隐藏文件 ls -a -----查看目录下所有文 ...

  7. ASP.NET MVC 对于视图引擎的优化

    我经常使用asp.net MVC框架来做网站.总的来说,MVC框架是一个非常优秀的框架.相对于曾经的web form模式,我个人感觉分工更加合理思路也更加清晰,但是交给开发人员的工作也相对变多了. 当 ...

  8. selenium爬取图片

    一.https/http开头的图片 1.我们以百度为例,下载百度图片到本地. 2.定位到该元素的img标签 from selenium import webdriver from selenium.w ...

  9. ProxySQL的双层用户认证机制

    转载自:https://www.likecs.com/show-203802325.html 如果使用了ProxySQL来做中间路由,那么与我们平时登录数据库有一些区别:平时我们直接使用数据库的用户密 ...

  10. MySQL5.7之在线DDL不会锁表

    MySQL5.7在线修改varchar字段不在锁表,测试过程如下: mysql> select version(); +------------+ | version() | +-------- ...