Я не могу получить на причале-9.3.14 данные сертификата клиента X509, которые отправляются в apache2 и перенаправляются через ProxyPass
директива.
<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-9.3 не поддерживает mod_ajp
, apache2 необходимо прокси-запрос на proxy_http
, это, конечно, http
канал.
Данные сертификата пользователя X509 «отклеиваются» при переходе с https из http.
Вот и все.
Максимум, что вы можете сделать, это повернуть SSLContext
данные в заголовки HTTP, а затем доверять заголовкам некоторую настраиваемую логику.