2015-08-08 1 views
1

У меня есть сертификат SSL, приобретенный и установленный в tomcat. Я создал файл tomcat.keystore, который я включаю в файл server.xml, также оставляю пароль, но не могу понять keyAlias="aaa". Если я поставлю keyAlias ​​= "localhost", то я получу исключение, указанное ниже. И если я удалю keyAlias сам из тега Connector, то получаю другое исключение, которое приводится ниже в следующем localhost исключении.Что такое keyAlias ​​= "aaaa" в файле tomcat server.xml

java.io.IOException: Alias name localhost does not identify a key entry 
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:588) 
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:526) 
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:471) 
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:218) 
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:400) 
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:649) 

Вот исключение после удаления keyAlias непосредственно из Connector тега.

Aug 08, 2015 2:39:18 PM org.apache.catalina.core.StandardService initInternal 
SEVERE: Failed to initialize connector [Connector[HTTP/1.1-443]] 
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-443]] 
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106) 
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559) 
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:821) 
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
    at org.apache.catalina.startup.Catalina.load(Catalina.java:638) 
    at org.apache.catalina.startup.Catalina.load(Catalina.java:663) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:280) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:454) 
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed 
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:980) 
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
    ... 12 more 
Caused by: java.net.BindException: Address already in use <null>:443 
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:413) 
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:649) 
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434) 
    at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119) 
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:978) 
    ... 13 more 
Caused by: java.net.BindException: Address already in use 
    at java.net.PlainSocketImpl.socketBind(Native Method) 
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376) 
    at java.net.ServerSocket.bind(ServerSocket.java:376) 
    at java.net.ServerSocket.<init>(ServerSocket.java:237) 
    at java.net.ServerSocket.<init>(ServerSocket.java:181) 
    at javax.net.ssl.SSLServerSocket.<init>(SSLServerSocket.java:136) 
    at sun.security.ssl.SSLServerSocketImpl.<init>(SSLServerSocketImpl.java:107) 
    at sun.security.ssl.SSLServerSocketFactoryImpl.createServerSocket(SSLServerSocketFactoryImpl.java:84) 
    at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:219) 
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:400) 
    ... 17 more 

следующее содержание server.xml файл.

<Connector port="443" SSLEnabled="true" protocol="org.apache.coyote.http11.Http11Protocol" 
      maxThreads="150" scheme="https" secure="true" 
      clientAuth="false" sslProtocol="TLS" 
      keystoreFile="tomcat.keystore" 
      keystorePass="test" keyAlias="aaa"/> 

Что это такое keyAlias? Почему я получаю исключение после удаления его, которое является исключением?

+2

Я не думаю, что проблема «Адрес уже используется» связана с удалением ключей. – keyser

+0

@keyser, но это проблема, удалив этот 'keyAlias'. Он дает исключение Binding в файл Catalina.out. Мое приложение работает на 443 с http (не https). Но вопрос, каково значение для 'keyAlias ​​="? ", Чтобы я мог разместить свое приложение на https. – AmitG

+0

Но с проблемой адреса вы должны просто освободить порт. Вы проверяли, что его использует, если что-нибудь? Если это связано, это странно. – keyser

ответ

4

KEYALIAS:

https://www.digicert.com/ssl-certificate-installation-tomcat.htm `

  1. При импорте сертификата в хранилище, то, как правило, дают "псевдоним":

    keytool -import -trustcacerts -alias server -file your_site_name.p7b -keystore your_site_name.jks

  2. В вашем сервере .xml, вы должны затем объявить таким же "alias":

    <Connector port="443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" SSLEnabled="true" clientAuth="false" sslProtocol="TLS" keyAlias="server" keystoreFile="/home/user_name/your_site_name.jks" keystorePass="your_keystore_password" />

  3. Вот некоторые другие ссылки, которые могут помочь:

https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html

https://www.mulesoft.com/tcat/tomcat-ssl

https://wolfpaulus.com/jounal/mac/tomcat-ssl/

ВТОРОЙ ВЫПУСК " CAN NOT BIND ":

Что касается« используемого адреса », я просто попробую перезагрузить сервер и посмотреть, правильно ли запущен Tomcat.

Если вы столкнулись ошибки снова,

  1. Посмотрите в настройках Tomcat, чтобы увидеть, какой порт вы пытаетесь использовать (например, 443)

  2. Проверьте систему, чтобы увидеть, кто еще используя порт (Lsof, Nmap и т.д.):

http://www.howtogeek.com/howto/28609/how-can-i-tell-what-is-listening-on-a-tcpip-port-in-windows/

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Security_Guide/s1-server-ports.html

+0

Я очень близко, чтобы ответить на ваш ответ. Можете ли вы, пожалуйста, помочь мне, кто является ключевым? Я выполнил три команды при создании файла tomcat.keystore ....... 1. keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file gdig2.crt 2.keytool -import -alias intermed -keystore tomcat.keystore -trustcacerts -файл gd_bundle-g2-g1.crt 3. keytool -import - alias tomcat -keystore tomcat.keystore -trustcacerts -file 9999999999.crt – AmitG

-2

Эти ошибки не имеют отношения.

  1. keyAlias документально подтвержден в документации Tomcat, и именно здесь вы должны искать его значение.
  2. Ошибка, которую вы сделали, заключается в том, чтобы не импортировать подписанный сертификат с тем же псевдонимом, который вы использовали при создании пары ключей. Они должны быть одинаковыми, так что они keytool свяжут ключевую пару с сертификатом и создают ключевую запись вместо записи сертификата.
  3. BindException означает, что какой-либо другой процесс, возможно, предшествующий вызов Tomcat, который еще не вышел, использует порт. Или, возможно, вы сконфигурировали два разъема для использования одного и того же порта. Он отображается только как ошибка при правильной настройке SSL-коннектора.