Назад | Перейти на главную страницу

Ошибка SSL: самоподписанный сертификат в цепочке сертификатов

РЕДАКТИРОВАТЬ: как описано в следующих документах http://www.novell.com/support/kb/doc.php?id=7002392 я объединил эти файлы вот так domain.crt sf_bundle.crt >> domain.pem и теперь следующая команда openssl s_client -connect domain:465 жалуется на verify error:num=19:self signed certificate in certificate chain Надеюсь, кто-то может помочь найти ключ к разгадке: D

Я только что настроил наш mta через postfix, который предлагает IMAP и SMTP через TLS. Во время тестирования я создал самоподписанный сертификат, но теперь, чтобы избежать раздражающего предупреждения о ненадежном сертификате, я купил дешевый сертификат в Godaddy; http://www.godaddy.com/compare/gdcompare3_ssl.aspx

Проблема здесь в том, что я делаю что-то не так, вероятно, при установке загруженного сертификата Godaddy, поэтому я все еще вижу предупреждение.

Ниже приведен процесс, с которым я столкнулся:

openssl genrsa -des3 -out domain.key 1024
openssl req -new -key domain.key -out domain.csr

Зашел в Godaddy, вставил содержимое файла csr, включая теги being и end. В этот момент я смог загрузить сгенерированный сертификат, который был zip-файлом, поэтому теперь у меня есть следующие файлы:

sf_bundle.crt ;Chain file, on't know how should be used
domain.crt ;Provided along with sf_bundle by Godaddy
domain.csr ;Genrated by me
domain.key ;Genrated by me

Не знаю, как мне поступить, но я сделал следующее:

cat domain.crt sf_bundle.crt >> /etc/ssl/certs/domain.pem
ln -sf /path/to/domain.key /etc/ssl/private/domain.key  

Но при тестировании возникает следующая проблема:

    openssl s_client -connect imap.domain.ltd:465
CONNECTED(00000003)
depth=2 C = US, O = "Starfield Technologies, Inc.", OU = Starfield Class 2 Certification Authority
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
 0 s:/OU=Domain Control Validated/CN=webeloping.es
   i:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435
 1 s:/C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435
   i:/C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority
 2 s:/C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority
   i:/C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFcjCCBFqgAwIBAgIHKx6Jb01O+jANBgkqhkiG9w0BAQUFADCB3DELMAkGA1UE
BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAj
BgNVBAoTHFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOTA3BgNVBAsTMGh0
dHA6Ly9jZXJ0aWZpY2F0ZXMuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3NpdG9yeTEx
MC8GA1UEAxMoU3RhcmZpZWxkIFNlY3VyZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
eTERMA8GA1UEBRMIMTA2ODg0MzUwHhcNMTMwNzEyMDc1NTA0WhcNMTQwNzExMTcz
MTAyWjA7MSEwHwYDVQQLExhEb21haW4gQ29udHJvbCBWYWxpZGF0ZWQxFjAUBgNV
BAMTDXdlYmVsb3BpbmcuZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQDTAHQM3SanFxSZWnxls837ySCHB/CfBJXIBoKQdYOf/N3lGt69jnNHF8X2ZmSI
TeW5Xk/wXnjruKD/EhBvAxiYZVWcp5zJGxd6VNqntiFCVTSesSnwM/X6A54vq/57
UnvrqK7ZozWnINiO/LIWxdVCUwcOmXH+fp6mVUsCbNd8Gp1HpMorhzpvBj1E/5I4
HbZjErGfrLlCYhs2cATtTcBtiUxne3CKOsT/sWd3Z2DAKsJQqd5u3Y59EEfiJmDq
xtoCkfYAhZz5FkA9mr2PQD+UKGLOGjvRDI7P8p5RR9ZG7jixdok5qq0OikCPwex4
hatfWEokBjmWcmr8QcUk1cQjAgMBAAGjggHXMIIB0zAPBgNVHRMBAf8EBTADAQEA
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8BAf8EBAMCBaAw
OQYDVR0fBDIwMDAuoCygKoYoaHR0cDovL2NybC5zdGFyZmllbGR0ZWNoLmNvbS9z
ZnMxLTI1LmNybDBZBgNVHSAEUjBQME4GC2CGSAGG/W4BBxcBMD8wPQYIKwYBBQUH
AgEWMWh0dHA6Ly9jZXJ0aWZpY2F0ZXMuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3Np
dG9yeS8wgY0GCCsGAQUFBwEBBIGAMH4wKgYIKwYBBQUHMAGGHmh0dHA6Ly9vY3Nw
LnN0YXJmaWVsZHRlY2guY29tLzBQBggrBgEFBQcwAoZEaHR0cDovL2NlcnRpZmlj
YXRlcy5zdGFyZmllbGR0ZWNoLmNvbS9yZXBvc2l0b3J5L3NmX2ludGVybWVkaWF0
ZS5jcnQwHwYDVR0jBBgwFoAUSUtSJ9EbvPKhIWpie1FCeorX1VYwKwYDVR0RBCQw
IoINd2ViZWxvcGluZy5lc4IRd3d3LndlYmVsb3BpbmcuZXMwHQYDVR0OBBYEFJp4
5TYP4T3BfuI67Ek2vxtUNiVCMA0GCSqGSIb3DQEBBQUAA4IBAQBjXFPi/3e3GJ+J
Pj7Rafieee4Tqcc5QbwKvrFEdK3OW9/XjntchNOsKumKFJeiK8bsUbSTS+wlpyKG
+qHwrf8d1TtZgKiyJTBHcKxItqSrGsULM5ntTFq/gchOkE0hwK4vfwHZD9bHyy20
CqexuaTT3zpAL3zZi5q2QaOpqQxhPmlkIZvmNotw+a/E+3hmOFKpQtVfT7XeAcQr
bIUMZUEbs778VzjnKdg4grD7oZxwPczbaeJLhdvKs8OEJSbqX/820hLQfoX+wMCI
PNI1jPU3th1cu9nPKU41BXIDY1L6w9zCl2DRvQvjFx9YnjQ/R6YiyaCCh39WS+xg
+An9srwv
-----END CERTIFICATE-----

Связанная конфигурация в постфиксе выглядит так:

    ## /etc/postfix/main.cf
    ##Provided by Godaddy along with sf_bundle.crt
    smtpd_tls_cert_file=/etc/ssl/certs/domain.crt
    ##Generated by me
    smtpd_tls_key_file=/etc/ssl/private/domain.key
    smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt

Вам не нужен корневой сертификат в цепочке (хотя я не думаю, что это что-то повредит).

Я думаю, что в данном случае эта ошибка является скорее предупреждением от openssl. Я считаю, что это означает, что openssl не знает, что он должен доверять корневому сертификату этой цепочки. Если вы вытащите только корневой сертификат из этого пакета и укажете на него команду openssl с -CAfile аргумент, я ожидаю, что "ошибка" должна исчезнуть.

Внутри файла sf_bundle.crt вы должны увидеть два

-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----

блоки (возможно, с простым текстом над каждым блоком, показывающим, какой сертификат содержит блок). Если вы разделите каждый из этих блоков на отдельный файл, в результате вы получите block1.crt и block2.crt ты должен уметь бежать openssl x509 -noout -subject -in <file.crt> на каждом из них, чтобы получить соответствующие строки темы сертификата.

При условии, что block2.crt имеет тему /C=US/O=Starfield Technologies, Inc./OU=Starfield Class 2 Certification Authority тогда вы сможете запустить openssl s_client -CAfile block2.crt -connect imap.domain.ltd:465 и это должно, надеюсь, подключиться без выдачи ошибки самозаверяющего сертификата.

Если ты действительно сделал

domain.key domain.crt sf_bundle.crt >> domain.pem

затем вы включили в цепочку свой закрытый ключ, чего не следует делать.

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