Tomcat: registre o equivalente a SSL_CLIENT_S_DN

1

No Apache HTTPD, é possível criar logs de solicitações personalizadas, que incluem o valor de SSL_CLIENT_S_DN. Como o site exige autenticação mútua (certificados de cliente), isso fornece um bom registro de auditoria de quem está acessando o servidor da web. A questão é que temos um grande número de hosts tomcat e gostaríamos de fazer o mesmo com os logs de solicitação criados pelo tomcat. Eu não consigo encontrar uma maneira de fazer isso. Eu olhei para válvulas de acesso no tomcat mas não consigo encontrar uma variável apropriada.

Estou procurando informações de configuração aqui: link

Essas também são instâncias do tomcat com o conector HTTPS configurado com clientAuth = True. Eles não estão sentados atrás de um proxy.

Como posso registrar o DN do certificado do cliente em um log de solicitações?

    
por Kevin 28.08.2014 / 19:28

1 resposta

0

Não testado, mas você pode tentar com um padrão como:

%{javax.servlet.request.X509Certificate}r

Qual deve imprimir o certificado x509 usado pelo agente de usuário para a autenticação (com a corrente). Isso usa o padrão %{xxx}r de AccessLogValve , que imprime os atributos da solicitação e do tomcat (ou servlet api) que adicionam esse atributo (consulte o código-fonte do tomcat em github )

O problema é que o método toString() de X509Certificate é bastante detalhado. Tenho certeza de que o DN está aqui, mas há muito mais informações.

Isto é, se você não quiser tocar no código java. Se desejar, você também pode tentar definir um filtro que adicione o atributo exato desejado e imprima-o no log.

    
por 28.08.2014 / 21:44