当我尝试将证书添加到 Firefox 的“您的证书选项卡”时,我收到此消息。我之前通过服务器(也是 CA)生成并签名了它。
无法解码文件。它不是 PKCS #12 格式、已损坏或您输入的密码不正确。
它要求我输入密码,然后就会出现此消息。怎么了?我正在关注这个教程。
更新#1
我使用的命令:
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -days 1024 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem \
-CAkey rootCA.key -CAcreateserial -out device.crt -days 500
添加的证书是 device.crt,您的证书选项卡上有 Firefox 请求的 PKS12。我应该改变它的格式吗?
答案1
1:确认证书文件类型
听起来您尝试导入的文件实际上不是 .pk12 文件。我将运行此命令来确认您要导入的文件的类型:
openssl pkcs12 -info -in keyStore.p12
您应该看到以下内容:
Enter Import Password:
MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
localKeyID: 74 FF 2A 04 58 90 06 B5 A0 5C EF DA C0 9B 6C AD 91 BD 1F 54
friendlyName: [friendly name]
subject=/C=US/ST=NY/O=My Company/OU=dept/CN=blah.blah.com
issuer=/O=My Company/OU=dept/[email protected]/L=My Town/ST=NY/C=US/CN=blah.blah.com
-----BEGIN CERTIFICATE-----
!!!REMOVED CERTIFICATE!!!!
-----END CERTIFICATE-----
Certificate bag
Bag Attributes: <No Attributes>
subject=/O=My Company/OU=dept/[email protected]/L=My Town/ST=NY/C=US/CN=blah.blah.com
issuer=/O=My Company/OU=dept/[email protected]/L=My Town/ST=NY/C=US/CN=blah.blah.com
-----BEGIN CERTIFICATE-----
!!!REMOVED CERTIFICATE!!!
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Bag Attributes
localKeyID: 74 FF 2A 04 58 90 06 B5 A0 5C EF DA C0 9B 6C AD 91 BD 1F 54
friendlyName: [friendly name]
Key Attributes: <No Attributes>
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----BEGIN ENCRYPTED PRIVATE KEY-----
!!!REMOVED CERTIFICATE!!!
-----END ENCRYPTED PRIVATE KEY-----
OP 运行上述命令并收到此错误:
your command didn't work
3077953260:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1320: 3077953260:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:382:Type=PKCS12
此错误告诉OP他们拥有的.crt文件不是pkcs12/pfx文件。
此时,OP 提出了另一个问题:“无法使用 CA 根密钥签署 CSR“他们曾询问过与同一问题相关的问题。
在阅读其中一条评论后,OP 实际上正在尝试将 .crt 文件加载到 Firefox 中的对话框中,该对话框需要 pkcs12/pfx 格式的证书。请参阅下文,了解如何将 .crt 转换为 pkcs12/pfx 证书。
2. Firefox“您的证书”对话框
我在 Firefox 支持论坛上发现了这个问题,标题为: 将 .crt 格式的证书安装到“您的证书”中其内容如下:
我有一个 .crt 格式的证书,需要位于“您的证书”选项卡中。
Firefox 仅允许使用 .p12 和 .pfx 格式的证书。
如何将此证书导入到“您的证书”选项卡中?
我尝试查看是否可以将 .crt 转换为 .p12,但没有成功。 (我能够转换为 .p7b 和 .spc 格式的相同证书)
由于听起来您有一个 .crt 文件,因此您可以使用 openssl 将其转换为 pkcs12/pfx 文件:
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key \
-out certificate.pfx -certfile CACert.cer
笔记:在该示例中,CACert.cer 将是 CA 的 .crt 文件。该命令将您的 .crt 文件和 CA 的 .crt 文件混合到 pkcs12/pfx 文件中。
OP 运行了这个命令:
sudo openssl pkcs12 -export -in certs/device.crt -inkey private/device.key -out safaa.pfx -certfile certs/myca.crt