1

У меня есть самозаверяющий сертификат (и CA), созданный на Mac с использованием OpenSSL 0.9.8zc. Я использую сертификат для безопасного подключения к моему серверу SVN. С последним обновлением OS X OpenSSL был обновлен до 0.9.8zd. Теперь я не могу подключиться к своему серверу, я получаю сообщение "Сбой проверки сертификата" от SVN.

Используя openssl, проверьте:

openssl verify -CAfile ~/Desktop/Certificates.pem -check_ss_sig  ~/Downloads/svn.pem

я получил

~/Downloads/svn.pem: /CN=My Open Directory Certification Authority/O=Me/OU=MACOSX OpenDirectory Root CA/emailAddress=webmaster@me
error 7 at 2 depth lookup:certificate signature failure

Похоже, что подпись моего ЦС теперь считается "сломанной". Мои вопросы:

  1. Как я могу продолжить расследование, чтобы выяснить, что именно "сломано" в моем сертификате, чтобы я не повторял эту ошибку?

  2. Есть ли способ исправить этот недостаток переиздания каждого сертификата, начиная с CA?

3 ответа3

1

Кажется, что это проблема с Certificate Assistant, производящим слегка искаженные сертификаты, которые отклоняются новыми более жесткими проверками openssl 0.9.8zd. Это происходит из обсуждения на openssl.org 1

В конце он включает скрипт python для исправления сертификата .pem, который мне удалось успешно использовать, я цитирую его в случае, если ссылка не работает ...

from pyasn1.codec.der import decoder, encoder   
from pyasn1_modules import pem, rfc2459

cert_der = pem.readPemFromFile(open("RabbitMQ_Test.pem", "r"))
        cert, _ = decoder.decode(cert_der, asn1Spec=rfc2459.Certificate())

cert.setComponentByName("signatureAlgorithm",
                                cert.getComponentByName("tbsCertificate").
                                getComponentByName("signature"))

fixed_cert_pem = open("RabbitMQ_Test_Fixed.pem", "w")
fixed_cert_pem.write("-----BEGIN CERTIFICATE-----\n")
fixed_cert_pem.write(encoder.encode(cert).encode("base64"))
fixed_cert_pem.write("-----END CERTIFICATE-----\n")
fixed_cert_pem.close()
0

Если вы используете OS X 10.10.3 и это только начало происходить:

NB: Это временный обходной путь, похоже, проблема еще выше

Я неожиданно начал видеть эту ошибку в результате обновления OSX до 10.10.3 - как вы сказали, похоже, что разрыв вызван новой версией OpenSSL (0.9.8zd), которую они включили.

В качестве обходного пути, пока мы не дойдем до сути, если это, я использовал пакет OpenSSL доморощенного -

$ brew update
$ brew install openssl
$ brew link openssl --force 

вам также может понадобиться обновить устаревшие сертификаты, которые с помощью rvm - всего лишь случай запуска

$ rvm osx-ssl-certs update all

Но по звуку вы знаете, что вы там делаете

Стоит также отметить , что доморощенный рекомендует не связывать OpenSSL, так как только это сортируется вверх по течению вы, вероятно , хотите , чтобы запустить эту функцию, чтобы навести порядок , мы сделали:

$ brew unlink openssl 
0

У меня была похожая проблема при попытке подключиться к серверу Apache, работающему на 10.10.3, используя сертификаты клиента и сервера. Сценарий python работал над сертификатом сервера SSL для использования Apache, но Safari все еще не мог подключиться к серверу с помощью сертификата клиента в цепочке для ключей; сервер Apache отклонял сертификат клиента.

Мне пришлось экспортировать сертификат клиента, использовать скрипт Python и импортировать его обратно в цепочку для ключей, чтобы заменить оригинал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .