Bug 27100

Summary: Incomplete chroot environment prevents connections via SSL
Product: Sisyphus Reporter: Nikolay A. Fetisov <naf>
Component: MySQL-serverAssignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P3 CC: mike, nickel, rider, shaba
Version: unstable   
Hardware: all   
OS: Linux   

Description Nikolay A. Fetisov 2012-03-21 11:09:49 MSK
Для текущего 5.1.61-alt1, а также как минимум для 5.1.56-alt4 из t6, невозможны соединения с сервером с использованием SSL.

Настройка сервера:
[mysqld]
....
ssl=1
ssl-cert=/etc/mysql/server.cert
ssl-key=/etc/mysql/server.key
....

Сертификаты создаются с использованием cert-sh-functions. 
/etc/mysql/ создаётся внутри chroot. 
После перезапуска сервера согласно "SHOW VARIABLES LIKE '%ssl%'" поддержка SSL в нём включена.

Подключение клиента через SSL заканчивается ошибкой:

# mysql --ssl --ssl-ca=/var/lib/mysql/etc/mysql/server.cert   
ERROR 2026 (HY000): SSL connection error

Сообщение на стороне сервера - "08S01Bad handshake".

Причина - отсутствие внутри chroot /dev/urandom .

После создания устройства и перезапуска сервера
mkdir /var/lib/mysql/dev
mknod /var/lib/mysql/dev/urandom c 1 9
chown root:root /var/lib/mysql/dev /var/lib/mysql/dev/urandom
service mysqld restart

соединения через SSL начинают работать:
# mysql --ssl --ssl-ca=/var/lib/mysql/etc/mysql/server.cert
....
mysql> status;
...
SSL:                    Cipher in use is DHE-RSA-AES256-SHA
...
Comment 1 Michael Shigorin 2012-03-21 13:28:53 MSK
Спасибо, так и сделал в /etc/chroot.d/mysql.lib.
Comment 2 Repository Robot 2012-03-21 14:11:19 MSK
MySQL-5.1.61-alt2 -> sisyphus:

* Wed Mar 21 2012 Michael Shigorin <mike@altlinux> 5.1.61-alt2
- create /dev/urandom in chroot so SSL support actually works;
  thanks naf@ (closes: #27100)
Comment 3 Nikolay A. Fetisov 2012-03-22 13:02:54 MSK
Спасибо!

... Хотя странно это всё. /dev/urandom, по документации, нужен для встроенного yaSSL - т.е. для <= 5.1.56-alt1 . Упоминаний о его необходимости в сборках с OpenSSL нет, и что-то в коде MySQL его тоже сходу увидеть не удалось. Но без него не работает - ни 5.1.56-alt1, ни сборки с OpenSSL.
Comment 4 Michael Shigorin 2012-03-23 00:55:55 MSK
Про yassl/openssl заметил, но сам с SSL его никогда не применял -- либо сокет, либо в пределах одного физического хоста опять же...