Хочу поделиться опытом немного.
Собрать mysqld с поддержкой SSL - эт не сложно (./configure --with-yassl или ./configure --with-openssl="...").
Далее: с помощью чего угодно (например, OpenSSL) генерим:
1. Самоподписанный (Self-signed) корневой сертификат (Root CA certificate). Этот файл указываем в параметре --ssl-ca=...
2. Серверный сертификат на базе
этого же CA-сертификата. Сертификат - отдельно, ключ - отдельно. оба этих файла указываем в параметрах --ssl-cert=сертификат и --ssl-key=закрытый ключ к нему. Внимание: ключ должен быть незашифрованным (не требующим пароля, в случае с OpenSSL не забываем указать -nodes при генерации ключа).
3. Если пользователь в базе указан с требованием REQUIRE SSL, тогда клиенту достаточно копии открытого ключа CA-сертификата, например:
$ openssl rsa -in CAkey.pem -out public_key.pem -pubout
Этот ключ копируется клиенту и указывается в качестве параметра ssl-key (например, mysql --ssl-key=public_key.pem --user=...). Для большинства случаев в моей практике этого хватает.
Теперь об интересном: задал параметры подключения:
db.setConnectOptions("CLIENT_SSL=1");
...и оно прицепилось на сервер с учётной записью, для которой стояло требование REQUIRE SSL. Сцуко мистика... 0_о Ключ я не указывал, ибо некуда... Вопрос: как ОНО это делает?? 0_о