为SSL配置了MySQL,但SSL仍被禁用..!


9

我使用以下脚本为MySQL配置了SSL。

#!/bin/bash
#
mkdir -p /root/abc/ssl_certs
cd /root/abc/ssl_certs
#
echo "--> 1. Create CA cert, private key"
openssl genrsa 2048 > ca-key.pem

echo "--> 2. Create CA cert, certificate"
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem

echo "--> 3. Create Server certificate, key"
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem

echo "--> 4. Create Server certificate, cert"
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
echo ""
echo 
echo ""

echo "--> 5. Create client certificate, key. Use DIFFERENT common name then server!!!!"
echo ""
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
echo "6. Create client certificate, cert"
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
exit 0

创建了以下文件:

ca-key.pem             ca-cert.pem
server-req.pem         server-key.pem       server-cert.pem
client-req.pem         client-key.pem       client-cert.pem

然后,我将server-cert.pem和client-cert.pem合并到ca.pem中(我读了一篇文章来做..)

我在MySQL中创建了一个ssl用户:

GRANT ALL ON  *.* to sslsuer@hostname IDENTIFIED BY 'pwd' REQUIRE SSL;

接下来,我在my.cnf中添加了以下内容

[mysqld]
ssl-ca          = /root/abc/ssl_certs/ca.pem
ssl-cert        = /root/abc/ssl_certs/server-cert.pem
ssl-key         = /root/abc/ssl_certs/server-key.pem

重新启动服务器后,我连接到mysql,但仍未使用SSL :(

mysql -u ssluser -p

SSL:                    Not in use

甚至have_ssl参数仍然显示为禁用。.:(

mysql> show variables like '%ssl%';
+---------------+---------------------------------------------+
| Variable_name | Value                                       |
+---------------+---------------------------------------------+
| have_openssl  | DISABLED                                    |
| have_ssl      | DISABLED                                    |
| ssl_ca        | /root/abc/ssl_certs/ca.pem          |
| ssl_capath    |                                             |
| ssl_cert      | /root/abc/ssl_certs/server-cert.pem |
| ssl_cipher    |                                             |
| ssl_key       | /root/abc/ssl_certs/server-key.pem  |
+---------------+---------------------------------------------+

我错过了任何步骤,还是出了什么问题?

详细漏掉步骤的答案将不胜感激。


您正在使用哪个版本的OpenSSL?并请在MySQL中启用错误+警告日志记录。如果看到“无法读取私钥”错误消息,则可能是该错误以某种方式导致了。在较旧的系统上创建新的密钥和证书,并在最近的MySQL上使用它们,为我解决了这个问题。
gertvdijk 2012年

@gertvdijk我用过openssl-1.0.1c。我正在检查日志中提到的错误。
Sunrays 2012年

首先。检查mysql是否支持ssl。mysql --ssl --help同样不要忘记对my.cnf进行这些修改后重新启动mysql
Valentin Bajrami 2012年

1
@ val0x00ff是如果禁用have_ssl值,则MySQL支持ssl。
Sunrays 2012年

尝试mysql --ssl -u ssluser -p在客户端上强制使用SSL。之后,您可以确定为什么REQUIRE SSL无法使用。
johannes 2012年

Answers:



3

尝试检查以下内容:

  • 启用MySQL的警告输出日志记录,并读取那些实际的日志条目。
  • 检查文件系统权限,以使运行MySQL的用户(mysql?)读取文件。在/root我看来,默认情况下没有。
  • Apparmor或SELinux是否阻止MySQL读取证书和密钥?
  • 最近的OpenSSL与MySQL不兼容可能会给您带来讨厌的错误。我一直无法在MySQL可以读取的Ubuntu 12.04上生成密钥,而我在Debian Squeeze上生成的密钥可以正常工作。



0

[mysqld]my.cnf文件的部分中添加“ ssl”,例如

ssl
ssl-ca          = /root/abc/ssl_certs/ca.pem
ssl-cert        = /root/abc/ssl_certs/server-cert.pem
ssl-key         = /root/abc/ssl_certs/server-key.pem

然后重新启动mysql并再次检查。会的。


0

我认为此问题是由于您没有正确指定CA证书,服务器密钥和服务器证书的文件路径而导致的。必须采用以下格式...

ssl-ca=path/to/repo/mysql-directory/path/to/pem/cacert.pem
ssl-cert=path/to/repo/mysql-directory/path/to/pem/server-cert.pem
ssl-key=path/to/repo/mysql-directory/path/to/pem/server-key.pem

即,您需要mysql安装文件夹中的证书和密钥的完整文件路径,而不是相对的“ / root /”路径。

这是我的安装示例:

mysql> show variables like '%ssl%';
+---------------+----------------------------------------------------------+
| Variable_name | Value                                                    |
+---------------+----------------------------------------------------------+
| have_openssl  | YES                                                      |
| have_ssl      | YES                                                      |
| ssl_ca        | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/ca.pem         |
| ssl_capath    |                                                          |
| ssl_cert      | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-cert.pem|
| ssl_cipher    |                                                          |
| ssl_key       | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-key.pem |
+---------------+----------------------------------------------------------+

请参考以下链接以获取更多信息。 https://dev.mysql.com/doc/connector-net/zh/connector-net-tutorials-ssl.html


他的路径以开头/,这意味着它们是完整路径,而不是相对路径。/root/是Unix系统上root用户的主文件夹。
bobpaul
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.