我试图通过一些应用程序和我的dabtabase之间的SSL连接来保证我的工作。
在第一次,我search如何创build证书,我做这样的事情:
[...]$ mkdir certificats && cd certificats
[...]$ openssl genrsa 2048 > ca-key.pem [...]$ openssl req -new -x509 -nodes -days 500 -key ca-key.pem > ca-cert.pem
[...]$ openssl req -newkey rsa:2048 -days 500 -nodes -keyout server-key.pem > server-req.pem [...]$ openssl x509 -req -in server-req.pem -days 500 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
[...]$ openssl req -newkey rsa:2048 -days 500 -nodes -keyout client-key.pem > client-req.pem [...]$ openssl x509 -req -in client-req.pem -days 500 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
我回答所有问题这样问:相同的答案除了“普通名称”(我看到的地方比这可能会导致问题)的三个文件。
之后,我做了这个:
[...]$ vim /etc/my.cnf
添加以下规则(在[mysqld]上):
ssl-ca=/etc/ssl/certs_mysql/ca-cert.pem ssl-cert=/etc/ssl/certs_mysql/server-cert.pem ssl-key=/etc/ssl/certs_mysql/server-key.pem
现在,当我login到一个正常的帐户,我可以看到使用
SHOW VARIABLES LIKE '%ssl%';
比ssl启用。 (请参阅3path+ 2'是')
所以现在,为了连接,我必须使用:
[...]$ mysql -u user -ppassword -h localhost --ssl-ca=ca-cert.pem --ssl-key=client-key.pem --ssl-cert=client-cert.pem
对 ? (用户处于'REQUIRE SSL'模式)。
但是效果不好:
ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)
如果我从连接中删除“ca-cert.pem”,这个工作“很好”。 我可以连接,当我写“\ s”时,我可以看到像“xxx-xxx-AES264-xxx”这样的“Ssl_cipher”。
所以,我试图添加:
[client] ssl-ca=/etc/ssl/certs_mysql/ca-cert.pem ssl-cert=/etc/ssl/certs_mysql/client-cert.pem ssl-key=/etc/ssl/certs_mysql/client-key.pem
但是,当我在“客户端”部分添加“ssl-x”,mysql停止但不会重新使用
[...]$ service mysqld restart
为什么我不能在客户端部分编写SSLconfiguration?
我尝试连接到我的数据库使用PHP文件,当我使用3个文件,连接被拒绝,但如果我只使用“client-key.pem”和“client-cert.pem”,我已连接。
我看到的地方比使用
[...]$ cat client-cert.pem server-cert.pem > ca-cert.pem
可以解决这个问题,但是所使用的ca-cert包含2个证书?
所以,我的问题是,在CA-cert.pem? 不承认作为“真正的证书”,因此连接拒绝? 但为什么我不能使用[客户端]?
在此先感谢您的答案
尽pipe这不是一个完整的答案,但作为评论发布有点太长了。 但是,如果我们得到这个信息,我们可以进一步得到几个步骤。 所以在这里:
为了解决SSL问题,我想先从等式中取出mysql。 因此,首先使用SSL连接,如下所示:
openssl s_client -connect localhost:MYSQLPORTNR -cert client.pem -key client-key.pem -CAfile ca-cert.pem
其中MYSQLPORTNR当然应该replace为你正在运行mysql的端口号。 然后将这个输出添加到你的文章。