我在将SSL激活到MariaDB时遇到问题。 我用自签名证书设置了MariaDB。
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
+---------------------+--------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------+
| have_openssl | NO |
| have_ssl | YES |
| ssl_ca | /etc/mysql/ssl/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql/ssl/server-cert.pem |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | /etc/mysql/ssl/server-key.pem |
| version_ssl_library | YaSSL 2.4.4 |
+---------------------+--------------------------------+
我使用开放源代码应用程序进行连接,该应用程序会创建jdbc网址:
database.driver.mysql.jdbcurl=jdbc\:mysql\://192.168.1.25\:3306/DATABASE?useUnicode\=Yes&characterEncoding\=ISO8859_1
连接正常。
我将自签名证书导入到客户端,并尝试通过设置&useSSL\=true
来强制实施SSL。现在我得到了错误:
java.rmi.RemoteException: connection to database.jdbc:mysql://192.168.1.25:3306/DATABASE?useUnicode=Yes&characterEncoding=ISO8859_1&serverTimezone=Europe/Paris&useSSL=true failed; nested exception is:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
使用参数&useSSL\=true&verifyServerCertificate=false&requireSSL\=true
可以再次建立连接。
如果我在MariaDB中检查“状态”,则显示:“ SSL:未使用”。
如何验证使用SSL加密的连接?我确认了客户端被询问是否要信任服务器证书。
如果我对选项和database.driver.mysql.jdbcurl=jdbc\:mysql\://192.168.1.25\:3306/DATABASE?useUnicode\=Yes&characterEncoding\=ISO8859_1&serverTimezone=Europe/Paris&useSSL\=true&verifyServerCertificate=false&requireSSL\=true
有所了解
有用。但是,我假设在这种情况下不使用SSL。
对于数据库用户(名称为DATABASE),当前不需要SSL。我激活了测试所需的X509,但也失败了。
任何暗示错误来源的提示都非常感谢。
谢谢! 马库斯