может ли кто-нибудь сказать мне, для чего используются значения «Цель» при проверке сертификатов и что они означают?
Что подразумевается под Целью и ее значением при проверке Сертификата?
Ответы (1)
Чтобы узнать, что они означают, посмотрите Расширения сертификатов< /a> на справочной странице OpenSSL x509
.
Вот как они относятся к коду (взято из v3_purp.c
< /а>):
static X509_PURPOSE xstandard[] = {
{X509_PURPOSE_SSL_CLIENT, X509_TRUST_SSL_CLIENT, 0, check_purpose_ssl_client, "SSL client", "sslclient", NULL},
{X509_PURPOSE_SSL_SERVER, X509_TRUST_SSL_SERVER, 0, check_purpose_ssl_server, "SSL server", "sslserver", NULL},
{X509_PURPOSE_NS_SSL_SERVER, X509_TRUST_SSL_SERVER, 0, check_purpose_ns_ssl_server, "Netscape SSL server", "nssslserver", NULL},
{X509_PURPOSE_SMIME_SIGN, X509_TRUST_EMAIL, 0, check_purpose_smime_sign, "S/MIME signing", "smimesign", NULL},
{X509_PURPOSE_SMIME_ENCRYPT, X509_TRUST_EMAIL, 0, check_purpose_smime_encrypt, "S/MIME encryption", "smimeencrypt", NULL},
{X509_PURPOSE_CRL_SIGN, X509_TRUST_COMPAT, 0, check_purpose_crl_sign, "CRL signing", "crlsign", NULL},
{X509_PURPOSE_ANY, X509_TRUST_DEFAULT, 0, no_check, "Any Purpose", "any", NULL},
{X509_PURPOSE_OCSP_HELPER, X509_TRUST_COMPAT, 0, ocsp_helper, "OCSP helper", "ocsphelper", NULL},
{X509_PURPOSE_TIMESTAMP_SIGN, X509_TRUST_TSA, 0, check_purpose_timestamp_sign, "Time Stamp signing", "timestampsign", NULL},
};
При программной проверке вам обычно приходится иметь дело только с целочисленными константами, такими как X509_PURPOSE_SSL_SERVER
. Эти цели используются во время проверки сертификата. Сертификат (путь) проверяется, и, наконец, OpenSSL проверяет, содержит ли имеющийся сертификат расширение ExtendedKeyUsage
, которое содержит запрошенные «цели». В противном случае сертификат будет отклонен.
OpenSSL применяет разумные значения по умолчанию, где это возможно, но если у вас есть особые требования, вы можете добавить свои собственные цели для проверки во время проверки сертификата. Также можно проверить пользовательские ExtendedKeyUsage
, если хотите, но обычно достаточно предопределенных значений по умолчанию.