SSL için MySQL yapılandırıldı, ancak SSL hala DEVRE DIŞI BIRAKILDI ..!


9

Aşağıdaki komut dosyasını kullanarak MySQL için SSL'yi yapılandırdım.

#!/bin/bash
#
mkdir -p /root/abc/ssl_certs
cd /root/abc/ssl_certs
#
echo "--> 1. Create CA cert, private key"
openssl genrsa 2048 > ca-key.pem

echo "--> 2. Create CA cert, certificate"
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem

echo "--> 3. Create Server certificate, key"
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem

echo "--> 4. Create Server certificate, cert"
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
echo ""
echo 
echo ""

echo "--> 5. Create client certificate, key. Use DIFFERENT common name then server!!!!"
echo ""
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
echo "6. Create client certificate, cert"
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
exit 0

Aşağıdaki dosyalar oluşturuldu:

ca-key.pem             ca-cert.pem
server-req.pem         server-key.pem       server-cert.pem
client-req.pem         client-key.pem       client-cert.pem

Sonra server-cert.pem ve client-cert.pem dosyalarını ca.pem'de birleştirdim (bunu yapmak için bir yazıda okudum ..)

MySQL'de bir SSL kullanıcısı oluşturdum:

GRANT ALL ON  *.* to sslsuer@hostname IDENTIFIED BY 'pwd' REQUIRE SSL;

Sonra my.cnf içine aşağıdakileri ekledim

[mysqld]
ssl-ca          = /root/abc/ssl_certs/ca.pem
ssl-cert        = /root/abc/ssl_certs/server-cert.pem
ssl-key         = /root/abc/ssl_certs/server-key.pem

Sunucuyu yeniden başlattıktan sonra mysql'e bağlandım ancak SSL hala kullanılmıyordu :(

mysql -u ssluser -p

SSL:                    Not in use

Have_ssl parametresi bile hala devre dışı görünüyordu .. :(

mysql> show variables like '%ssl%';
+---------------+---------------------------------------------+
| Variable_name | Value                                       |
+---------------+---------------------------------------------+
| have_openssl  | DISABLED                                    |
| have_ssl      | DISABLED                                    |
| ssl_ca        | /root/abc/ssl_certs/ca.pem          |
| ssl_capath    |                                             |
| ssl_cert      | /root/abc/ssl_certs/server-cert.pem |
| ssl_cipher    |                                             |
| ssl_key       | /root/abc/ssl_certs/server-key.pem  |
+---------------+---------------------------------------------+

Herhangi bir adımı atladım mı, yanlış olan mı?

Ayrıntılı olarak cevapsız adımlarla cevaplar çok takdir edilecektir.


Hangi OpenSSL sürümünü kullanıyorsunuz? Ve lütfen MySQL'de hata + uyarı günlüğünü etkinleştirin. "Özel anahtarı okuyamıyor" hata iletisini görürseniz, büyük olasılıkla bu hatayı bir şekilde vurursunuz. Eski bir sistemde yeni anahtarlar + sertifikalar oluşturmak, bunları yeni bir MySQL'de kullanmak sorunu benim için çözdü.
gertvdijk

@gertvdijk openssl-1.0.1c kullandım. Belirtilen hata için günlükleri kontrol ediyorum.
Sunrays

Her şeyden önce. MySQL'in SSL'yi destekleyip desteklemediğini kontrol edin. mysql --ssl --helpAyrıca my.cnf için bu tadilatın yapılarak yeniden başlatma mysql unutmayın
Valentin Bayrami

1
@ val0x00ff evet have_ssl değeri devre dışı bırakılmışsa MySQL ssl'yi destekler.
Günışığı

mysql --ssl -u ssluser -pistemcide SSL'yi zorlamaya çalışın . sonra çalışan biri neden REQuIRE SSL neden tanımlamak için olabilir.
johannes

Yanıtlar:



3

Bunu kontrol etmeyi deneyin:

  • MySQL'in uyarı çıkış günlüğünü etkinleştirin ve bu gerçek günlük girişlerini okuyun.
  • MySQL'in çalıştığı kullanıcının ( mysql?) Dosyaları okumasına izin vermek için dosya sistemi izinlerini kontrol edin . İçinde /rootvarsayılan olduğunu sanmıyorum.
  • Apparmor veya SELinux, MySQL'in sertifikaları ve anahtarları okumasını engelliyor mu?
  • Son zamanlarda OpenSSL ve MySQL uyumsuzluğuna dair kötü bir hata ile karşılaşabilirsiniz. Debian Squeeze üzerinde oluşturduklarım iyi çalışıyorken, MySQL'in okuyabileceği Ubuntu 12.04'te anahtarlar oluşturamadım.

2

Ubuntu'da apparmorsertifika dosyalarınıza erişimi engelleyip engellemediğini kontrol edebilirsiniz , kılavuza bakın .

Daha sonra dosya izinlerini / sahipliğini kontrol etmeli ve gerekli hakları eklemelisiniz /etc/apparmor.d/usr.sbin.mysqld. Bu konuya bakın .


2

Bu sorunu yaşadım ve .pem dosyalarındaki sahipliğin değiştirilmesine yardımcı oldu:

chown mysql.mysql /var/lib/mysql/*.pem  (or in your case /root/abc/ssl_certs/*.pem)

(Craig Wright'dan - /ubuntu/194074/enabling-ssl-in-mysql )


Bu benim için sorunu çözdü.
anteatersa

0

"Ssl" dosyasını dosyadaki [mysqld]bölümemy.cnf

ssl
ssl-ca          = /root/abc/ssl_certs/ca.pem
ssl-cert        = /root/abc/ssl_certs/server-cert.pem
ssl-key         = /root/abc/ssl_certs/server-key.pem

ve mysql'yi yeniden başlatıp tekrar kontrol edin. Çalışacak.


0

Bu sorunun CA sertifikası, sunucu anahtarı ve sunucu sertifikası için dosya yollarını doğru bir şekilde belirtmediğinizden kaynaklandığını düşünüyorum. Aşağıdaki biçimde olmalıdır ...

ssl-ca=path/to/repo/mysql-directory/path/to/pem/cacert.pem
ssl-cert=path/to/repo/mysql-directory/path/to/pem/server-cert.pem
ssl-key=path/to/repo/mysql-directory/path/to/pem/server-key.pem

Yani mysql kurulum klasörünüzdeki sertifika ve anahtarların göreceli '/ root /' yoluna değil TAM DOSYA YOLUNA ihtiyacınız vardır.

İşte kurulumumdan bir örnek:

mysql> show variables like '%ssl%';
+---------------+----------------------------------------------------------+
| Variable_name | Value                                                    |
+---------------+----------------------------------------------------------+
| have_openssl  | YES                                                      |
| have_ssl      | YES                                                      |
| ssl_ca        | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/ca.pem         |
| ssl_capath    |                                                          |
| ssl_cert      | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-cert.pem|
| ssl_cipher    |                                                          |
| ssl_key       | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-key.pem |
+---------------+----------------------------------------------------------+

Ek bilgi için aşağıdaki bağlantıya bakın. https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl.html


Yolları a ile başlar /, yani göreli yollar değil tam yollardır. /root/bir unix sistemindeki kök kullanıcının ana klasörüdür.
bobpaul
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.