s_client не отказывает на отозванном сертификате?

3164
jww

Я использую Firefox с HTTPS везде в EFF . Я недавно посетил сайт Lavabit, чтобы узнать, принимает ли он пожертвования:

enter image description here

Отмена ожидается с учетом истории ....

Тем не менее, я не дублирую результат с помощью OpenSSL s_client. Ниже я получаю Verify return code: 3 (unable to get certificate CRL)что есть X509_V_ERR_UNABLE_TO_GET_CRL, а не X509_V_ERR_CERT_REVOKED: certificate revoked. Команда:

openssl s_client -connect lavabit.com:443 -crl_check -CAfile valicert_class2_root.crt 

Файл CA можно найти в цепочке сертификатов ValiCert Legacy .

$ echo -e "GET / HTTP/1.0\r\n" | openssl s_client -connect lavabit.com:443 -crl_check -CAfile valicert_class2_root.crt  CONNECTED(00000003) depth=0 O = *.lavabit.com, OU = Domain Control Validated, CN = *.lavabit.com verify error:num=3:unable to get certificate CRL verify return:1 depth=3 L = ValiCert Validation Network, O = "ValiCert, Inc.", OU = ValiCert Class 2 Policy Validation Authority, CN = http://www.valicert.com/, emailAddress = info@valicert.com verify return:1 depth=2 C = US, O = "The Go Daddy Group, Inc.", OU = Go Daddy Class 2 Certification Authority verify return:1 depth=1 C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certificates.godaddy.com/repository, CN = Go Daddy Secure Certification Authority, serialNumber = 07969287 verify return:1 depth=0 O = *.lavabit.com, OU = Domain Control Validated, CN = *.lavabit.com verify return:1 --- Certificate chain 0 s:/O=*.lavabit.com/OU=Domain Control Validated/CN=*.lavabit.com i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certificates.godaddy.com/repository/CN=Go Daddy Secure Certification Authority/serialNumber=07969287 1 s:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certificates.godaddy.com/repository/CN=Go Daddy Secure Certification Authority/serialNumber=07969287 i:/C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority 2 s:/C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority i:/L=ValiCert Validation Network/O=ValiCert, Inc./OU=ValiCert Class 2 Policy Validation Authority/CN=http://www.valicert.com//emailAddress=info@valicert.com 3 s:/L=ValiCert Validation Network/O=ValiCert, Inc./OU=ValiCert Class 2 Policy Validation Authority/CN=http://www.valicert.com//emailAddress=info@valicert.com i:/L=ValiCert Validation Network/O=ValiCert, Inc./OU=ValiCert Class 2 Policy Validation Authority/CN=http://www.valicert.com//emailAddress=info@valicert.com --- Server certificate -----BEGIN CERTIFICATE----- MIIFWTCCBEGgAwIBAgIHJ3H9XXOouzANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY BgNVBAoTEUdvRGFkZHkuY29tLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydGlm aWNhdGVzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkxMDAuBgNVBAMTJ0dvIERhZGR5 IFNlY3VyZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTERMA8GA1UEBRMIMDc5Njky ODcwHhcNMTIwMjE3MDQwNzQ2WhcNMTcwMjE3MDQwNzQ2WjBTMRYwFAYDVQQKDA0q LmxhdmFiaXQuY29tMSEwHwYDVQQLDBhEb21haW4gQ29udHJvbCBWYWxpZGF0ZWQx FjAUBgNVBAMMDSoubGF2YWJpdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQDPMNYGqnkvQBSlaen/VYxIdA57nANIYAAY4Nkt148BDgHdcgNJjjH7 YI9EM0hPRXF8lvU9F+dA0ejaxYz0KQMxzXS+uvfv2nPS97+HI3qlD9Tr4MsJRS2c 5TzUNQ03CxC9QCpMywwQJ/9KBCALCAjzlNalWCf1U2Vb7Q9+YKUa9YlPnVpOudSH Z6H7y3+hAydrP/Wq6H8KP29xlExj8KNzY3EqVRqJvLQ+oVre4bqPO4FdWsSOGVGr oMEXBTZewkefAN8PBk3lJ4ka/SLgiQtxnw2aNkKM2zw/wzPZU2Ri+J7sdCBd2aKy YnfTn59ZELu5Kv/JdzARCcYMJ1GSI95pAgMBAAGjggG4MIIBtDAPBgNVHRMBAf8E BTADAQEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAOBgNVHQ8BAf8E BAMCBaAwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nb2RhZGR5LmNvbS9n ZHMxLTY0LmNybDBTBgNVHSAETDBKMEgGC2CGSAGG/W0BBxcBMDkwNwYIKwYBBQUH AgEWK2h0dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS8w gYAGCCsGAQUFBwEBBHQwcjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZ29kYWRk eS5jb20vMEoGCCsGAQUFBzAChj5odHRwOi8vY2VydGlmaWNhdGVzLmdvZGFkZHku Y29tL3JlcG9zaXRvcnkvZ2RfaW50ZXJtZWRpYXRlLmNydDAfBgNVHSMEGDAWgBT9 rGEyk2xF1uLuhV+auud2mWjM5zAlBgNVHREEHjAcgg0qLmxhdmFiaXQuY29tggts YXZhYml0LmNvbTAdBgNVHQ4EFgQU8/u0eeUoWQaMfxTlv9NohxLD0dMwDQYJKoZI hvcNAQEFBQADggEBAAUIImu3UtjasUc9ACCaoobHUWxU3SS1KQfGvt77NKIjzAuR 65H3lR7wQcVi4Ke4C/OXgyq4md5Q9W7s3IlbW++MdtFhzM8WG6yuI66C3zHG+DP4 qov8X7ckqrRU50cE1CAh/HZHIvGRYqKVjdxI/8ReX6DS6C8NaDHXaLsO/aClKuxQ 3J5WsqipUKsbhoDj6Z18yRFmdCks2+ySNPEF6YIz5/hYyPipeyWUqY8FIFSqmm0E NHhiBp2s/3gROk2bIg1qxlNFnSRTttLQg6wEX8CGQ9EsTcqNk3LsdknZXlTQ7JCN hK7okkwwXgUdFUkWZQej9XhWFAqkbCvC9hVI1Aw= -----END CERTIFICATE----- subject=/O=*.lavabit.com/OU=Domain Control Validated/CN=*.lavabit.com issuer=/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certificates.godaddy.com/repository/CN=Go Daddy Secure Certification Authority/serialNumber=07969287 --- No client certificate CA names sent --- SSL handshake has read 5357 bytes and written 715 bytes --- New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : DHE-RSA-AES256-SHA Session-ID: 67541EBB72FADE3B388F12AD47964AFE... Session-ID-ctx:  Master-Key: A070BD05576771DD47459ED6071807FC... Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None Start Time: 1397614017 Timeout : 300 (sec) Verify return code: 3 (unable to get certificate CRL) --- DONE 

Сертификат сервера указывает на действительный CRL.

Есть идеи, что я могу делать не так?

4
Этот второй отзыв произошел из-за Heartbleed, хотя я клянусь, что сертификационная замена заменяет идеальную секретность. На данный момент я ничего не доверяю OpenSSL Ramhound 10 лет назад 0
Сертификат не имеет ничего общего с PFS. PFS просто использует обмен ключами DHE или ECDHE вместо RSA. И я бы не стал доверять ни одному из стеков TLS (в прошлом у всех основных были серьезные проблемы), а также не доверял бы текущей архитектуре PKI. Steffen Ullrich 10 лет назад 0

2 ответа на вопрос

8
Steffen Ullrich

Одним из проблем, связанных с openssl, является их плохая документация и тайное использование. Даже с опцией -crl_checkон не будет выполнять никаких проверок OCSP или загружать CRL, и вы не можете использовать что-то вроде -CRLfiles_client. Вместо этого вам нужно иметь CRL и CA в одном и том же файле (найдите его, посмотрев на исходный код, который на самом деле читабелен).

Так как похоже, что у вас уже есть CA в формате PEM, valicert_class2_root.crtвы можете сделать следующее, чтобы добавить CRL:

  • получить CRL от URL, http://crl.godaddy.com/gds1-64.crlуказанного в сертификате, используя wget или аналогичный
  • потому что CRL, которые вы получили, находятся в формате DER, вам нужно преобразовать их в PEM с openssl crl -in gds1-64.crl -inform der -out crl.pem
  • добавление crl.pemк вашему файлу CA

Если вы повторите ту же s_clientкоманду, вы получитеVerify return code: 23 (certificate revoked)

О, я не знал, что `-crl_check` не получил CRL. jww 10 лет назад 0
Не зарегистрировано, что это делает - и не зарегистрировано, что это не делает. На самом деле это вообще не задокументировано, что на самом деле делает :( Steffen Ullrich 10 лет назад 0
Можете ли вы подготовить [отчет об ошибке OpenSSL / RT] (https://www.openssl.org/docs/faq.html#BUILD17) для проблем с документацией? Вы можете обратиться к этому вопросу, если хотите. jww 8 лет назад 0
@jww: я думаю, что это пустая трата времени. В openssl уже так много неправильной или отсутствующей документации, и я не могу понять, что они считают такие вещи достаточно важными, чтобы их исправить, Steffen Ullrich 8 лет назад 0
В прошлом это была определенно пустая трата времени (это говорит опыт). Ситуация изменилась за последние пару лет, и документация является одним из самых простых запросов (это также говорит из опыта). Изменения произошли после Heartbleed, которая стала катализатором первоклассного финансирования проекта корпорациями и Linux Foundation. Вы должны рассмотреть возможность дать ему еще одну попытку. jww 8 лет назад 0
@jww: вы можете подать вопрос самостоятельно, и я желаю вам успеха. Для справки: соответствующая опция определена в `apps / apps.h` и используется в` apps / opt.c`, и все, что она делает, - это `X509_V_FLAG_CRL_CHECK`. И хотя это документ в `. / Doc / crypto / X509_VERIFY_PARAM_set_flags.pod`, что эта опция существует и что она" включает проверку CRL для листа цепочки сертификатов ", нет никакой информации о том, как эта проверка CRL выполняется точно отдельно от" Если CRLs проверка включает включение CRL, как ожидается, будут доступны в соответствующей структуре X509_STORE. Не делается попытка загрузить CRL ... " Steffen Ullrich 8 лет назад 0
2
robbat2

Штеффан избил меня до ответа, пока я его изучал.

Его ответ лучше всего подходит для быстрых вещей. Если вы хотите использовать вместо этого CApath, вам нужно убедиться, что имена файлов правильно хэшированы ($ HASH.r0), что полностью не документировано в openssl. Вы должны убедиться, что добавляете ВСЕ ВСЕ CRL к файлу, если вы используете этот метод, а не только CRL для первого сертификата.

Есть несколько инструментов, которые могут получить CRL для заполнения вашей системы: http://wiki.nikhef.nl/grid/FetchCRL3

Спасибо Robbat2. Я никогда не использую `CAPath`, так как я обычно избегаю CA Zoo. Спасибо за инструмент. jww 10 лет назад 0
Можете ли вы подготовить [отчет об ошибке OpenSSL / RT] (https://www.openssl.org/docs/faq.html#BUILD17) для проблем с документацией? Вы можете обратиться к этому вопросу, если хотите. jww 8 лет назад 0
@jww Я исправил это через несколько месяцев после публикации. Теперь он находится в [документации для `c_rehash`] (https://github.com/openssl/openssl/commit/cf2239b3b397174a8a6b1cc84ff68aba34ed5941) robbat2 8 лет назад 0

Похожие вопросы