Вы уверены, что Glasfish действительно запрашивает сертификат клиента?
Я пытался сделать то же самое с Tomcat, и я обнаружил, что Tomcat запрашивает сертификат клиента, только если вы добавили auth-constraint
в security-constraint
следующим образом:
<security-constraint>
...
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
...
</security-constraint>
Без auth-constraint
Tomcat не требуется входить в систему пользователя, поэтому не требуется запрашивать сертификат клиента. transport-guarantee
вызывает только HTTPS.
Но даже при этом мне пришлось добавить пользователя сертификата в управление ролями контейнера и назначить ему роль, поскольку в противном случае пользователь не сможет получить доступ к URL-адресу и получит ответ HTTP 401. Поэтому, если вы просто хотите получить сертификат клиента, не связывая его с пользователем в контейнере, он не будет работать.
В Tomcat вы можете настроить область для принятия пользователя без ролей, когда role-name
равен *
, но вам все равно нужно добавить пользователя в область аутентификации, что не поможет, если вы хотите принять все сертификаты, которым доверяют, и проверьте субъект сертификата самостоятельно. Может быть, это возможно с Glasfish.