Несоответствие между openssl verify и командой s_client

Запуск в Ubuntu 14.04 с OpenSSL 1.0.1l:

 openssl s_client -CApath /etc/ssl/certs -showcerts -connect www.google.com:443

Возвращает:

Verify return code: 0 (ok)

Тем не менее, работает:

openssl verify -CApath /etc/ssl/certs/ google_chain.pem

где google_chain.pem — результат выполнения вышеприведенной команды s_client, возвращает:

google_chain.pem: C = US, ST = California, L = Mountain View, O = Google Inc, CN = google.com
error 20 at 0 depth lookup:unable to get local issuer certificate

Кто-нибудь может объяснить это несоответствие? Мне кажется, что команда проверки openssl просто игнорирует параметр -CApath.


person clatter    schedule 21.01.2015    source источник
comment
Возможно, вам следует спросить Ubuntu.   -  person GoBusto    schedule 21.01.2015


Ответы (1)


openssl verify не ожидает, что сертификат будет содержать свою цепочку. Цепочка должна передаваться с аргументом -untrusted. Туда же можно передать тот же файл, доверие все равно определяется путем нахождения доверенного корня в -CAfile/-CApath.

openssl verify -CApath /etc/ssl/certs -untrusted google_chain.pem google_chain.pem
person zakjan    schedule 22.01.2015