Вопрос: s_client не прерывается при отзыве certifcate?


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

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
2018-04-16 00:42


Источник


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


Ответы:


Один, если проблемы openssl - их плохая документация и тайное использование. Даже с опцией -crl_check он не будет проверять OCSP или загружать CRL, и вы не можете использовать что-то вроде -CRLfile с s_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)


8
2018-04-16 05:48



О, я не знал -crl_check не получил CRL. - jww
Не задокументировано, что это так - и не документировано, что это не так. На самом деле это вообще не документировано, что это действительно делает :( - Steffen Ullrich
Можете ли вы Отчет об ошибках OpenSSL / RT для проблем с документацией? Вы можете обратиться к этому вопросу, если хотите. - jww
@jww: Я думаю, это было бы пустой тратой времени. Существует так много неправильной или отсутствующей документации с openssl уже, и я не могу понять, что они считают такие вещи достаточно важными для исправления, - Steffen Ullrich
Раньше это была пустая трата времени (это говорит по опыту). За последние пару лет все изменилось, и документация является одним из простых запросов (это также говорит из опыта). Изменения произошли после Heartbleed, что стало катализатором первоклассного финансирования проекта от корпораций и Linux Foundation. Вы должны подумать о том, чтобы дать ему еще одну попытку. - jww


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

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

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


2
2018-04-16 06:53



Благодаря Robbat2. Я никогда не использую CAPath так как я вообще избегаю CA Zoo. Спасибо за инструмент. - jww
Можете ли вы Отчет об ошибках OpenSSL / RT для проблем с документацией? Вы можете обратиться к этому вопросу, если хотите. - jww
@jww Я получил это исправлено через несколько месяцев после моего сообщения. Сейчас он находится в документация для c_rehash - robbat2