Windows:当证书和私钥位于单独的文件中时,如何导入?

问题描述

我正在尝试使用certmgr.msc管理单元导入证书。

我的证书在.crt文件中:

-----BEGIN CERTIFICATE-----
MIIDezCCAmMCCQDFkO/4a6XfiDANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJT
...
ncpMXzlNEE77e45mpTC/WWgoqQb7XMI+S1iPbluBVw==
-----END CERTIFICATE-----

私钥位于.key文件中,我具有密码

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,FE5EDCD941BAD3DF54D29902EAB5EE48

9zZcw6zCfL6u8/HuBD/a57GSjAYb3DYzdjN8colcbWDTOSBpmbilapKdXd/XmVlM
.....
rjxIMhRRKCtdN0WZHwKU9wO/sAzllrx9lyt7qeEc3wSYYMD6bvdFjA9CXE27eQqW
-----END RSA PRIVATE KEY-----

导入向导仅允许选择一个文件。我试图将上述两个文件组合成一个文件,但是导入会忽略私钥。

我尝试将RSA PRIVATE KEY部分放在CERTIFICATE部分之前,但是导入显示The file type is not recognizable.

我读到.pem文件只是一个容器,可以同时包含证书和私钥。将两个文件合并为一个,我错过了什么?

解决方法

  1. 从私钥文件中删除PEM标头和页脚之间的所有非base64内容。在给定的情况下,请从私钥文件中删除以下行:

    过程类型:4,已加密 DEK-Info:AES-256-CBC,FE5EDCD941BAD3DF54D29902EAB5EE48

  2. 重命名密钥文件以匹配证书文件名,例如mycert.pemmycert.key,其中mycert.pem是公用证书文件,mycert.key是私钥文件。并将它们放在同一文件夹中。然后运行以下certutil.exe命令:

certutil -mergepfx mycert.pem mycert.pfx

其中mycert.pfx是PFX的输出文件。系统将提示您创建PFX保护密码。