Sorry if I'm being dumb...but what if the certificate
was not generated using OpenSSL? Do I still access
this field of of subjectAltName by getting "DNS"? Is
"DNS" OpenSSL specific?
Ed
--- Christian Hohnstaedt <[EMAIL PROTECTED]>
wrote:
> Hi,
>
> The "DNS" refers to the configuration value in your
> openssl.cnf file
> it is the name of the "conf-value"
> e.g.
> subjectAltName = DNS:foo.bar.com, IP:10.11.12.13
>
> also look at doc/openssl.txt
>
> Greets
>
> Christian
>
>
> On Thu, Oct 24, 2002 at 11:57:42AM -0700, Edward
> Chan wrote:
> > Hi there,
> >
> > I'm looking at some code for doing post connection
> > checks to make sure the DNS name specified in the
> > certificate matches the host the client is trying
> to
> > connect to. The code is from Chapter 5 of
> "Network
> > Security with OpenSSL".
> >
> > It looks like it first gets the subjectAltName
> field
> > of the certificate, then tries to get the dNSName.
>
> > However, it specifies "DNS" instead of "dNSName".
> Is
> > this an error? Should it be "DNS" or "dNSName".
> And
> > if I want to check for IP address, should I
> specify
> > "iPAddress"?
> >
> > The code is below. The line
> >
> > if (!strcmp(nval->name, "DNS") &&
> !strcmp(nval->value,
> > host))
> >
> > looks suspicious to me.
> >
> >
> > long post_connection_check(SSL *ssl, char *host)
> > {
> > X509 *cert;
> > X509_NAME *subj;
> > char data[256];
> > int extcount;
> > int ok = 0;
> >
> > /* Checking the return from
> > SSL_get_peer_certificate here is not strictly
> > * necessary. With our example programs, it
> is
> > not possible for it to return
> > * NULL. However, it is good form to check
> the
> > return since it can return NULL
> > * if the examples are modified to enable
> > anonymous ciphers or for the server
> > * to not require a client certificate.
> > */
> > if (!(cert = SSL_get_peer_certificate(ssl)) ||
> > !host)
> > goto err_occured;
> > if ((extcount = X509_get_ext_count(cert)) > 0)
> > {
> > int i;
> >
> > for (i = 0; i < extcount; i++)
> > {
> > char *extstr;
> > X509_EXTENSION *ext;
> >
> > ext = X509_get_ext(cert, i);
> > extstr =
> >
>
OBJ_nid2sn(OBJ_obj2nid(X509_EXTENSION_get_object(ext)));
> >
> > if (!strcmp(extstr, "subjectAltName"))
> > {
> > int j;
> > unsigned char *data;
> > STACK_OF(CONF_VALUE) *val;
> > CONF_VALUE *nval;
> > X509V3_EXT_METHOD *meth;
> >
> > if (!(meth = X509V3_EXT_get(ext)))
> > break;
> > data = ext->value->data;
> >
> > val = meth->i2v(meth,
> > meth->d2i(NULL,
> &data,
> > ext->value->length),
> > NULL);
> > for (j = 0; j <
> > sk_CONF_VALUE_num(val); j++)
> > {
> > nval =
> sk_CONF_VALUE_value(val,
> > j);
> > if (!strcmp(nval->name, "DNS")
> &&
> > !strcmp(nval->value, host))
> > {
> > ok = 1;
> > break;
> > }
> > }
> > }
> > if (ok)
> > break;
> > }
> > }
> >
> > if (!ok && (subj =
> X509_get_subject_name(cert)) &&
> > X509_NAME_get_text_by_NID(subj,
> > NID_commonName, data, 256) > 0)
> > {
> > data[255] = 0;
> > if (strcasecmp(data, host) != 0)
> > goto err_occured;
> > }
> >
> > X509_free(cert);
> > return SSL_get_verify_result(ssl);
> >
> > err_occured:
> > if (cert)
> > X509_free(cert);
> > return X509_V_ERR_APPLICATION_VERIFICATION;
> > }
> >
> >
> >
> > __________________________________________________
> > Do you Yahoo!?
> > Y! Web Hosting - Let the expert host your web site
> > http://webhosting.yahoo.com/
> >
>
______________________________________________________________________
> > OpenSSL Project
> http://www.openssl.org
> > User Support Mailing List
> [EMAIL PROTECTED]
> > Automated List Manager
> [EMAIL PROTECTED]
>
______________________________________________________________________
> OpenSSL Project
> http://www.openssl.org
> User Support Mailing List
> [EMAIL PROTECTED]
> Automated List Manager
[EMAIL PROTECTED]
__________________________________________________
Do you Yahoo!?
Y! Web Hosting - Let the expert host your web site
http://webhosting.yahoo.com/
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]