由于包含证书的智能卡,我的用户正在连接到我的应用。我使用httpd来确保证书有效:
SSLCACertificateFile "${SRVROOT}/conf/ssl/certs/usersCA.crt"
它工作正常,但我想知道我的用户是谁在服务器端(在tomcat上运行的Spring应用程序)。
证书包含一个唯一的ID,我可以用它来知道用户是谁。不幸的是,它存储在subjectAltName(http://wiki.cacert.org/FAQ/subjectAltName)。
中作为参考,证书生成期间使用的“openssl.cnf”包含:
subjectAltName = dirName:alt_names
[alt_names]
description="Id=123456789"
我知道使用httpd我可以将证书数据传输到我的服务器能够处理的http标头。例如:
RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s"
我得到DN主题。
但是我无法找到一种方法来将我的Id存储在主题替代名称中。使用SSL_CLIENT_SAN_Email_n或SSL_CLIENT_SAN_DNS_n我可以获取DNS或电子邮件数据,但我找不到将数据存储在此处的方法:
Requested Extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Alternative Name:
DirName:/description=Id=123456789
你知道我可以使用httpd指令通过http头发送我的数据吗?
感谢。