我在设置证书时遇到问题。我设法使用这个指令:
http://dev.mysql.com/doc/refman/5.0/en/creating-ssl-certs.html
不幸的是,我需要使用我公司的CA和证书来完成这项工作。
[mysqld]
/* some params here */
ssl-ca=/tmp/ca-bundle.crt
ssl-cert=/tmp/[ip].crt
ssl-key=/tmp/[ip]-privkey.pem
ssl-cipher=DHE-RSA-AES256-SHA:AES128-SHA
MySQL的:
show variables like "%ssl%";
+---------------+--------------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /tmp/ca-bundle.crt |
| ssl_capath | |
| ssl_cert | /tmp/[IP].crt |
| ssl_cipher | DHE-RSA-AES256-SHA:AES128-SHA |
| ssl_key | /tmp/[IP]-privkey.pem |
+---------------+--------------------------------------------+
在没有ssl的情况下登录正常工作,如果我尝试使用ssl时会出现问题:
mysql -u root -p --ssl-ca=/tmp/ca-bundle.crt
Enter password:
ERROR 2026 (HY000): SSL connection error: socket layer send error
服务器日志不包含有关此连接的任何信息,但tpcdump显示客户端和服务器之间存在一些数据包。
当我将此配置放在CentOS 6.5上时,一切正常,所以我认为问题存在于yassl的某个地方。
我检查了证书和密钥的标题(有人建议yassl有pkcs8的问题),但似乎很好:
$ head -n 1 [IP].crt
-----BEGIN CERTIFICATE-----
$ head -n 1 [IP]-privkey.pem
-----BEGIN RSA PRIVATE KEY-----
服务器版本:
mysql> select version();
+----------------------+
| version() |
+----------------------+
| 5.5.37-0+wheezy1-log |
+----------------------+
有没有人有任何建议?
答案 0 :(得分:1)
我设法解决了我的问题。
Mysql由于某种原因出现了crt证书问题,我所要做的就是将服务器证书转换为pem格式:
openssl x509 -in .crt -out .pem -outform PEM
CA证书必须保持不变(crt格式)。
show variables like "%ssl%";
+---------------+--------------------------------+
| Variable_name | Value |
+---------------+--------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /tmp/ca-bundle.crt |
| ssl_capath | |
| ssl_cert | /tmp/[IP].pem |
| ssl_cipher | |
| ssl_key | /tmp/[IP]-privkey.pem |
+---------------+--------------------------------+
和连接:
mysql -u test -ptesttest --ssl-ca=ca-bundle.crt --ssl-cert [CERT2].pem --ssl-key=[CERT2]-privkey.pem