我尝试将 IIS 中的中央证书存储 (CCS) 与使用 OpenSSL 3.0.7 生成的 .pfx 文件结合使用。但是,当 IIS 中央证书存储尝试导入 .pfx 文件时,我收到“错误数据”错误。
详情:
OpenSSL 版本:3.0.7(库:OpenSSL 3.0.7 2022 年 11 月 1 日)
openssl pkcs12 -export -out /certificates/mydomain.com.pfx -inkey /etc/letsencrypt/live/mydomain.com/privkey.pem -in /etc/letsencrypt/live/mydomain.com/cert.pem -certfile /etc/letsencrypt/live/mydomain.com/fullchain.pem -passout pass:MYPASSWORD -nomac -legacy
问题:
当中央证书存储看到 .pfx 文件时,IIS 管理器会显示“错误数据”错误。
还有其他主题建议使用
openssl pkcs12 -export -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac -out
这会导致错误
我尝试过包含以下命令选项的所有组合
-certpbe PBE-SHA1-3DES
-keypbe PBE-SHA1-3DES
-nomac
-legacy
所有结果都导致相同的错误“错误数据”
不使用这些选项
openssl pkcs12 -export -out /certificates/mydomain.com.pfx -inkey /etc/letsencrypt/live/mydomain.com/privkey.pem -in /etc/letsencrypt/live/mydomain.com/cert.pem -certfile /etc/letsencrypt/live/mydomain.com/fullchain.pem -passout pass:MYPASSWORD
导致错误“指定的私钥密码不正确”
“错误数据”错误和“指定的私钥密码不正确”错误表明 IIS 可能与 OpenSSL 3.0.7 使用的默认加密方法不兼容。
您可以尝试以下一些步骤来解决此问题:
在 OpenSSL 中使用兼容性标志
由于 IIS 可能对 OpenSSL 3.0.x 中默认使用的加密算法存在问题,因此您可以尝试使用强制执行旧加密方法的兼容性标志。这是一个应该有效的命令:
openssl pkcs12 -export -out /certificates/mydomain.com.pfx -inkey /etc/letsencrypt/live/mydomain.com/privkey.pem -in /etc/letsencrypt/live/mydomain.com/cert.pem -certfile /etc/letsencrypt/live/mydomain.com/fullchain.pem -passout pass:MYPASSWORD -legacy -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -nomac
使用不同版本的 OpenSSL
如果上述方法不起作用,您可以尝试使用旧版本的 OpenSSL(例如 1.1.1)生成 .pfx 文件,众所周知,该版本与 IIS 更兼容:
在您的系统上安装 OpenSSL 1.1.1(如果尚未安装)。
使用以下命令生成 .pfx 文件:
openssl pkcs12 -export -out /certificates/mydomain.com.pfx -inkey /etc/letsencrypt/live/mydomain.com/privkey.pem -in /etc/letsencrypt/live/mydomain.com/cert.pem -certfile /etc/letsencrypt/live/mydomain.com/fullchain.pem -passout pass:MYPASSWORD