Używam Ubuntu Server 12.04 i chcę włączyć połączenia SSL z MySQL.
Wygenerowałem następujące pliki kluczy / certyfikatów za pomocą OpenSSL:
- ca-cert.pem
- server-cert.pem
- server-key.pem
Zapisałem je w /etc/mysql
, a następnie dodałem następujące wiersze do /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
Następnie zrestartowałem serwer za pomocą sudo service restart mysql
.
Nie wydaje się jednak, aby włączało SSL. W ramach sesji 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 |
+---------------+----------------------------+
Jakieś pomysły, których mi brakuje? Dzięki
Odpowiedzi:
Ubuntu 12.04 jest wyposażony w OpenSSL 1.0.1, który ma nieco inne ustawienia domyślne niż starsza wersja OpenSSL 0.9.8.
Między innymi, jeśli używasz
openssl req -newkey rsa:2048
do generowania klucza RSA, otrzymasz klucz w formacie o nazwie PKCS # 8 . Klucze te, reprezentowane w formacie PEM, mają bardziej ogólny-----BEGIN PRIVATE KEY-----
nagłówek, który nie mówi, jaki to rodzaj klucza (RSA, DSA, EC).Poprzednio w OpenSSL 0.9.8 klucze były zawsze w formacie o nazwie PKCS # 1 , który reprezentowany był jako PEM, miał nagłówek
-----BEGIN RSA PRIVATE KEY-----
.Z tego powodu nie można po prostu zmienić nagłówka i stopki z:
do
To nie to samo i nie zadziała. Zamiast tego musisz przekonwertować klucz na stary format za pomocą
openssl rsa
. Lubię to:MySQL (wersja 5.5.35) w systemie Ubuntu 12.04 korzysta z implementacji protokołu SSL o nazwie yaSSL (wersja 2.2.2). Oczekuje, że klucze będą w formacie PKCS # 1 i nie obsługują formatu PKCS # 8 używanego przez OpenSSL 1.0 i nowsze. Jeśli po prostu zmienisz nagłówek i stopkę, jak sugerują inne posty w tym wątku, MySQL / yaSSL nie będzie narzekać, ale nie będziesz mógł się połączyć i zamiast tego skończy się taki błąd:
Ubuntu 14.04 zawiera OpenSSL 1.0.1f i nowe ustawienia. Między innymi wygeneruje certyfikaty z skrótami SHA256 zamiast SHA1, który był używany we wcześniejszych wersjach. Nawiasem mówiąc, wersja yaSSL dołączona do MySQL również tego nie obsługuje.
Jeśli generujesz certyfikaty do użytku z MySQL, pamiętaj, aby upewnić się, że klucze RSA są konwertowane na tradycyjny format PEM PKCS # 1 i że certyfikaty używają skrótów SHA1.
Oto przykład, jak wygenerować własny urząd certyfikacji, certyfikat serwera i certyfikat klienta.
źródło
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
błędy (przy użyciu OpenSSL 1.0.1f). Przełączyłem się na OpenSSL 1.0.1e i działało to z powyższymi instrukcjami.Pomogło mi to:
Nagłówek i stopka pliku server-key.pem wyglądały tak:
Ale wymaga czegoś takiego:
Uwaga BEGIN RSA PRIVATE KEY
Aby zobaczyć dziennik:
Mam nadzieję że to pomoże.
źródło
openssl rsa
Miałem te same problemy w dniu 12.04, ale w rzeczywistości przyczyną były problemy.
Znalazłem rozwiązanie na forach Ubuntu , przenosząc
.pem
pliki w celu ich/etc/mysql
rozwiązania.Możesz także zmienić konfigurację zbroi w
/etc/apparmor.d/usr.sbin.mysqld
.źródło
Upewnij się, że użytkownik uruchamiający proces mysqld ma dostęp do odczytu kluczy i plików certyfikatów. Jeśli uruchomisz MySQL przy użyciu konta „mysql”, będziesz:
W przeciwnym razie w dzienniku błędów mogą pojawić się następujące informacje:
źródło
Na Ubuntu 16.04, wpadłem
mysql_ssl_rsa_setup
, widział pliki w show zmiennych jak w pytaniu, alehave_ssl
ihave_openssl
nadalDISABLED
.Rozwiązaniem było
chown mysql.mysql /var/lib/mysql/*.pem
. Alternatywnie, zakładam, że jeśli uruchomisz mysql_ssl_rsa_setup jako użytkownik mysql, utworzy on pliki z odpowiednimi uprawnieniami.źródło
Plik klucza prywatnego powinien wyglądać (format PKCS # 1):
Jeśli zamiast tego Twój klucz prywatny zaczyna się od:
(Format PKCS # 8), powinieneś przekonwertować go w następujący sposób:
Nie dodawaj ręcznie
RSA
tagu „brakujące” ” , ponieważ format jest inny.źródło
Opcje uruchamiania SSL powinny znajdować się w górnej części pliku my.cnf, w przeciwnym razie mogą zostać zignorowane. Miałem problemy z uruchomieniem mysql 5.6 na RHEL 6.4, gdzie zmienne SSL były ignorowane, miałem je na końcu pliku my.cnf. Przeniosłem je na początek pliku (tuż poniżej [mysqld]), a następnie ponownie uruchomiłem serwer i wszystko było w porządku.
źródło