【问题标题】:MySQL 5.5 and SSL on Ubuntu 14.04Ubuntu 14.04 上的 MySQL 5.5 和 SSL
【发布时间】:2014-09-29 18:19:27
【问题描述】:

我正在尝试在内核为 3.13.0-32-generic 的 Ubuntu 14.04 Linux(64 位)上设置一个支持 SSL 的 mysql 服务器 5.5.38-0ubuntu0.14.04.1。

我允许远程访问 mysql 并更改 /etc/mysql/my.cnf 以支持 ssl...

ssl=1
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

我生成了证书...

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

openssl req -newkey rsa:2048 -days 3560 -nodes -keyout server-key.pem > server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem

openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem > client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem

用于服务器和客户端证书/密钥的 Common Name 值有不同的名称。在某些情况下,同名似乎是个问题。

我正确设置了 /etc/mysql/ 中所有 *.pem 文件 (mysql:adm) 的权限。重启mysql后,我可以以root登录,看到现在支持ssl:

mysql> show variables like '%ssl%';
+---------------+-----------------------------------+
| Variable_name | Value                             |
+---------------+-----------------------------------+
| have_openssl  | YES                               |
| have_ssl      | YES                               |
| 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  |
+---------------+-----------------------------------+
7 rows in set (0.00 sec)

所以.. 我生成了一个测试用户来测试 ssl 连接:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'ssluser'@'localhost' IDENTIFIED BY 'password' REQUIRE X509;
mysql> flush privileges;

但是,当我尝试连接时...

# mysql -u ssluser -p --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
Enter password:
ERROR 2026 (HY000): SSL connection error: ASN: bad other signature confirmation

但是,我的证书似乎是有效的:

# openssl verify -CAfile ca-cert.pem server-cert.pem client cert.pem
server-cert.pem: OK
client-cert.pem: OK

我已经尝试了几个小时来解决这个问题,现在我没有任何新的想法.. 非常感谢您的帮助!

【问题讨论】:

    标签: mysql ssl ssl-certificate ubuntu-14.04


    【解决方案1】:

    已解决:使用 SHA1 生成密钥后即可使用

    # 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 2018-07-11
      相关资源
      最近更新 更多