如何使用Apache mod_ssl变量验证URI格式的主题备用名称的内容?

问题描述 投票:1回答:1

我正在开发一个Web服务项目,该项目要求连接到我的服务的客户端通过X.509证书进行身份验证,这是相互身份验证TLS协商的一部分。除了将客户端证书链接到特定的PKI信任链之外,我的要求还要求我必须验证证书中的特定值。具体而言,主题DN必须包含一个具有预定值的OU,并且证书必须包含一个具有URI格式的不同预定值的subjectAltName。

我在CentOS 7系统上使用Apache httpd 2.4.6,并且能够使用常见的mod_ssl变量使用标准的Apache配置指令轻松满足大多数这些要求,但有一个值得注意的例外:我似乎无法找到允许我的变量以URI格式访问subjectAltName值。查看此处的mod_ssl文档:

https://httpd.apache.org/docs/2.4/mod/mod_ssl.html

我可以看到以下subjectAltName格式的变量:

SSL_CLIENT_SAN_Email_n - 类型为rfc822Name的客户端证书的subjectAltName扩展条目

SSL_CLIENT_SAN_DNS_n - 客户端证书的subjectAltName类型为dNSName的扩展条目

SSL_CLIENT_SAN_OTHER_msUPN_n - 客户端证书的subjectAltName类型为otherName的扩展条目,Microsoft用户主体名称表单(OID 1.3.6.1.4.1.311.20.2.3)

鉴于URI是RFC 5280(X.509 / PKI)第4.2.1.6节中定义的subjectAltName值的独特且有效的格式,我不知道为什么mod_ssl不能以这种格式提供对subjectAltNames的访问。是否有一个提供此功能的变量,我在文档中看不到?

apache ssl x509 mod-ssl
1个回答
0
投票

进一步检查mod_ssl源代码,很明显,目前根本不支持以URI格式提取用于变量的SAN值,如此评论所述:

        /*
         * Not implemented right now:
         * GEN_X400 (x400Address)
         * GEN_DIRNAME (directoryName)
         * GEN_EDIPARTY (ediPartyName)
         * GEN_URI (uniformResourceIdentifier)
         * GEN_IPADD (iPAddress)
         * GEN_RID (registeredID)
         */

https://github.com/apache/httpd/blob/5f32ea94af5f1e7ea68d6fca58f0ac2478cc18c5/modules/ssl/ssl_util_ssl.c

因此,我的问题的答案显然是目前没有可用于此目的的变量,并且满足此要求将需要一种解决方法(或将GEN_URI的实现推送到mod_ssl)。

© www.soinside.com 2019 - 2024. All rights reserved.