在OpenSSL中验证证书的域

5 ssl openssl x509

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

我的理解是库不会为我做这个,我必须大致实现以下算法:

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

在我看来,应该有足够的代码来执行此操作,但我还没有找到任何代码.

任何人都可以找到这样的例子吗?或者,理智检查我的算法?

编辑:这是我想出的:https://gist.github.com/2821083.看起来很奇怪OpenSSL会把这个留给调用代码.

Dir*_*lik 4

你很喜欢 - 虽然要注意主题替代名称和原始IP地址和FQDN.你可能想偷

BOOL SSL_X509_getIDs(apr_pool_t *p, X509 *x509, apr_array_header_t **ids)
Run Code Online (Sandbox Code Playgroud)

来自http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ssl/ssl_util_ssl.c的相关朋友以及ssl_engine_init.c中的被调用者(这是服务器端的方式)所有选项.

当你在openssl回调上行动时 - 如果你没有提供已经在CTX中的那个,也要考虑日期和时间以及链条.

DW.