У меня проблема с остановкой корабля, которая сводит меня с ума. Я надеюсь, что один из вас, экспертов, может вам помочь.
Я использую последнюю версию TomEE + (1.6.0.2) и последнюю версию Java 8 (сборка 1.8.0_05-b13). Что бы я ни пытался, следующая строка кода в моем HttpServlet всегда возвращает значение null.
X509Certificate certs[] = (X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");
Первоначально я предполагал, что неправильно указал имя атрибута, поэтому для диагностики проблемы решил взглянуть на полный список атрибутов, используя следующее:
Enumeration<String> enums = request.getAttributeNames();
Однако это показало мне только два атрибута: один для набора шифров, а другой - для силы ключа.
Я прочитал другие статьи и убедился, что мой коннектор правильный и для него правильно установлен атрибут clientAuth. Вот разъем:
<Connector port="4449" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLSv1.2"
SSLCertificateFile="/etc/unipagos/certs/pay.crt"
SSLCertificateKeyFile="/etc/unipagos/certs/pay.key"
SSLVerifyClient="required"
SSLHonorCipherOrder="true"
ciphers="TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"/>
Кажется, что соединение работает, однако использование openssl s_client
с -msg
показывает, что сервер не запрашивает сертификат клиента.
Почему сервер не запрашивает сертификат клиента? Что я делаю неправильно?
SSLCACertificateFile
илиSSLCACertificatePath
? Обычно они нужны вам при использовании аутентификации по сертификату клиента. - person Bruno   schedule 01.07.2014Http11AprProtocol
), поэтому вам следует обратиться к разделу APR в руководстве, который очень близок к параметрамmod_ssl
(он даже ссылается на него). - person Bruno   schedule 02.07.2014SSLCACertificateFile
, указав его на двухуровневую цепочку сертификатов, и это не повлияло. :( Любые идеи? - person Paul   schedule 02.07.2014PKCS12
может быть самым простым). - person Bruno   schedule 02.07.2014