Аутентификация клиента ssl без повторного согласования ssl

На стороне клиента у меня есть HTTP-клиент Apache на jdk5u22. На стороне сервера у меня есть tomcat на jdk6u27.

С этой настройкой, если я пытаюсь аутентифицировать клиента SSL (двухсторонний SSL), то это вызывает "javax.net.ssl.SSLHandshakeException: небезопасное повторное согласование не разрешено" на сервере и сбой рукопожатия. Это успешно, если я устанавливаю системные свойства sun.security.ssl.allowUnsafeRenegotiation=true и sun.security.ssl.allowLegacyHelloMessages=true на сервере.

По ссылке http://www.oracle.com/technetwork/java/javase/documentation/tlsreadme2-176330.html это потому что JRE6u27 имеет реализацию RFC 5746, а JRE5u26 ниже не имеет этого, и поэтому оба несовместимы. К сожалению, 5u22 является последней свободно доступной версией Java 5. Поэтому я хочу знать, возможно ли иметь SSL-аутентификацию клиента без повторного согласования с ssl.

С уважением, Литти Прит

1 ответ

Согласно сайту redhat, https://access.redhat.com/kb/docs/DOC-20491: Tomcat может попросить клиента пересмотреть условия в определенных конфигурациях, используя проверку подлинности сертификата клиента, например, конфигурации, где: сертификат клиента не требуется при начальном соединении, например, когда: 1. Атрибут clientAuth соединителя HTTPS, использующего JSSE, имеет значение false. Либо для атрибута SSLVerifyClient соединителя HTTPS, использующего OpenSSL, задано значение none. И 2. Веб-приложение указывает метод аутентификации CLIENT-CERT в разделе login-config файла приложения web.xml.

Поэтому, чтобы избежать повторного согласования в tomcat, просто сделайте весь сайт безопасным, а не только его частью, установив clientAuth="true" для ssl.

Надеюсь, это кому-нибудь поможет.

С уважением, Литти

Другие вопросы по тегам