我需要使用C-land OpenSSL验证X509证书的域。

我的理解是该库不会为我执行此操作,并且我必须大致实现以下算法:

  • 如果存在subjectAlternativeName扩展名的dnsName字段,则将name设置为该值。
  • 否则,将name设置为主题的CN字段。
  • name与请求的主机名进行比较,允许每个星号都匹配[A-Za-z0-9 _] +,但不能匹配'。'(.)。

  • 在我看来,应该有很多代码可以执行此操作,但是我还没有找到任何代码。

    有人可以找到这样的例子吗?或者,可以检查我的算法吗?

    编辑:这是我想出的:https://gist.github.com/2821083。 OpenSSL将其留给调用代码似乎真的很奇怪。

    最佳答案

    尽管您要注意主题“备用名称”和原始IP地址以及FQDN,但您的位置很不错。您可能想偷

    BOOL SSL_X509_getIDs(apr_pool_t *p, X509 *x509, apr_array_header_t **ids)
    

    以及ssl_engine_init.c(通过服务器端)中http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ssl/ssl_util_ssl.c和被调用方的相关 friend (通过服务器端)获得的所有选项。

    在处理openssl回调时-如果尚未在CTX中提供日期和时间以及链,请考虑日期和时间。

    Dw。

    关于openssl - 在OpenSSL中验证证书的域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10788496/

    10-15 04:40