Details
- 
    Bug 
- 
    Status: Closed (View Workflow)
- 
    Major 
- 
    Resolution: Duplicate
- 
    2.7.2
- 
    None
Description
Currently, TLS parameters must be set in the connection URL. If you try to set them in a Properties object, the connection attempt will fail.
For example, this test program successfully connects:
| import java.sql.*; | 
| import java.util.Properties; | 
|  | 
| public class MariaDB_Connection_Test { | 
|  | 
| // Main Process | 
| public static void main(String[] args) { | 
| Connection conn = null; | 
|  | 
| try { | 
|  | 
| Properties connProperties = new Properties(); | 
|  | 
| connProperties.put("user", "my_user"); | 
| connProperties.put("password", "my_passwd"); | 
|  | 
| // Establish the Connection | 
|          conn = DriverManager.getConnection( | 
| "jdbc:mariadb://geoff-test-repl.my-proj.instance.skysql.net:5001/?useSSL=true&serverSslCert=/home/geoff/Downloads/tls_chain.pem", | 
|             connProperties); | 
|  | 
| // Use the connection | 
| // ... | 
|       } | 
| catch (Exception e) { | 
|  | 
| // Report Exception | 
|          e.printStackTrace(); | 
|       } | 
|    } | 
| }
 | 
But this test program fails to connect:
| import java.sql.*; | 
| import java.util.Properties; | 
|  | 
| public class MariaDB_Connection_Test { | 
|  | 
| // Main Process | 
| public static void main(String[] args) { | 
| Connection conn = null; | 
|  | 
| try { | 
|  | 
| Properties connProperties = new Properties(); | 
|  | 
| connProperties.put("user", "my_user"); | 
| connProperties.put("password", "my_passwd"); | 
| connProperties.put("useSSL", true); | 
| connProperties.put("serverSslCert", "/home/geoff/Downloads/stage_chain.pem"); | 
|  | 
| // Establish the Connection | 
|          conn = DriverManager.getConnection( | 
| "jdbc:mariadb://geoff-test-repl.my-proj.instance.skysql.net:5001/", | 
|             connProperties); | 
|  | 
| // Use the connection | 
| // ... | 
|       } | 
| catch (Exception e) { | 
|  | 
| // Report Exception | 
|          e.printStackTrace(); | 
|       } | 
|    } | 
| }
 | 
The stack trace is:
| java.sql.SQLInvalidAuthorizationSpecException: Could not connect to address=(geoff-test-repl.my-proj.instance.skysql.net)(port=5001)(type=master) : (conn=89) Access denied for user 'my_user'@'10.87.0.97' (using password: YES) | 
| Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding' | 
| 	at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:66) | 
| 	at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:192) | 
| 	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1392) | 
| 	at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635) | 
| 	at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150) | 
| 	at org.mariadb.jdbc.Driver.connect(Driver.java:89) | 
| 	at java.sql.DriverManager.getConnection(DriverManager.java:664) | 
| 	at java.sql.DriverManager.getConnection(DriverManager.java:208) | 
| 	at MariaDB_Connection_Test.main(MariaDB_Connection_Test.java:24) | 
| Caused by: java.sql.SQLInvalidAuthorizationSpecException: (conn=89) Access denied for user 'my_user'@'10.87.0.97' (using password: YES) | 
| Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding' | 
| 	at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:66) | 
| 	at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:187) | 
| 	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authenticationHandler(AbstractConnectProtocol.java:767) | 
| 	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:553) | 
| 	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1387) | 
| 	... 6 more
 | 
This seems to apply to the following TLS parameters at least, but I have not tested every TLS parameter:
- useSSL
- serverSslCert
- trustServerCertificate
Attachments
Issue Links
- duplicates
- 
                    CONJ-858 Properties parameter different than string not taken in account -         
- Closed
 
-