В Windows Server 2008 Tomcat 7.0.37 и обновление 21 JRE 7 отлично работают с аутентификацией клиента с использованием следующей записи файла server.xml:
<Connector port="8443" crlFile="conf/mvca.crl" truststoreType="JKS" truststorePass="changeit" truststoreFile="c:/program files/java/jre7/lib/security/cacerts" keystorePass="maxview" keystoreFile="conf/mvkey.ks" sslProtocol="TLS" clientAuth="true" secure="true" scheme="https" maxThreads="150" SSLEnabled="true" protocol="HTTP/1.1"/>
После обновления до JRE 7 update 40 я больше не могу открывать главную страницу tomcat по адресу: https: /mymachine.mydomain.com: 8443
Я вижу ту же ошибку при использовании JRE 7 update 40 и Tomcat 7.0.42.
Код ошибки HTTP отсутствует. Отображаемое сообщение об ошибке: Internet Explorer не может отобразить веб-страницу.
Запустится служба Tomcat7.
Если аутентификация клиента отключена, будет работать главная страница.
Я не вижу соответствующих сообщений об ошибках в журналах Tomcat.
Какие шаги я могу предпринять, чтобы пролить свет на проблему и определить ее первопричину?
Интересно, связано ли это с некоторыми криптографическими изменениями в обновлении 40, когда ключи RSA <1024 были отключены.
Из примечаний к выпуску:
http://www.oracle.com/technetwork/java/javase/7u40-relnotes-2004172.html#newft
Сертификаты x.509 по умолчанию имеют более длинную длину ключа Начиная с версии 7u40, использование сертификатов x.509 с ключами RSA длиной менее 1024 бит ограничено. Это ограничение применяется через свойство безопасности Java, jdk.certpath.disabledAlgorithms. Значение по умолчанию jdk.certpath.disabledAlgorithms теперь выглядит следующим образом:
jdk.certpath.disabledAlgorithms = MD2, RSA keySize <1024 Чтобы избежать проблемы совместимости, пользователям, которые используют сертификаты X.509 с ключами RSA менее 1024 бит, рекомендуется обновить свои сертификаты с помощью более надежных ключей. В качестве обходного пути пользователи на свой страх и риск могут изменить размер ключа, чтобы разрешить меньшие размеры ключей, с помощью свойства безопасности jdk.certpath.disabledAlgorithms.
Быстрая разница в $JAVA_HOME/jre/lib/security/java.security
показывает:
$ diff java.security /opt/jdk1.7.0_21/jre/lib/security/java.security
149,152c149,150
< com.sun.org.apache.xml.internal.security.,\
< com.sun.org.glassfish.,\
< org.jcp.xml.dsig.internal.,\
< oracle.jrockit.jfr.
---
> com.sun.org.glassfish.
>
186,189c184,185
< com.sun.org.apache.xml.internal.security.,\
< com.sun.org.glassfish.,\
< org.jcp.xml.dsig.internal.,\
< oracle.jrockit.jfr.
---
> com.sun.org.glassfish.
>
402c398
< jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
---
> jdk.certpath.disabledAlgorithms=MD2
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
Странно, что нет логов, указывающих на то, что не так.