【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 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-
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十