mysql ssl 证书_在MySQL中启用SSL

我正在运行Ubuntu Server 12.04,我想启用到MySQL的SSL连接.

我用OpenSSL生成了以下密钥/证书文件:

> ca-cert.pem

> server-cert.pem

> server-key.pem

我将这些存储在/ etc / mysql中,然后添加了以下行添加到/etc/mysql/my.cnf:

ssl-ca=/etc/mysql/ca-cert.pem

ssl-cert=/etc/mysql/server-cert.pem

ssl-key=/etc/mysql/server-key.pem

接下来,我用sudo service restart mysql重新启动服务器.

但是,这似乎不启用SSL.在mysql会话中:

mysql> show variables like '%ssl%';

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

| Variable_name | Value |

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

| have_openssl | DISABLED |

| have_ssl | DISABLED |

| ssl_ca | /etc/mysql/ca-cert.pem |

| ssl_capath | |

| ssl_cert | /etc/mysql/server-cert.pem |

| ssl_cipher | |

| ssl_key | /etc/mysql/server-key.pem |

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

我缺少什么想法?谢谢

解决方法:

Ubuntu 12.04附带一个OpenSSL 1.0.1,它的默认值与旧的OpenSSL 0.9.8版本有些不同.

除此之外,如果您使用openssl req -newkey rsa:2048生成RSA密钥,您最终会得到一个名为PKCS #8的密钥.以PEM格式表示,这些密钥具有更多通用性 – — BEGIN PRIVATE KEY —–标题,它不会告诉你它是什么类型(RSA,DSA,EC)键.

以前,使用OpenSSL 0.9.8时,密钥始终采用称为P001的格式,表示为PEM,标题为—– BEGIN RSA PRIVATE KEY —–.

因此,您无法简单地更改页眉和页脚:

-----BEGIN PRIVATE KEY-----

-----BEGIN RSA PRIVATE KEY-----`

这不是一回事,也不行.相反,您需要使用openssl rsa将密钥转换为旧格式.像这样:

openssl rsa -in key_in_pkcs1_or_pkcs8.pem -out key_in_pkcs1.pem

Ubuntu 12.04上的MySQL(v5.5.35)正在使用名为yaSSL(v2.2.2)的SSL实现.它期望密钥采用PKCS#1格式,并且不支持OpenSSL 1.0及更新版本使用的PKCS#8格式.如果您只是更改页眉和页脚,正如此帖子中的其他帖子所建议的那样,MySQL / yaSSL不会抱怨,但您将无法连接,最终会出现如下错误:

ERROR 2026 (HY000): SSL connection error: protocol version mismatch

Ubuntu 14.04附带OpenSSL 1.0.1f和新设置.除此之外,它还将生成带有SHA256摘要的证书,而不是早期版本中使用的SHA1.在整体上,与MySQL捆绑在一起的yaSSL版本也不支持这一点.

如果您要生成用于MySQL的证书,请记住确保将RSA密钥转换为传统的PKCS#1 PEM格式,并且证书使用SHA1摘要.

以下是如何生成自己的CA,服务器证书和客户端证书的示例.

# Generate a CA key and certificate with SHA1 digest

openssl genrsa 2048 > ca-key.pem

openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem

# Create server key and certficate with SHA1 digest, sign it and convert

# the RSA key from PKCS #8 (OpenSSL 1.0 and newer) to the old PKCS #1 format

openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem

openssl x509 -sha1 -req -in server-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem

openssl rsa -in server-key.pem -out server-key.pem

# Create client key and certificate with SHA digest, sign it and convert

# the RSA key from PKCS #8 (OpenSSL 1.0 and newer) to the old PKCS #1 format

openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem > client-req.pem

openssl x509 -sha1 -req -in client-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem

openssl rsa -in client-key.pem -out client-key.pem

标签:mysql,ssl,openssl

来源: https://codeday.me/bug/20190807/1611969.html


版权声明:本文为weixin_35380427原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。