|
|
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
У меня есть 3 файла: SSL CA File, SSL CERT File, SSL Key File. Нужно подключиться к mysql серверу по ssl, как это делается в MySQL workbench, указывая эти файлы. Т.е. надо как-то методу DriverManager.getConnection() передать эти файлы. Отмечу, что коннектов может быть много к разным серверам, и у каждого будут свои сертификаты, поэтому установка глобальных свойств Код: java 1. свойств не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2014, 10:47 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
keyStore свойство оно для Java Key Store - хранилище ключей - там может быть много разных ключей pem файл это просто ключ сохраненный в виде файла в определенном формате У вас даже не работает ваш вариант. Именно поэтому он не подходит, а не потому что у вас много соединений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2014, 18:47 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
Тогда я, наверно, не туда копаю, может есть пример у кого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2014, 13:06 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
В RTFM подробно расписано http://dev.mysql.com/doc/connector-j/en/connector-j-reference-using-ssl.html Гугл даёт массу примеров https://www.google.com/search?q=MySQL JDBC SSL Чего именно не хватает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2014, 13:19 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
Here's my article for SSL TomCat connection http://vyatkins.wordpress.com/2013/11/19/java-base-ssl-connection-to-tomcat-with-server-and-client-certifications/ Please do not hesitate to ask if any questions. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2014, 21:20 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
SergunkaPlease do not hesitate to ask if any questions. I got one: "Why would you give irrelevant links in this thread?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 11:53 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
Попробовал сделать как описано в http://dev.mysql.com/doc/connector-j/en/connector-j-reference-using-ssl.html Падает ошибка com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: Затем сделал по шагам, которые указаны в комментариях ниже, эти шаги больше похоже на правду и задействуются все 3 описанных файла: a- add Certificate Authority to a new TrustStore keytool -import -alias mysqlCACert -file ca-cert.pem -keystore truststore -storepass pass_word -deststoretype JKS b- Converting openssl created client certificate to accepted java keystore PKCS12 openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -certfile client-cert.pem -name "Name" -out client.p12 a- Add new PKCS12 certificate to key store JKS type keytool -importkeystore -srckeystore client.p12 -srcstoretype pkcs12 -destkeystore keystore -storepass pass_word -deststoretype JKS После выполнения этих команд в java home создались два файла keystore, truststore. Затем пытаемся подключиться к нужному серверу mysql. Код: java 1. 2. 3. 4. 5. 6. 7. =>javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 13:47 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
xProПадает ошибка com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception : Ну, написано, же падает из-за другого исключения. xPro=>javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server Это находится в cause первого исключения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 13:50 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, написано, же падает из-за другого исключения. Сори, исходная ошибка была MESSAGE: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext) BlazkowiczЭто находится в cause первого исключения? Да, это текст исходной ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 13:52 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
авторjavax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server Вот это немного не понятно, потому что ругается на "server". Это значит что клиентский сертификат был ошибочно использован на сервере. А сервер тут MySQL. Если была аналогичная ошибка с "SSL client" в конце, было бы понятнее. авторMESSAGE: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext) Перестаньте вырезать куски, которые, как вам кажется, самые важные. Вываливаете сюда исключения целиком, включая stacktrace и вложеные исключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 13:58 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ok, вот полный стек последней ошибки (SSLHandshakeException) com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** com.mysql.jdbc.CommunicationsException MESSAGE: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** javax.net.ssl.SSLHandshakeException MESSAGE: sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server STACKTRACE: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) at sun.security.ssl.Handshaker.process_record(Handshaker.java:804) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:72) at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775) at com.mysql.jdbc.Connection.<init>(Connection.java:1555) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(DriverManager.java:571) at java.sql.DriverManager.getConnection(DriverManager.java:187) at capsidea.Schema.getUserDataConnection(Schema.java:310) at capsidea.SourceService.createSchema(SourceService.java:147) 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 capsidea.WebService.processRequest(WebService.java:155) at capsidea.WebService.doPost(WebService.java:91) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server at sun.security.validator.EndEntityChecker.checkTLSServer(EndEntityChecker.java:297) at sun.security.validator.EndEntityChecker.check(EndEntityChecker.java:141) at sun.security.validator.Validator.validate(Validator.java:264) at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326) at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231) at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323) ... 44 more ** END NESTED EXCEPTION ** Last packet sent to the server was 239 ms ago. STACKTRACE: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** javax.net.ssl.SSLHandshakeException MESSAGE: sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server STACKTRACE: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) at sun.security.ssl.Handshaker.process_record(Handshaker.java:804) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:72) at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775) at com.mysql.jdbc.Connection.<init>(Connection.java:1555) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(DriverManager.java:571) at java.sql.DriverManager.getConnection(DriverManager.java:187) at capsidea.Schema.getUserDataConnection(Schema.java:310) at capsidea.SourceService.createSchema(SourceService.java:147) 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 capsidea.WebService.processRequest(WebService.java:155) at capsidea.WebService.doPost(WebService.java:91) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server at sun.security.validator.EndEntityChecker.checkTLSServer(EndEntityChecker.java:297) at sun.security.validator.EndEntityChecker.check(EndEntityChecker.java:141) at sun.security.validator.Validator.validate(Validator.java:264) at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326) at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231) at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323) ... 44 more ** END NESTED EXCEPTION ** Last packet sent to the server was 239 ms ago. at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:87) at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775) at com.mysql.jdbc.Connection.<init>(Connection.java:1555) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(DriverManager.java:571) at java.sql.DriverManager.getConnection(DriverManager.java:187) at capsidea.Schema.getUserDataConnection(Schema.java:310) at capsidea.SourceService.createSchema(SourceService.java:147) 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 capsidea.WebService.processRequest(WebService.java:155) at capsidea.WebService.doPost(WebService.java:91) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) ** END NESTED EXCEPTION ** Last packet sent to the server was 239 ms ago. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:07 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
Больше интересует "NoSuchAlgorithmException", в котором окажется что вашему процессу нельзя читать из Program Files. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:13 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
А вы пробовли подсоединиться к mysql через SSL не из Java? Возможно вы в MySQL не тот сертификат установили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:28 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Да, через MySQL Workbench с указанием указанных файлов всё ok. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:35 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
xProBlazkowicz, Да, через MySQL Workbench с указанием указанных файлов всё ok. Попробуйте еще добавить дебаг для SSL Код: java 1. Там дается подробный лог всех задействованных сертификатов я этот момент подробно разжевываю в статье. типо так будет Example log Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 19:06 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
Нашёл ещё что нужно включить тип store System.setProperty("javax.net.ssl.keyStoreType","pkcs12"); System.setProperty("javax.net.ssl.trustStoreType","pkcs12"); Теперь выдаётся другая ошибка: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** com.mysql.jdbc.CommunicationsException MESSAGE: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext) STACKTRACE: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext) at javax.net.ssl.DefaultSSLSocketFactory.throwException(SSLSocketFactory.java:198) at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:218) at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:65) at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775) at com.mysql.jdbc.Connection.<init>(Connection.java:1555) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(DriverManager.java:571) at java.sql.DriverManager.getConnection(DriverManager.java:187) at Schema.getUserDataConnection(Schema.java:307) at SourceService.createSchema(SourceService.java:147) 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 capsidea.WebService.processRequest(WebService.java:155) at capsidea.WebService.doPost(WebService.java:91) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext) at java.security.Provider$Service.newInstance(Provider.java:1262) at sun.security.jca.GetInstance.getInstance(GetInstance.java:236) at sun.security.jca.GetInstance.getInstance(GetInstance.java:164) at javax.net.ssl.SSLContext.getInstance(SSLContext.java:156) at javax.net.ssl.SSLContext.getDefault(SSLContext.java:97) at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:121) at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:61) ... 36 more Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big. at sun.security.util.DerInputStream.getLength(DerInputStream.java:561) at sun.security.util.DerValue.init(DerValue.java:365) at sun.security.util.DerValue.<init>(DerValue.java:320) at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1220) at java.security.KeyStore.load(KeyStore.java:1214) at sun.security.ssl.SSLContextImpl$DefaultSSLContext.getDefaultKeyManager(SSLContextImpl.java:610) at sun.security.ssl.SSLContextImpl$DefaultSSLContext.<init>(SSLContextImpl.java:495) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:374) at java.security.Provider$Service.newInstance(Provider.java:1238) ... 42 more ** END NESTED EXCEPTION ** Лог: trustStore is: c:\Work\truststore trustStore type is : pkcs12 trustStore provider is : init truststore SunX509: skip default keystore: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big. trigger seeding of SecureRandom done seeding SecureRandom keyStore is : c:\Work\keystore keyStore type is : pkcs12 keyStore provider is : init keystore default context init failed: java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 05:31 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
xProНашёл ещё что нужно включить тип store System.setProperty("javax.net.ssl.keyStoreType","pkcs12"); System.setProperty("javax.net.ssl.trustStoreType","pkcs12"); Совсем не то. У вас JKS, а вы его пытаетесь прочитать как pkcs12. В предыдущей версии сертификаты нормально загружались и JKS, а ошибка была в самих сертификатах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 06:27 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Да, сконвертировал сертификаты из p12 в jks и заимпортировал в keystore Стала снова падать ошибка: sun.security.validator.ValidatorException: Netscape cert type does not permit use for SSL server, иногда ещё вылезала "javax.net.ssl.SSLException: Unsupported record version Unknown-0.0" и наткнулся на http://bugs.mysql.com/bug.php?id=66173 После этого я обновил MySQL driver с 5.0.8 на 5.1.30 и оно наконец-то заработало! Резюмируя, делать надо примерно так (поправьте если что): Имеем 3 файла SSL CA File, SSL CERT File, SSL Key File: 1.Добавляем публичный CA файл в trustStore keytool -import -alias mysqlCACert -file ca-cert.pem -keystore truststore -storepass pass_word -deststoretype JKS 2. Через openssl создаём p12 контейнер из клиентского ключа и сертификата CERT FILE openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -name "Name" -out client.p12 3. Конвертируем p12 в jsk keytool -importkeystore -destkeystore client.jks -srckeystore client.p12 -srcstoretype pkcs12 4. Импортируем полученный jsk в keystore keytool -importkeystore -srckeystore client.jsk -srcstoretype jks -destkeystore keystore -storepass pass_word -deststoretype JKS java code Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Если число шагов можно уменьшить подскажите плз. Теперь буду избавляться от необходимости использовать System.setProperty, и как-то указывать keyStore в url подключения к бд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 07:29 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
xProТеперь буду избавляться от необходимости использовать System.setProperty, и как-то указывать keyStore в url подключения к бд. Вы снова путаете. Вам не нужно указывать keystore для каждого соединения. Вам нужно в один keystore заимпортировать ключи для всех ваших соединений. А SSL уже сам разберется какой сертификат при каком соединении ему использовтаь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 09:13 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
xPro Если число шагов можно уменьшить подскажите плз. Точного рецепта не дам, но, возможно, если взять KeyTool IUI https://code.google.com/p/keytool-iui/ то можно будет проще импортировать ключи и сертификаты не конвертируя их в разные форматы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 09:18 |
|
||
|
SSL connection to mysql
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВы снова путаете. Вам не нужно указывать keystore для каждого соединения. Вам нужно в один keystore заимпортировать ключи для всех ваших соединений. А SSL уже сам разберется какой сертификат при каком соединении ему использовтаь. У меня будет много разных серверов MySQL, postgresql, у каждого будут свои сертификаты. Пользователь создаёт через ui подключение к своей базе и серверу. И для каждого такого сервера я буду создавать отдельный jks файл, а для каждого соединения для этого сервера его переиспользовать. Так явно удобнее (для меня уж точно) управлять всеми метаданными подключений. Вот более простой вариант через keytool 1. Через openssl создаём p12 контейнер из клиентского ключа и сертификата CERT FILE openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -name "Name" -out client.p12 2. Импортируем полученный p12 фйал в виде jsk файла в keystore keytool -importkeystore -destkeystore c:/Work/client.jks -deststoretype jks -srckeystore client.p12 -srcstoretype pkcs12 А вот собственно окончательный вариант создания java key store (jsk) из Java. (Используется http://www.bouncycastle.org/latest_releases.html, нужны bcprov-jdk15on-150.jar и bcpkix-jdk15on-150.jar) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. Само подключение: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Всем спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2014, 05:22 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38647200&tid=2127148]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 366ms |

| 0 / 0 |
