2014-08-06 4 views
0

Я пытаюсь настроить сервер mysql 5.5.38-0ubuntu0.14.04.1 с поддержкой SSL на Ubuntu 14.04 Linux (64 бит) с ядром 3.13.0-32-generic.MySQL 5.5 и SSL на Ubuntu 14.04

Я позволил удаленный доступ к 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, которое используется для ключей сервера и клиента/ключей. В некоторых случаях одни и те же имена являются проблемой.

Я правильно установил разрешения всех * .pem-файлов (mysql: adm), которые находятся в/etc/mysql /. После restaring MySQL, я могу войти в систему как корень и видеть, что 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 

Я попытался решить эту проблему в течение нескольких часов, теперь у меня нет новых идей. Помощь очень ценю!

ответ

5

Решено: Работает как только ключи генерируются с помощью 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