Я пытаюсь использовать https между двумя серверами tomcat. К сожалению, самоподписные сертификаты вызывают эту ошибку:Как создать самоподписанные сертификаты, которым будут довольны два кота, при использовании https между tomcats?
Caused by: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
В частности, у меня есть мастер-кот и несколько подчиненных серверов Tomcat. Мастер связывается с сервлетом, используя простое соединение HttpURLC.
Что является самым простым способом для создания самоподписанных сертификатов с использованием моего собственного центра сертификации, так что каждый раз, когда я добавляю новый сервер, мне не нужно менять мастер-сервер tomcat.
У меня есть доступ к OpenSSL и Java 7 Keytool
Для справки моей предыдущей конфигурация:
server.xml разъем:
<Connector port="443" maxHttpHeaderSize="8192" maxThreads="150"
minSpareThreads="25" maxSpareThreads="75" enableLookups="false"
disableUploadTimeout="true" acceptCount="100" debug="0" scheme="https"
secure="true" clientAuth="false" sslProtocol="TLS" keystoreType="PKCS12"
keystoreFile="/usr/java/apache-tomee-plus/conf/keystore.ks"
keystorePass="XXX_SSL" truststoreType="JKS"
truststoreFile="/usr/java/apache-tomee-plus/conf/truststore.ks"
SSLEnabled="true" maxPostSize="0"/>
Запуск сценарий /etc/init.d/tomee
$DAEMON_HOME/jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-pidfile $JSVC_PID_FILE \
-Dcatalina.home=$CATALINA_HOME \
-Djava.security.auth.login.config=$CATALINA_HOME/conf/jaas.conf \
-Djavax.net.ssl.keystore=$CATALINA_HOME/conf/keystore.ks \
-Djavax.net.ssl.keyStorePassword=XXX_SSL \
-Djavax.net.ssl.trustStore=$CATALINA_HOME/conf/truststore.ks \
-Djavax.net.ssl.trustStorePassword=changeit \
-Djava.awt.headless=true \
-Djava.io.tmpdir=$TMP_DIR \
-Dopenam.agents.bootstrap.dir=/home/tomcat/tomcat_v6_agent/Agent_001/config \
-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile $CATALINA_HOME/logs/catalina.err \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
conf/jaas.conf
josso {
org.josso.tc55.agent.jaas.SSOGatewayLoginModule required debug=true;
};
Что имеется только для устаревшей поддержки и будет прекращено. Я не уверен, что он даже загружается, поскольку он создан для tomcat 5.5 ...
Внутри кода я избегаю проблем с использованием IP-адресов в CN =, используя следующее имя узлаVerifier().
HostnameVerifier hv = new HostnameVerifier()
{
public boolean verify(String urlHostName, SSLSession session)
{
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(hv);
connection = (HttpURLConnection) servlet.openConnection();
------------ Обновление ---------------
Это была решена путем длительного обсуждения с @Bruno , пожалуйста, используйте его оригинальное сообщение и длинную дискуссию в чате, которая у нас была.
В конце я использовал инструменты Keytool Explorer и XCA, чтобы облегчить мне изучение и выполнение.
Можете ли вы сказать нам, что именно вы уже сделали в качестве конфигурации, чтобы иметь эту ошибку? –
В stackoverflow уже есть много вопросов с тегом [tomcat]. Ваш вопрос не похож на тему. Однако, если у людей нет немедленного ответа, требуется время, чтобы настроить/воспроизвести всю вашу среду, чтобы выяснить, что происходит. Вы можете установить щедрость (http://meta.stackexchange.com/questions/16065/how-does-the-bounty-system-work), чтобы мотивировать poeple или увидеть проблему непосредственно с сообществом tomcat (http: // tomcat. apache.org/findhelp.html). –
«Если этот вопрос здесь не принадлежит, есть ли более подходящий сайт-помощник» - проблемы с конфигурацией обычно принадлежат [Super User] (http://www.superuser.com) или [Server Fault] (http: // www .serverfault.com). – jww