如何调试 MariaDB SSL连接?

分享于 

4分钟阅读

互联网

  繁體 雙語

问题:

自从从MySQL迁移到Debian 9上的更新的MariaDB安装以来,我一直在努力解决SSL连接问题。

我创建了一个CA证书并将它的安装在服务器和客户机上。 然后我创建了服务器和客户端密钥以及使用CA证书签名的证书。

我可以在没有SSL连接的情况下从客户机到服务器连接到服务器。

我可以使用openssl验证客户端证书:


$ openssl verify MariaDB_client.crt 



MariaDB_client.crt: OK



我知道MariaDB使用yaSSL,但我认为这仍然表明证书和CA是正确的。

在服务器上,我有:


MariaDB> show global variables like '%ssl%';


+---------------------+--------------------------------------+


| Variable_name | Value |


+---------------------+--------------------------------------+


| have_openssl | NO |


| have_ssl | YES |


| ssl_ca |/etc/mysql/conf.d/MariaDB_ca.crt |


| ssl_capath | |


| ssl_cert |/etc/mysql/conf.d/MariaDB_server.crt |


| ssl_cipher | |


| ssl_crl | |


| ssl_crlpath | |


| ssl_key |/etc/mysql/conf.d/MariaDB_server.key |


| version_ssl_library | YaSSL 2.4.4 |


+---------------------+--------------------------------------+



工作的内容:

如果将具有以下内容的. my. cnf文件添加到用户的$HOME 目录中。


[client]


ssl-ca=/--path--/MariaDB_ca.crt


ssl-cert=/--path--/MariaDB_client.crt


ssl-key=/--path--/MariaDB_client.key



。连接失败:


ERROR 2026 (HY000): SSL connection error: unable to verify peer checksum



在服务器日志中,我找到( 不确定这是否相关):


[Warning] IP address 'ip.of.connecting.client' could not be resolved: Name or service not known



我的问题:

  • 如何缩小/调试这里连接问题?

  • 我发现关于服务器和客户端证书是否应该使用相同或者不同的CN的冲突信息。 目前,我使用相同的CN 。

  • 证书是否需要特定的访问权限?


回答 1:

你需要将生成的密钥从数据库服务器复制到客户端,如下所示。


scp -P 22 cacert.pem client-cert.pem client-key.pem username@192.168.0.10:~/certs



但这并不是那么简单。 我有一个关于 40个步骤的大教程来解决这个问题。 我明天将从我的语言翻译到英语,并将尝试粘贴它。


回答 2:

经过许多小时的尝试,现在终于工作了。

关键的一步是在服务器证书中使用服务器的IP作为通用名称(CN)(实际上签名的csr然后提供证书),而不是某些指令建议的任意主机名。 我发现很多来源在这方面是矛盾的。

我使用MariaDB作为与 yaSSL 9链接的发行版,链接到库。 可能与openssl不同。 它们当然与MySQL不同。



DEB  debug  SSL  Mariadb