SSL-сертификат, созданный с помощью OpenSSL, не работает на NSS

У меня есть SSL-сертификат (key.pem, cacert.pem, pcert.pem), созданный с помощью OpenSSL на компьютере с Linux Mint. Теперь я пытаюсь перенести свое приложение на другой сервер, где установлена ​​Fedora 18 с NSS.

cURL возвращает эту ошибку:

unable to load client key: -8178 (SEC_ERROR_BAD_KEY)

Я проверил еще раз, и на моем компьютере все работает нормально, а на сервере нет. Я думаю, это потому, что я использовал OpenSSL для генерации сертификатов, но на сервере установлен NSS.

Я не могу найти, как генерировать сертификаты с помощью «certutil» или «openssl», чтобы они были действительны с NSS.


person 0x3d    schedule 19.03.2014    source источник
comment
Как вы создаете свои сертификаты с помощью openssl?   -  person jfly    schedule 19.03.2014
comment
А с чего начинается ваш ключевой файл? Я имею в виду -----BEGIN WHAT-----.   -  person jfly    schedule 19.03.2014
comment
Я генерирую с помощью: 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   -  person 0x3d    schedule 19.03.2014
comment
Мой сертификат начинается с: ----- НАЧАТЬ СЕРТИФИКАТ -----   -  person 0x3d    schedule 19.03.2014
comment
Как насчет закрытого ключа?   -  person jfly    schedule 19.03.2014


Ответы (1)


Сбой произошел из-за моего формата закрытого ключа PKCS#8:
— с закрытым ключом PKCS#8
-----BEGIN ENCRYPTED PRIVATE KEY----- header
или
-----BEGIN PRIVATE KEY----- header
curl+openssl работает, но не curl+ nss+libnsspem.so
— с закрытым ключом RSA
-----BEGIN RSA PRIVATE KEY----- header
работают как curl+openssl, так и curl+nss+libnsspem.so.

Поэтому используйте эту команду openssl rsa -in key.pem -out newkey.pem, чтобы удалить фразу-пароль для закрытого ключа RSA:

person jfly    schedule 19.03.2014
comment
Если вы не хотите удалять кодовую фразу из своего ключа, просто используйте другой алгоритм шифрования, который curl+nss успешно поймет. Используйте openssl rsa -des3 -in your.key -out your.encrypted.key для повторного шифрования. - person cronfy; 03.08.2017
comment
@cronfy, des3 — единственный шифр, который curl + nss, кажется, принимает в Centos 7.4. Есть идеи, что с этим делать? - person Ján Lalinský; 20.03.2018
comment
По-видимому, это известная ошибка, о которой сообщалось в 2016 году. nss-pem не поддерживает ключи, использующие шифрование, отличное от des. -- bugzilla.redhat.com/show_bug.cgi?id=1369251 - person Ján Lalinský; 20.03.2018