2014-03-19 116 views
5

我擁有在Linux Mint機器上使用OpenSSL生成的SSL證書(key.pem,cacert.pem,pcert.pem)。現在我試圖將我的應用程序移動到另一臺安裝了NSS的Fedora 18。使用OpenSSL生成的SSL證書在NSS上不起作用

捲曲返回此錯誤:

unable to load client key: -8178 (SEC_ERROR_BAD_KEY) 

我再次測試,並在我的電腦上工作正常,但在服務器上沒有。我認爲這是因爲我使用OpenSSL來生成證書,但在服務器上安裝了NSS。

我無法找到如何使用「certutil」或「openssl」生成與NSS一起生效的證書。

+0

你如何生成的OpenSSL您的證書? – jfly

+0

你的密鑰文件是以什麼開頭的?我的意思是'-----開始什麼-----'。 – jfly

+0

我生成:OpenSSL的PKCS12 -in YOURPFX.pfx -nocerts退房手續key.pem OpenSSL的PKCS12 -in YOURPFX.pfx -clcerts -nokeys退房手續pcert.pem OpenSSL的PKCS12 -in YOURPFX.pfx -cacerts -nokeys - out cacert.pem – daniftodi

回答

10

的失敗是由於我的PKCS#8私鑰格式:
- 對於PKCS#8私鑰
-----BEGIN ENCRYPTED PRIVATE KEY-----

-----BEGIN PRIVATE KEY-----
捲曲+ OpenSSL的作品,但不捲曲+ NSS + libnsspem.so
- 對於RSA私鑰
-----BEGIN RSA PRIVATE KEY-----
都捲曲+ OpenSSL和捲曲+ NSS + libnsspem.so工作。

因此,使用此命令openssl rsa -in key.pem -out newkey.pem刪除的RSA私鑰密碼短語:

+1

謝謝,這對我有用。 – daniftodi

+0

如果你不想從你的密鑰中刪除密碼,只需使用另一個加密算法,curl + nss將成功理解。使用'openssl rsa -des3 -in your.key -out your.encrypted.key'來重新加密它。 – cronfy