2011-07-20 12 views

答えて

3

OpenSSLのx509マニュアルページのCertificate Extensionsを参照してください。

これは、彼らが(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をチェックすることもできますが、通常はあらかじめ定義されたデフォルト値で十分です。

関連する問題