Настройте соединитель AJP для включения SSL в Eclipse Tomcat
Я новичок на стороне сервера и хотел бы узнать, как настроить соединитель AJP в tomcat eclipse в среде linux для включения SSL.
Я хочу включить SSL в Tomcat, не используя хранилище ключей. Я создал key.pem, cert.pem и cert.crt. И нет, что делать дальше. Может ли тело помочь? Использовали следующие команды:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 999
openssl x509 -outform der -in cert.pem -out cert.crt
Server.xml
<Connector
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
SSLCertificateFile="/root/keyTest/cert.pem"
SSLCertificateKeyFile="/root/keyTest/key.pem"
clientAuth="optional" SSLProtocol="TLSv1"/>
Но получил ошибку
SEVERE: Failed to load keystore type JKS with path /root/.keystore due to /root/.keystore (No such file or directory)
java.io.FileNotFoundException: /root/.keystore (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:413)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java:319)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:577)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:517)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:462)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:209)
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:398)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:646)
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)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
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)
May 12, 2015 3:58:56 PM org.apache.coyote.AbstractProtocol init
SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-8443"]
java.io.FileNotFoundException: /root/.keystore (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:413)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java:319)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:577)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:517)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:462)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:209)
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:398)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:646)
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)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
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)
May 12, 2015 3:58:56 PM org.apache.catalina.core.StandardService initInternal
SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8443]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8443]]
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.io.FileNotFoundException: /root/.keystore (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:413)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java:319)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:577)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:517)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:462)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:209)
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:398)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:646)
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
1 ответ
Был в состоянии реализовать то же самое.
См. - http://eves4code.blogspot.in/2015/05/configure-ssl-in-tomcat-localhost-using.html?q=ssl
Смотрите ниже шаги.
- openssl req -x509 -newkey rsa: 2048 -keyout key.pem -out cert.pem -days 999 openssl x509 -outform der -in cert.pem -out your-cert.crt
скопируйте вышеупомянутые 3 файла в /opt/apache-tomcat-7.0.57/conf/
В server.xml
- Вы не можете использовать хранилище ключей, если вы используете разъем APR. https://stackoverflow.com/questions/6306314/tomcat-7-ssl-failed
Вам просто нужно использовать хранилище ключей (или его эквивалент), так как вам понадобится сертификат для использования HTTPS с браузером. Вы можете использовать файл PKCS#12, сгенерированный OpenSSL, в качестве хранилища ключей типа PKCS12. Кроме того, вы можете использовать разъем APR и напрямую использовать ключ и сертификат в формате PEM. https://stackoverflow.com/questions/30190681/enable-ssl-in-tmcat-without-using-keystore Загрузить исходный код Tomcat с https://tomcat.apache.org/download-native.cgi Загрузить собственный APR http://apr.apache.org/download.cgi Установить апрель / нативный: http://www.sheroz.com/installing-apache-tomcat-native-linux-ubuntu-1204
cd tomcat-native-1.1.27-src / jni / native./configure --with-apr = / usr / local / apr --with-java-home = / home / foo / jdk1.7.0_25 --with- ssl = да make sudo make install См. https://stackoverflow.com/questions/18776378/tomcat-apr-native-library-not-loaded-even-when-present-and-configured https://stackoverflow.com/. вопросы / 8716259 / что-ли-The-апрель основы-апаш-кот-нативную библиотека была-не обретенные-среднего
Из / usr / local / apr / lib / скопируйте tcnative-1.dll (или libtcnative.so для Linux) и поместите его в папку bin tomcat и добавьте системное свойство в конфигурацию запуска сервера tomcat в eclipse, -Djava.library.path= C:\ DEV \ кот \ Bin
Чтобы найти домашнюю каталину $ /opt/apache-tomcat-7.0.57/bin/catalina.sh версия Использование CATALINA_BASE: /usr/local/apache-tomcat-7.0.29 Использование CATALINA_HOME: /usr/local/apache-tomcat-7.0.29 Использование CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.29/temp Использование JRE_HOME: /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home Использование CLASSPATH: /usr/local/apache-tomcat-7.0.29/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.29/bin/tomcat-juli.jar Версия сервера: Apache Tomcat/7.0.29 Сервер построен: 3 июля 2012 г. 11:31:52 Номер сервера: 7.0.29.0 Имя ОС: Mac OS X Версия ОС: 10.7.4 Архитектура: x86_64 Версия JVM: 1.6.0_33-b03-424-11M3720 Поставщик JVM: Apple Inc. См.: https://stackoverflow.com/questions/11496280/how-do-i-find-the-value-of-catalina-home
Создайте /opt/apache-tomcat-7.0.64/bin/setenv.sh
JRE_HOME = / usr / java / latest CATALINA_PID = "$ CATALINA_BASE / tomcat.pid export LD_LIBRARY_PATH = '$ LD_LIBRARY_PATH: / usr / local / apr / lib'
См. http://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt https://stackoverflow.com/questions/9480210/tomcat-7-setenv-sh-is-not-found
catalin_pid - файл PID находится там, где вы говорите сценарию catalina, чтобы он был помещен. CATALINA_PID является входной переменной, а не выходной. Вы указываете путь / файл, и tomcat записывает свой PID-номер в одну строку текста в этот файл. См. http://www.coderanch.com/t/503086/Tomcat/Expression-Tomcat-pid
JRE_HOME http://www.unix.com/shell-programming-and-scripting/43918-how-find-jre-installed-linux-machine.html
http://snipplr.com/view/50950/
Добавьте переменную среды в конфигурацию Tomcat https://stackoverflow.com/questions/6926382/eclipse-tomcat-apr
- Перейти к localhost:8080
Перейдите на https://localhost:8443/
Вставьте в файл проекта web.xml securedapp / CONFIDENTIAL. См.: http://java.dzone.com/articles/setting-ssl-tomcat-5-minutes Нет необходимости выполнять этот шаг / 7. В следующий раз после удаления tomcat из Eclipse нам потребуется чтобы снова зачать родного кота. Серверы -> Нажмите на свой кот -> Обзор -> Нажмите "Открыть конфигурацию запуска" -> Вкладка "Окружение" -> Новый...
LD_LIBRARY_PATH - переменная среды / usr / local / apr
См.: https://stackoverflow.com/questions/6926382/eclipse-tomcat-apr
Общая библиотека должна быть найдена процессом tomcat. В Linux вы можете использовать для этого переменную среды LD_LIBRARY_PATH.