我无法在 jetty-9.3.14 上接收提交给 apache2 并通过ProxyPass
指令转发的 X509 客户端证书数据。
<Location /X509>
SSLVerifyClient require
SSLVerifyDepth 5
SSLOptions -StdEnvVars +ExportCertData
# most of the followings are useless
RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s"
RequestHeader set SSL_CLIENT_I_DN "%{SSL_CLIENT_I_DN}s"
RequestHeader set SSL_SERVER_S_DN_OU "%{SSL_SERVER_S_DN_OU}s"
RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s"
RequestHeader set SSL_CLIENT_V_START "%{SSL_CLIENT_V_START}s"
RequestHeader set SSL_CLIENT_V_END "%{SSL_CLIENT_V_END}s"
RequestHeader set SSL_CLIENT_M_VERSION "%{SSL_CLIENT_M_VERSION}s"
RequestHeader set SSL_CLIENT_M_SERIAL "%{SSL_CLIENT_M_SERIAL}s"
RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s"
RequestHeader set SSL_SERVER_M_VERSION "%{SSL_SERVER_M_VERSION}s"
RequestHeader set SSL_SERVER_I_DN "%{SSL_SERVER_I_DN}s"
RequestHeader set SSL_SERVER_CERT "%{SSL_SERVER_CERT}s"
</Location>
apache2 上的上述位置有效地要求用户提供 X509 客户端证书,但这些信息不会转发给 jetty。
答案1
我觉得不行,因为Jetty-9.3不支持mod_ajp
,apache2需要代理请求proxy_http
,当然就是一个http
通道。
从 https 传递到 http 时,X509 用户证书数据会被“剥离”。
就这样。
您所能做的最多就是将SSLContext
数据转换为 HTTP 标头,然后使用一些自定义逻辑信任这些标头。