将 X509 客户端证书数据从 apache2 反向代理保存到 jetty

将 X509 客户端证书数据从 apache2 反向代理保存到 jetty

我无法在 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 标头,然后使用一些自定义逻辑信任这些标头。

相关内容