我需要使用 C-land OpenSSL 验证 X509 证书的域。
我的理解是,该库不会为我执行此操作,并且我必须大致实现以下算法:
- 如果 subjectAlternativeName 扩展的 dnsName 字段存在,则设置
name
到那个值。
- 否则,设置
name
到主题的 CN 字段。
- Compare
name
针对请求的主机名,允许每个星号匹配 [A-Za-z0-9_]+,但不匹配“点”(.)。
在我看来,应该有很多代码可以做到这一点,但我还没有找到。
谁能找到这样的例子吗?或者,对我的算法进行健全性检查?
编辑:这就是我想出的:https://gist.github.com/2821083 https://gist.github.com/2821083。 OpenSSL 将其留给调用代码,这似乎很奇怪。
尽管要注意主题备用名称、原始 IP 地址和 FQDN,但您的思路非常准确。你可能想偷
BOOL SSL_X509_getIDs(apr_pool_t *p, X509 *x509, apr_array_header_t **ids)
以及来自的相关朋友http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ssl/ssl_util_ssl.c http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ssl/ssl_util_ssl.c以及 ssl_engine_init.c 中的被调用者(顺便说一下,服务器端)的所有选项。
当您对 openssl 回调执行操作时 - 如果您尚未在 CTX 中提供,还请考虑日期和时间以及链。
Dw.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)