Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
Mam problem z podłączeniem certyfikatu w tomcat. Mamy już kupiony certyfikat i dostałem dwa pliczki cer i pem.
Nie udało mi się ich podłączyć tak jako każdy plik oddzielnie bo tomcat nie uruchamia się, więc postanowiłem je zaimportować do keystore
Importuję go zgodnie z instrukcję
http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
keytool -import -alias root -keystore <your_keystore_filename> \ -trustcacerts -file <filename_of_the_chain_certificate>
za boga nie wiem co to jest filename_of_the_chain_certificate czy to jest plik pem ? Bo your_keystore_filename to rozumiem ze to co powstało po wygenerowaniu CSR i ten plik to JKS
Może ktoś z Państwa to robił , bo mnie szlak zalewa i nie wiem jak to ugryźć :)))
Offline
Zrób ssl na rev-proxy - np Lighttpd, lub Nginxie.
Tomcat (wszystkie wersje) mają taką historię lubk bezpieczeństwa, że im więcej zapór go chroni, tym lepiej.
A o ile pamiętam, masz Nginxa, w nim możesz ustawić vhosta z osobnym certyfikatem ssl.
i mozesz w ten sposób nieźle zabezpieczyć Tomcata.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2011-11-24 12:43:44)
Offline
Wyszukiwarka google dziś nie działa? ;]
http://docs.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html
http://www.sslshopper.com/article-most-common-java- … commands.html
Offline
działa działa i to świetnie,
Taki szprytny to i ja jestem, problem w tym, ze po różnych kombinacjach i wielu stronach nie znalazłem rozwiązania.
Konfiguracja
<Connector port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" SSLCertificateFile="/opt/tomcat_6.0.23/server.crt" SSLCertificateKeyFile="/opt/tomcat_6.0.23/server.pem" clientAuth="optional" SSLProtocol="TLSv1"/>
Miałem taką i takimi babolami mi walił serwer
INFO: Starting Coyote HTTP/1.1 on http-8080 2011-11-18 21:32:14 org.apache.tomcat.util.net.jsse.JSSESocketFactory getStore SEVERE: Failed to load keystore type JKS with path /opt/tomcat_6.0.23/.keystore due to /opt/tomcat_6.0.23/.keystore (No such file or directory) java.io.FileNotFoundException: /opt/tomcat_6.0.23/.keystore (No such file or directory) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(FileInputStream.java:120) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:405) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java:296) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:544) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:481) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:156) at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:538) at org.apache.tomcat.util.net.JIoEndpoint.start(JIoEndpoint.java:565) at org.apache.coyote.http11.Http11Protocol.start(Http11Protocol.java:203) at org.apache.catalina.connector.Connector.start(Connector.java:1095) at org.apache.catalina.core.StandardService.start(StandardService.java:540) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 2011-11-18 21:32:14 org.apache.coyote.http11.Http11Protocol start SEVERE: Error starting endpoint java.io.FileNotFoundException: /opt/tomcat_6.0.23/.keystore (No such file or directory) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(FileInputStream.java:120) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getStore(JSSESocketFactory.java:405) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeystore(JSSESocketFactory.java:296) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.getKeyManagers(JSSESocketFactory.java:544) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:481) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:156) at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:538) at org.apache.tomcat.util.net.JIoEndpoint.start(JIoEndpoint.java:565) at org.apache.coyote.http11.Http11Protocol.start(Http11Protocol.java:203) at org.apache.catalina.connector.Connector.start(Connector.java:1095) at org.apache.catalina.core.StandardService.start(StandardService.java:540) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 2011-11-18 21:32:14 org.apache.catalina.core.StandardService start SEVERE: Failed to start connector [Connector[HTTP/1.1-8443]] LifecycleException: service.getName(): "Catalina"; Protocol handler start failed: java.io.FileNotFoundException: /opt/tomcat_6.0.23/.keystore (No such file or directory) at org.apache.catalina.connector.Connector.start(Connector.java:1102) at org.apache.catalina.core.StandardService.start(StandardService.java:540) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 2011-11-18 21:32:14 org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 2011-11-18 21:32:14 org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/27 config=null 2011-11-18 21:32:14 org.apache.catalina.startup.Catalina start INFO: Server startup in 10390 ms
Potem stwierdziłem że trzeba go zaimportować do keystore za pomocą keytool ale fiołki też są
Konfiguracja
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> <!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation --> <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" keystoreFile="/opt/tomcat_6.0.23/www_rcin_org_pl.jks" keystorePass="qwerty12" clientAuth="false" sslProtocol="TLS" />
to mam takie błędy
2011-11-23 12:38:57 org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64/server:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 2011-11-23 12:38:57 org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8080 2011-11-23 12:38:58 org.apache.coyote.http11.Http11Protocol init SEVERE: Error initializing endpoint java.io.IOException: jsse.invalid_ssl_conf at org.apache.tomcat.util.net.jsse.JSSESocketFactory.checkConfig(JSSESocketFactory.java:846) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:522) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:156) at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:538) at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176) at org.apache.catalina.connector.Connector.initialize(Connector.java:1022) at org.apache.catalina.core.StandardService.initialize(StandardService.java:703) at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838) at org.apache.catalina.startup.Catalina.load(Catalina.java:538) at org.apache.catalina.startup.Catalina.load(Catalina.java:562) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) Caused by: javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled. at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.checkEnabledSuites(SSLServerSocketImpl.java:310) at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept(SSLServerSocketImpl.java:255) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.checkConfig(JSSESocketFactory.java:842) ... 15 more 2011-11-23 12:38:58 org.apache.catalina.core.StandardService initialize SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8443]] LifecycleException: Protocol handler initialization failed: java.io.IOException: jsse.invalid_ssl_conf at org.apache.catalina.connector.Connector.initialize(Connector.java:1024) at org.apache.catalina.core.StandardService.initialize(StandardService.java:703) at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838) at org.apache.catalina.startup.Catalina.load(Catalina.java:538) at org.apache.catalina.startup.Catalina.load(Catalina.java:562) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 2011-11-23 12:38:58 org.apache.catalina.startup.Catalina load INFO: Initialization processed in 1404 ms 2011-11-23 12:38:58 org.apache.catalina.core.StandardService start INFO: Starting service Catalina 2011-11-23 12:38:58 org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.33 2011-11-23 12:38:58 org.apache.catalina.startup.HostConfig deployDescriptor INFO: Deploying configuration descriptor manager.xml 2011-11-23 12:38:58 org.apache.catalina.startup.HostConfig deployDescriptor INFO: Deploying configuration descriptor host-manager.xml 2011-11-23 12:38:58 org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory ROOT 2011-11-23 12:38:58 org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory docs 2011-11-23 12:38:58 org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory examples 2011-11-23 12:38:59 org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8080 2011-11-23 12:38:59 org.apache.coyote.http11.Http11Protocol start SEVERE: Error starting endpoint java.io.IOException: jsse.invalid_ssl_conf at org.apache.tomcat.util.net.jsse.JSSESocketFactory.checkConfig(JSSESocketFactory.java:846) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init(JSSESocketFactory.java:522) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:156) at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:538) at org.apache.tomcat.util.net.JIoEndpoint.start(JIoEndpoint.java:565) at org.apache.coyote.http11.Http11Protocol.start(Http11Protocol.java:203) at org.apache.catalina.connector.Connector.start(Connector.java:1095) at org.apache.catalina.core.StandardService.start(StandardService.java:540) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) Caused by: javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled. at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.checkEnabledSuites(SSLServerSocketImpl.java:310) at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept(SSLServerSocketImpl.java:255) at org.apache.tomcat.util.net.jsse.JSSESocketFactory.checkConfig(JSSESocketFactory.java:842) ... 15 more 2011-11-23 12:38:59 org.apache.catalina.core.StandardService start SEVERE: Failed to start connector [Connector[HTTP/1.1-8443]] LifecycleException: service.getName(): "Catalina"; Protocol handler start failed: java.io.IOException: jsse.invalid_ssl_conf at org.apache.catalina.connector.Connector.start(Connector.java:1102) at org.apache.catalina.core.StandardService.start(StandardService.java:540) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 2011-11-23 12:38:59 org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 2011-11-23 12:38:59 org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/104 config=null 2011-11-23 12:38:59 org.apache.catalina.startup.Catalina start INFO: Server startup in 1082 ms
Jeśli wygeneruje ten klucz tak to
keytool -import -alias root -keystore /root/download/www_rcin_org_pl.jks -trustcacerts -file /root/download/server.cer
o wywala mi , że certyfikat mam ważny 3 miesiące a ja go kupowałem na 3 lata. i tak w koło macieju :)(
Ostatnio edytowany przez redelek (2011-11-24 13:32:05)
Offline
A na innych serwerach klucz działa poprawnie?
Bo może z certyfikatem jest coś nie tak.
Np generowany jakąś mocno zabytkową wersją openssl, niezbyt kompatybilny z nową wersją.
Albo java może kiepsko znosić taki cert.
Spróbuj dla testu wygenerować własny i porównać działanie z tym kupionym.
Offline
jak ja sam dla siebie wygeneruję to działa wszystko i jest dobrze.
Jak te certyfikaty co podpisałem u dostawcy dodałem do Apache2 zwykłego to działają poprawnie.
data jest do 2013 wszystko super, a w tomcat same babole . Nie wiem czy mogę go schować za jakiś inny serwer www, bo jest specyficzna aplikacja "dLibra" i nie wiem czy ona sobie z tym poradzi :)
Ostatnio edytowany przez redelek (2011-11-24 14:05:19)
Offline
Ja robie tak i zwykle działa:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile=".keystore" keyAlias="tomcat" keystorePass="changeit" keystoreType="JKS" />
Wydaje się, że nie podajesz aliasu dla klucza w keystore. W ten sposób nie wiadomo, z którego skorzystać.
Offline
redelek napisał(-a):
jak ja sam dla siebie wygeneruję to działa wszystko i jest dobrze.
Jak te certyfikaty co podpisałem u dostawcy dodałem do Apache2 zwykłego to działają poprawnie.
data jest do 2013 wszystko super, a w tomcat same babole . Nie wiem czy mogę go schować za jakiś inny serwer www, bo jest specyficzna aplikacja "dLibra" i nie wiem czy ona sobie z tym poradzi :)
Nie spróbujesz, nie dowiesz się.
W trybie proxy zarówno Lighttpd jak i Nginx przekazują zapytania GET i POST do docelowego serwera.
Powinno chodzić bez problemu.
Może być zabawa, jeśli aplikacja wymaga adresu IP, z którego przyszło zapytanie, bo zawsze trafi z localhosta 127.0.0.1, ale o ile pamiętam, w Nginxie można było ustawić tryb przeźroczysty, gdzie przekazywał oryginalne IP do Apacha, żeby logi pokazywały oryginalny IP poprawnie.
Wymagało to specjalnego modułu Apacha, (mod_rpaf) o ile pamiętam.
Ale generalnie, odpal, zobacz czy działa, i wio.
Z rozmaitymi Joomlami, Oscommerc'ami, Drupalami i innymi dziadostwami nie ma żadnego problemu, więc nie rozumiem, dlaczego nie miałoby to działać z Tomcatem.
Poza proxy, na takim serwerze założysz certyfikat ssl, ustawisz limity wielkości GET i POST, możesz bez kłopotu filtrować zapytania regexem, zabezpieczając się przed SQL-Injection, XSS, itp.
Dodatkowo praktycznie każdy serwer WWW obsługuje autoryzację, i jak sprawdzisz na home czy nazwie, autoryzacja do phpmyadmina jest realizowana tylko na poziomie serwera www, a nie okienka logowania w phpmyadminie.
Ze wzgledów bezpieczeństwa, w phpmyadminie i modułach php co chwila znajdują się jakieś dziury.
Java pod tym wzgledem za bardzo się od php nie różni.
Tu masz historię błędów i dziur bezpieczeństwa w Tomcacie: http://tomcat.apache.org/security-6.html
A tu sama autoryzacja w twojej wersji Tomcata: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-3190
Sama aplikacja też opancerzona nie jest.
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2011-11-24 15:39:00)
Offline