Что проверяет возврат: 1 означает в выводе openssl

10

Я не понимаю вывод openssl. Запустите openssl следующим образом:

#openssl s_client -connect google.com:443 -CAfile cacert.pem < /dev/null

В конечном итоге все хорошо в том, что сертификат конечного лица был подтвержден: Verify return code: 0 (ok)

но как насчет проверки return:1в начале вывода для промежуточных продуктов ниже? Что это значит или в чем смысл?

глубина = 3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority подтверждает возврат: 1
глубина = 2 C = США, O = GeoTrust Inc., CN = GeoTrust Global CA подтвердить возврат: 1
глубина = 1 C = США, O = Google Inc, CN = Google Internet Authority G2 подтвердить возврат: 1
глубина = 0 C = США, ST = Калифорния, L = Маунтин-Вью, O = Google Inc, CN = google.com подтвердить возврат: 1

---
Цепочка сертификатов
 0 с: / C = США / ST = Калифорния / L = Маунтин-Вью / O = Google Inc / CN = google.com
   я: / C = США / O = Google Inc / CN = Google Internet Authority G2
 1 с: / C = США / O = Google Inc / CN = Google Internet Authority G2
   i: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
 2 с: / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
   i: / C = US / O = Equifax / OU = Equifax Secure Certificate Authority
---


jouell
источник

Ответы:

13

Функция проверки обратного вызова (используется для выполнения окончательной проверки применимости сертификата для конкретного использования) передается через SSL в preverify_okayполе, называемое полем, которое указывает, прошла ли цепочка сертификатов базовые проверки, применимые ко всем случаям. А 1значит эти проверки пройдены.

int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx)

Функция verify_callback используется для управления поведением, когда установлен флаг SSL_VERIFY_PEER. Он должен быть предоставлен приложением и получает два аргумента: preverify_ok указывает, была ли пройдена проверка соответствующего сертификата (preverify_ok = 1) или нет (preverify_ok = 0).

Это то, что verify return:1показывает.

Вы можете проверить код, если вы хотите больше деталей:

int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
    {
    [ snip ]
    BIO_printf(bio_err,"verify return:%d\n",ok);
    return(ok);
    }
Дэвид Шварц
источник
Также полный документ представлен здесь: openssl.org/docs/manmaster/ssl/SSL_CTX_set_verify.html
Джоуэлл,