... ошибка: 14090086: подпрограммы SSL: ssl3_get_server_certificate: ошибка проверки сертификата "
Вы подключаетесь к серверу с именем sphinx.dcu.ie
:
$connection = new AMQPSSLConnection('sphinx.dcu.ie', 5671, ...)
Однако имя хоста в сертификате - samqp.dcu.ie
:
X509v3 Subject Alternative Name:
DNS:samqp.dcu.ie
Вам нужно сделать одно из двух. Сначала сделайте запрос RabbitMQ к серверу, указанному в сертификате. Или, во-вторых, получите новый сертификат с тем DNS-именем, которое вы хотите использовать.
Вы можете поместить любое количество DNS-имен в Альтернативное имя субъекта (SAN). Я часто наполняю их названиями для отладки и тестирования, например localhost
, localhost.localdomain
и 127.0.0.1
.
ИЗМЕНИТЬ: для этой проблемы:
... и в журнале сервера теперь написано:
=ERROR REPORT==== 3-Mar-2016::09:52:41 ===
SSL: certify: ssl_handshake.erl:1490:Fatal error: unknown ca
Вам необходимо вернуться к информации для версии 9 или около того вашего вопроса и этой информации:
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA
verify return:1
depth=1 C = NL, ST = Noord-Holland, L = Amsterdam, O = TERENA, CN = TERENA SSL High Assurance CA 3
verify return:1
depth=0 businessCategory = Government Entity, jurisdictionC = IE, serialNumber = Government Entity, street = Glasnevin, street = Dublin City University, postalCode = IE, C = IE, ST = Ireland, L = Dublin, O = Dublin City University, OU = ISS, CN = samqp.dcu.ie
verify return:1
Вам не нужен файл ca-cert.pem
, который включает сотни центров сертификации, большинство из которых неверны. Вам нужен только один правильный CA, и это когда-то назывался DigiCert High Assurance EV Root CA. Вам также понадобится промежуточный сертификат под названием TERENA SSL High Assurance CA 3.
Корневой ЦС DigiCert High Assurance EV сертификат
Вы можете загрузить DigiCert High Assurance EV Root CA со страницы Сертификаты доверенных корневых центров DigiCert. Он имеет следующие атрибуты:
- Серийный номер: 02: AC: 5C: 26: 6A: 0B: 40: 9B: 8F: 0B: 79: F2: AE: 46: 25: 77
- Отпечаток: 5FB7EE0633E259DBAD0C4C9AE6D38F1A61C7DC25
Когда вы загружаете его, он находится в формате DER. Вам необходимо преобразовать его в формат PEM с помощью:
$ openssl x509 -inform der -in DigiCertHighAssuranceEVRootCA.crt \
-outform PEM -out DigiCertHighAssuranceEVRootCA.pem
Потом:
$ cat DigiCertHighAssuranceEVRootCA.pem
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
...
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
+OkuE6N36B9K
-----END CERTIFICATE-----
Сертификат TERENA SSL High Assurance CA 3
Теперь вам нужно сделать то же самое с TERENA SSL High Assurance CA 3. Думаю, вы можете найти его на TERENA Корневые сертификаты ЦС высокой надежности SSL. Это тот, у которого есть атрибуты:
- Серийный номер 0b: 5c: 34: 35: 67: 5b: 24: 67: c0: d7: 32: 37: f9: 0d: 5f: 94
- Отпечаток пальца SHA1 A7: 8A: AB: DE: 7F: 5B: 77: 15: 40: D3: 33: B5: 05: 87: 4C: 82: 04: AA: D2: 06
MY-CACERT.pem
Теперь, когда у вас есть центры сертификации, необходимые для построения пути, выполните следующие действия:
$ cat DigiCertHighAssuranceEVRootCA.pem > my-cacert.pem
$ cat TERENA_SSL_High_Assurance_CA_3.pem >> my-cacert.pem
$ echo "" >> my-cacert.pem
Потом:
$ cat my-cacert.pem
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
...
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
+OkuE6N36B9K
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE4DCCA8igAwIBAgIQC1w0NWdbJGfA1zI3+Q1flDANBgkqhkiG9w0BAQsFADBs
...
dnnqz5SeAs6cbSm551qG7Dj8+6f/8e33oqLC5Ldnbt0Ou6PjtZ4O02dN9cnicemR
1B0/YQ==
-----END CERTIFICATE-----
Наконец, используйте my-cacert.pem
.
У вас должна быть возможность тестировать с помощью s_client
OpenSSL. Но я не могу подключиться к внешнему миру:
$ openssl s_client -connect sphinx.dcu.ie:5671 -tls1 \
-servername sphinx.dcu.ie -CAfile my-cacert.pem
Если вы можете подключиться, вы должны получить Verify Ok (0)
(если я правильно помню).
person
jww
schedule
02.03.2016
openssl s_client -connect <hostname>:<port> -tls1 -servername <hostname> | openssl x509 -text -noout
. Сделайте это, добавив его к своему вопросу, нажав Изменить (и не публикуйте его как комментарий). В противном случае мы не сможем воспроизвести его, а информации для устранения неполадок недостаточно. - person jww   schedule 01.03.2016