Saya menjalankan Ubuntu Server 12.04, dan saya ingin mengaktifkan koneksi SSL ke MySQL.
Saya telah membuat file kunci / sertifikat berikut dengan OpenSSL:
- ca-cert.pem
- server-cert.pem
- server-key.pem
Saya menyimpan ini di /etc/mysql
, kemudian menambahkan menambahkan baris berikut ke /etc/mysql/my.cnf
:
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
Selanjutnya, saya restart server dengan sudo service restart mysql
.
Namun, ini sepertinya tidak mengaktifkan SSL. Dalam sesi mysql:
mysql> show variables like '%ssl%';
+---------------+----------------------------+
| Variable_name | Value |
+---------------+----------------------------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| 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 |
+---------------+----------------------------+
Ada ide apa yang saya lewatkan? Terima kasih
Jawaban:
Ubuntu 12.04 hadir dengan OpenSSL 1.0.1, yang memiliki standar yang agak berbeda dari versi OpenSSL 0.9.8 yang lebih lama.
Antara lain, jika Anda menggunakan
openssl req -newkey rsa:2048
untuk menghasilkan kunci RSA, Anda akan berakhir dengan kunci dalam format yang disebut PKCS # 8 . Diwakili dalam format PEM, tombol-tombol ini memiliki-----BEGIN PRIVATE KEY-----
header yang lebih umum , yang tidak memberi tahu Anda apa kunci (RSA, DSA, EC) itu.Sebelumnya, dengan OpenSSL 0.9.8, kunci selalu dalam format yang disebut PKCS # 1 , yang diwakili sebagai PEM, memiliki header
-----BEGIN RSA PRIVATE KEY-----
.Karena itu, Anda tidak dapat dengan mudah mengubah header dan footer dari:
untuk
Itu bukan hal yang sama dan itu tidak akan berhasil. Alih-alih, Anda perlu mengonversi kunci ke format lama menggunakan
openssl rsa
. Seperti ini:MySQL (v5.5.35) di Ubuntu 12.04 menggunakan implementasi SSL yang disebut yaSSL (v2.2.2). Ia mengharapkan kunci berada dalam format PKCS # 1 dan tidak mendukung format PKCS # 8 yang digunakan oleh OpenSSL 1.0 dan yang lebih baru. Jika Anda hanya mengubah header dan footer, seperti yang disarankan oleh posting lain di utas ini, MySQL / yaSSL tidak akan mengeluh, tetapi Anda tidak akan dapat terhubung dan malah berakhir dengan kesalahan seperti ini:
Ubuntu 14.04 hadir dengan OpenSSL 1.0.1f dan pengaturan baru. Antara lain, itu akan menghasilkan sertifikat dengan SHA256 mencerna bukannya SHA1, yang digunakan dalam versi sebelumnya. Secara kebetulan, versi yaSSL yang dibundel dengan MySQL juga tidak mendukung ini.
Jika Anda membuat sertifikat untuk digunakan dengan MySQL, ingatlah untuk memastikan kunci RSA dikonversikan ke format PEM # PKCS # 1 tradisional dan bahwa sertifikat menggunakan pencerna SHA1.
Berikut adalah contoh cara menghasilkan CA Anda sendiri, sertifikat server dan sertifikat klien.
sumber
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
kesalahan (menggunakan OpenSSL 1.0.1f). Saya beralih ke OpenSSL 1.0.1e dan bekerja dengan instruksi di atas.Ini membantu saya:
Header dan footer dari file server-key.pem tampak seperti itu:
Tapi itu membutuhkan sesuatu seperti itu:
Catat KUNCI PRIVATE RSA BEGIN
Untuk melihat log:
Semoga ini membantu.
sumber
openssl rsa
Saya memiliki masalah yang sama pada 12,04 tetapi sebenarnya apparmor yang menyebabkan masalah.
Saya menemukan solusi di Forum Ubuntu , memindahkan
.pem
file dalam/etc/mysql
menyelesaikannya.Anda juga dapat mengubah konfigurasi apparmor di
/etc/apparmor.d/usr.sbin.mysqld
.sumber
Pastikan bahwa pengguna yang menjalankan proses mysqld memiliki akses baca ke file kunci dan sertifikat. Jika Anda meluncurkan MySQL menggunakan akun "mysql", Anda akan:
Jika tidak, Anda mungkin mendapatkan yang berikut ini di log kesalahan Anda:
sumber
Pada Ubuntu 16.04, saya berlari
mysql_ssl_rsa_setup
, bisa melihat file dalam acara variabel seperti dalam pertanyaan, tapihave_ssl
danhave_openssl
terus menjadiDISABLED
.Solusinya adalah
chown mysql.mysql /var/lib/mysql/*.pem
. Atau, saya berasumsi jika Anda menjalankan mysql_ssl_rsa_setup sebagai pengguna mysql, itu akan membuat file dengan izin yang benar.sumber
File kunci pribadi akan terlihat seperti (format PKCS # 1):
Jika kunci pribadi Anda dimulai dengan:
(Format PKCS # 8), maka Anda harus mengonversinya seperti ini:
Jangan menambahkan
RSA
tag "hilang" " secara manual dengan tangan, karena formatnya berbeda.sumber
Opsi startup SSL harus di dekat bagian atas file my.cnf Anda atau mungkin diabaikan. Saya mengalami masalah menjalankan mysql 5.6 pada RHEL 6.4 di mana variabel SSL diabaikan, saya memilikinya di akhir file my.cnf. Saya memindahkan mereka di bagian atas file (tepat di bawah [mysqld]) lalu saya me-restart server dan semuanya baik-baik saja.
sumber