Из предоставленного вами ограниченного вывода кажется, что ваш cert1.pem
имеет тип X509v1
. Таким образом, его вывод -text
не содержит расширение X509v3
, которое отображается в вашем результате grep
для cert2.pem
.
Некоторая поддержка этой гипотезы начинается с выхода для cert1.pem
, который включает в себя
SSL client CA : Yes (WARNING code=3)
Документация OpenSSL, касающаяся значения этого предупреждения, ограничена, но, проверяя его исходный код, начиная с приложения apps/x509.c
, возвращает к следующую функцию :
static int check_ca(const X509 *x)
{
/* keyUsage if present should allow cert signing */
if (ku_reject(x, KU_KEY_CERT_SIGN))
return 0;
if (x->ex_flags & EXFLAG_BCONS) {
if (x->ex_flags & EXFLAG_CA)
return 1;
/* If basicConstraints says not a CA then say so */
else
return 0;
} else {
/* we support V1 roots for... uh, I don't really know why. */
if ((x->ex_flags & V1_ROOT) == V1_ROOT)
return 3;
/*
* If key usage present it must have certSign so tolerate it
*/
else if (x->ex_flags & EXFLAG_KUSAGE)
return 4;
/* Older certificates could have Netscape-specific CA types */
else if (x->ex_flags & EXFLAG_NSCERT && x->ex_nscert & NS_ANY_CA)
return 5;
/* can this still be regarded a CA certificate? I doubt it */
return 0;
}
}
где вы видите значение кода 3
.
Чтобы проверить, так ли это, просто посмотрите на первую строку в текстовом дампе различных сертификатов, который будет выглядеть следующим образом:
Certificate:
Data:
Version: 1 (0x0)
Возвращаясь к странице документации инструмента X509 , теперь имеет смысл следующее:
Если сертификат является сертификатом V1 (и, следовательно, не имеет расширений), и он самозаверяющий, предполагается, что он также является центром сертификации, но снова выдается предупреждение: это позволяет обойти проблему с корнями Verisign, которые являются самозаверяющими сертификатами V1 tes.