【问题标题】:SSL certificate generated with OpenSSL not working on NSS使用 OpenSSL 生成的 SSL 证书不适用于 NSS
【发布时间】:2014-04-25 07:37:55
【问题描述】:

我在 Linux Mint 机器上使用 OpenSSL 生成了 SSL 证书(key.pem、cacert.pem、pcert.pem)。现在我正在尝试将我的应用程序移动到另一台安装了带 NSS 的 Fedora 18 的服务器。

cURL 返回此错误:

unable to load client key: -8178 (SEC_ERROR_BAD_KEY)

我再次测试,在我的计算机上工作正常,但在服务器上却不行。我认为这是因为我使用 OpenSSL 生成证书但在服务器上安装了 NSS。

我找不到如何使用“certutil”或“openssl”生成对 NSS 有效的证书。

【问题讨论】:

  • 如何使用 openssl 生成证书?
  • 您的密钥文件以什么开头?我的意思是-----BEGIN WHAT-----
  • 我生成:openssl pkcs12 -in YOURPFX.pfx -nocerts -out key.pem openssl pkcs12 -in YOURPFX.pfx -clcerts -nokeys -out pcert.pem openssl pkcs12 -in YOURPFX.pfx - cacerts -nokeys -out cacert.pem
  • 我的证书以:-----BEGIN CERTIFICATE-----开头
  • 私钥呢?

标签: curl ssl openssl certificate nss


【解决方案1】:

失败是由于我的 PKCS#8 私钥格式:
- 使用 PKCS#8 私钥
-----BEGIN ENCRYPTED PRIVATE KEY----- 标头

-----BEGIN PRIVATE KEY----- 标头
curl+openssl 有效,但 curl+nss+libnsspem.so
- 使用 RSA 私钥
-----BEGIN RSA PRIVATE KEY----- 标头
curl+openssl 和 curl+nss+libnsspem.so 都可以工作。

因此,请使用此命令 openssl rsa -in key.pem -out newkey.pem 删除 RSA 私钥上的密码:

【讨论】:

  • 如果您不想从您的密钥中删除密码,只需使用另一个加密算法,curl+nss 将成功理解。使用openssl rsa -des3 -in your.key -out your.encrypted.key重新加密。
  • @cronfy,des3 是 curl+nss 似乎在 Centos 7.4 上接受的唯一密码。有什么想法吗?
  • 显然这是一个已知的错误,报告于 2016 年。nss-pem 不支持使用除 des 之外的加密的密钥。 -- bugzilla.redhat.com/show_bug.cgi?id=1369251
猜你喜欢
  • 2016-12-04
  • 2015-05-05
  • 1970-01-01
相关资源
最近更新 更多