Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ŞUNLAR IÇIN GEÇERLIDIR:
MySQL için Azure Veritabanı - Esnek Sunucu
MySQL için Azure Veritabanı Esnek Sunucu, aktarım katmanı güvenliği (TLS) şifrelemesi ile Güvenli Yuva Katmanı (SSL) kullanarak istemci uygulamalarınızı MySQL için Azure Veritabanı Esnek Sunucu örneğine bağlamayı destekler. TLS, veritabanı sunucunuz ve istemci uygulamalarınız arasında şifrelenmiş ağ bağlantıları sağlayarak, uyumluluk gereksinimlerine uymanızı sağlayan endüstri standardı bir protokoldür.
MySQL için Azure Veritabanı Esnek Sunucu varsayılan olarak Aktarım Katmanı Güvenliği (TLS 1.2) kullanan şifreli bağlantıları destekler ve TLS 1.0 ve TLS 1.1 ile gelen tüm bağlantılar varsayılan olarak reddedilir. Esnek Sunucunuzdaki şifreli bağlantı zorlama veya TLS sürüm yapılandırması, bu makalede açıklandığı gibi değiştirilebilir.
MySQL için Azure Veritabanı Esnek Sunucu örneğiniz için sahip olabileceğiniz ssl ve TLS ayarlarının farklı yapılandırmaları aşağıdadır:
Önemli
TLS 1.0 ve TLS 1.1 Protokolleri için Desteğin Kaldırılmasına göre, daha önce Eylül 2024'e kadar TLS 1.0 ve 1.1'i tamamen kullanımdan kaldırmayı planlamıştım. Ancak bazı müşteriler tarafından tanımlanan bağımlılıklar nedeniyle zaman çizelgesini genişletmeye karar verdik.
- 31 Ağustos 2025'den itibaren tls 1.0 veya 1.1 kullanan tüm sunucular için zorunlu yükseltmeye başlayacağız. Bu tarihten sonra TLS 1.0 veya 1.1 kullanan tüm bağlantılar herhangi bir zamanda çalışmayı durdurabilir. Olası hizmet kesintilerini önlemek için müşterilerin TLS 1.2'ye geçişlerini 31 Ağustos 2025'den önce tamamlamalarını kesinlikle öneririz.
- Eylül 2024'te yeni sunucuların ARTıK TLS 1.0 veya 1.1 kullanmasına izin verilmeyecek ve mevcut sunucuların bu sürümlere düşürmesine izin verilmeyecek.
Hizmet kesintilerini önlemek için müşterilerin uygulamalarını en kısa sürede TLS 1.2'yi destekleyecek şekilde güncelleştirmelerini kesinlikle öneririz.
| Senaryo | Sunucu parametresi ayarları | Açıklama |
|---|---|---|
| SSL zorlamayı devre dışı bırakma | require_secure_transport = KAPALI | Eski uygulamanız MySQL için Azure Veritabanı Esnek Sunucu'ya şifreli bağlantıları desteklemiyorsa, require_secure_transport=KAPALI ayarını yaparak MySQL için Azure Veritabanı Esnek Sunucu örneğinize şifreli bağlantıların uygulanmasını devre dışı bırakabilirsiniz. |
| TLS sürüm < 1.2 ile SSL'i zorunlu kılma (Eylül 2024'te kullanım dışı bırakılacak) | require_secure_transport = ON ve tls_version = TLS 1.0 veya TLS 1.1 | Eski uygulamanız şifreli bağlantıları destekliyorsa ancak TLS sürüm < 1.2 gerektiriyorsa, şifrelenmiş bağlantıları etkinleştirebilir, ancak MySQL için Azure Veritabanı Esnek Sunucu örneğinizi uygulamanız tarafından desteklenen TLS sürümü (1.0 veya 1.1) ile bağlantılara izin verecek şekilde yapılandırabilirsiniz. Yalnızca MySQL için Azure Veritabanı Esnek Sunucu sürümü v5.7 ile desteklenir |
| TLS sürümü = 1.2 (Varsayılan yapılandırma) ile SSL'i zorunlu kılma | require_secure_transport = ON ve tls_version = TLS 1.2 | Bu, MySQL için Azure Veritabanı Esnek Sunucu için önerilen ve varsayılan yapılandırmadır. |
| TLS sürüm = 1.3 ile SSL'i zorunlu kılma | require_secure_transport = ON ve tls_version = TLS 1.3 | Bu, yeni uygulama geliştirme için kullanışlıdır ve önerilir. Yalnızca MySQL için Azure Veritabanı Esnek Sunucu sürümü v8.0 ile desteklenir |
Not
MySQL için Azure Veritabanı Esnek Sunucuda SSL Şifrelemesi değişiklikleri desteklenmez. FIPS şifreleme paketleri, tls_version TLS sürüm 1.2 olarak ayarlandığında varsayılan olarak zorlanır. 1.2 sürümü dışındaki TLS sürümleri için SSL Şifrelemesi, MySQL topluluk yüklemesi ile birlikte gelen varsayılan ayarlara ayarlanır.
Bu makalede şunları öğreneceksiniz:
- MySQL için Azure Veritabanı Esnek Sunucu örneğinizi yapılandırma
- SSL devre dışı bırakıldı
- TLS sürümüyle zorunlu SSL ile
- mysql komut satırını kullanarak MySQL için Azure Veritabanı Esnek Sunucu örneğine bağlanma
- Şifrelenmiş bağlantılar devre dışı bırakılmıştır
- Şifrelenmiş bağlantılar etkinken
- Bağlantınızın şifreleme durumunu doğrulama
- Çeşitli uygulama çerçevelerini kullanarak şifrelenmiş bağlantılarla MySQL için Azure Veritabanı Esnek Sunucu örneğine bağlanma
MySQL için Azure Veritabanı Esnek Sunucu örneğinizde SSL zorlamayı devre dışı bırakma
İstemci uygulamanız şifrelenmiş bağlantıları desteklemiyorsa, MySQL için Azure Veritabanı Esnek Sunucu örneğinizde şifrelenmiş bağlantı zorlamasını devre dışı bırakmanız gerekir. Şifrelenmiş bağlantı zorlamasını devre dışı bırakmak için, ekran görüntüsünde gösterildiği gibi require_secure_transport sunucu parametresini KAPALI olarak ayarlamanız ve etkili olması için sunucu parametresi yapılandırmasını kaydetmeniz gerekir. require_secure_transport, hemen etkin olan ve sunucunun yeniden başlatılmasını gerektirmeyen dinamik bir sunucu parametresidir .
SSL devre dışı bırakılmış mysql komut satırı istemcisi kullanarak bağlanma
Aşağıdaki örnekte, mysql komut satırı arabirimini kullanarak sunucunuza nasıl bağlandığınız gösterilmektedir.
--ssl-mode=DISABLED mysql istemcisinden TLS/SSL bağlantısını devre dışı bırakmak için bağlantı dizesi ayarını kullanın. Değerleri gerçek sunucu adınız ve parolanızla değiştirin.
mysql.exe -h mydemoserver.mysql.database.azure.com -u myadmin -p --ssl-mode=DISABLED
Önemli
require_secure_transport KAPALI olarak ayarlanması, sunucu tarafında şifrelenmiş bağlantıların desteklenmediği anlamına gelmez. require_secure_transport MySQL için Azure Veritabanı Esnek Sunucu örneğinde KAPALI olarak ayarlarsanız, ancak istemci şifreli bağlantıyla bağlanırsa, yine de kabul edilir. require_secure_transport=OFF ile yapılandırılan MySQL için Azure Veritabanı Esnek Sunucu örneğine mysql istemcisini kullanan aşağıdaki bağlantı da aşağıda gösterildiği gibi çalışır.
mysql.exe -h mydemoserver.mysql.database.azure.com -u myadmin -p --ssl-mode=REQUIRED
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.7.29-log MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show global variables like '%require_secure_transport%';
+--------------------------+-------+
| Variable_name | Value |
| +--------------------------+-------+ |
| require_secure_transport | OFF |
| +--------------------------+-------+ |
| 1 row in set (0.02 sec) |
Özetle, require_secure_transport=KAPALI ayarı, MySQL için Azure Veritabanı Esnek Sunucu'da şifrelenmiş bağlantıların uygulanmasını rahatlatır ve şifrelenmiş bağlantılara ek olarak istemciden sunucuya şifrelenmemiş bağlantılara izin verir.
TLS sürümüyle SSL'i zorunlu kılma
MySQL için Azure Veritabanı Esnek Sunucu örneğinizde TLS sürümlerini ayarlamak için *tls_version- sunucu parametresini ayarlamanız gerekir. TLS protokolü için varsayılan ayar TLS 1.2'dir. Uygulamanız SSL ile MySQL sunucusu bağlantılarını destekliyorsa ancak TLS 1.2 dışında bir protokol gerektiriyorsa, sunucu parametresinde TLS sürümlerini ayarlamanız gerekir. *tls_version- parametresinin etkili olması için sunucunun yeniden başlatılmasını gerektiren statik bir sunucu parametresidir. MySQL için Azure Veritabanı Esnek Sunucu'nun kullanılabilir sürümleri için desteklenen protokoller aşağıdadır.
| esnek sunucu sürümünü MySQL için Azure Veritabanı | Desteklenen tls_version Değerleri | Varsayılan Ayar |
|---|---|---|
| MySQL 5.7 | TLS 1.0, TLS 1.1(Eylül 2024'te kullanım dışı bırakılacak) TLS 1.2 | TLS 1.2 |
| MySQL 8.0 | TLS 1.2, TLS 1.3 | TLS 1.2 |
TLS/SSL ile mysql komut satırı istemcisi kullanarak bağlanma
Genel SSL sertifikasını indirme
İstemci uygulamalarınızla şifreli bağlantılar kurmak için DigiCert Genel Kök G2 sertifikasını ve Microsoft RSA Kök Sertifika Yetkilisi 2017 sertifikasını indirin. Sunucuya bağlantı başlatmadan önce her iki sertifikayı da birleştirin. Ayrıntılı adımlar için bkz. İstemcinizde kök sertifika depoyu güncelleştirme
Not
Azure Kamu bulutundaki sunucularınız için DigiCert Genel Kök G2 sertifikasını indirmeniz gerekir.
Azure Mooncake'teki sunucularınız için DigiCert Genel Kök sertifikasını indirmeniz gerekir.
Sertifika dosyasını tercih ettiğiniz konuma kaydedin. Örneğin, bu öğreticide yerel ortamınızda veya c:\ssl uygulamanızın barındırıldığı istemci ortamında veya \var\www\html\bin kullanılır. Bu, uygulamaların SSL üzerinden veritabanına güvenli bir şekilde bağlanmasına olanak tanır.
MySQL için Azure Veritabanı Esnek Sunucu örneğinizi Özel erişim (VNet Tümleştirmesi) ile oluşturduysanız, sunucunuzla aynı sanal ağ içindeki bir kaynaktan sunucunuza bağlanmanız gerekir. Bir sanal makine oluşturabilir ve bunu MySQL için Azure Veritabanı Esnek Sunucu örneğiniz ile oluşturulan sanal ağa ekleyebilirsiniz.
MySQL için Azure Veritabanı Esnek Sunucu örneğinizi Genel erişimle (izin verilen IP adresleri) oluşturduysanız, yerel IP adresinizi sunucunuzdaki güvenlik duvarı kuralları listesine ekleyebilirsiniz.
Yerel ortamınızdan sunucuya bağlanmak için mysql.exe veya MySQL Workbench'i MySQL için Azure Veritabanı - Esnek Sunucu ile kullan seçeneğini belirleyebilirsiniz>
Aşağıdaki örnekte, mysql komut satırı arabirimini kullanarak sunucunuza nasıl bağlandığınız gösterilmektedir. TLS/SSL sertifika doğrulamasını --ssl-mode=REQUIRED zorunlu kılmak için bağlantı dizesi ayarını kullanın. Yerel sertifika dosya yolunu parametresine --ssl-ca geçirin. Değerleri gerçek sunucu adınız ve parolanızla değiştirin.
sudo apt-get install mysql-client
wget --no-check-certificate https://cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem
mysql -h mydemoserver.mysql.database.azure.com -u mydemouser -p --ssl-mode=REQUIRED --ssl-ca=DigiCertGlobalRootG2.crt.pem
Not
--ssl-ca hedefine geçirilen değerin, kaydettiğiniz sertifikanın dosya yolu ile eşleştiğini onaylayın.
SSL ile MySQL için Azure Veritabanı- Esnek'e bağlanıyorsanız ve sertifika konu adıyla tam doğrulama (sslmode=VERTIFY_IDENTITY) gerçekleştirme seçeneği kullanıyorsanız, bağlantı dizesi servername.mysql.database.azure.com< kullanın>.
Sunucunuza şifrelenmemiş bağlantılarla bağlanmaya çalışırsanız, güvenli olmayan aktarım kullanan bağlantıların aşağıdakine benzer şekilde yasak olduğunu belirten bir hata görürsünüz:
ERROR 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.
TLS/SSL bağlantısını doğrulama
MYSQL sunucunuza TLS/SSL kullanarak bağlandığınızdan emin olmak için mysql status komutunu yürütebilirsiniz:
mysql> status
Çıkışı gözden geçirerek bağlantının şifrelendiğinden emin olun. Bu, şunu göstermelidir: SSL: Şifreleme kullanımda. Bu şifreleme paketi bir örnek gösterir ve istemciyi temel alarak farklı bir şifreleme paketi görebilirsiniz.
Sunucunuzda yapılandırılan TLS protokollerini tanımlama
'tls_version' GIBI GENEL DEĞIŞKENLERI GÖSTER komutunu çalıştırabilirsiniz; ve tüm protokollerin hangi protokollerin yapılandırıldığını anlamak için değerini denetleyin.
mysql> SHOW GLOBAL VARIABLES LIKE 'tls_version';
İstemcilerim tarafından sunucuya bağlanmak için hangi TLS protokollerinin kullanıldığını nasıl bulabilirim?
Bağlanmak için hangi TLS sürümünün kullanıldığını belirlemek için aşağıdaki komutu çalıştırabilir ve oturumun tls_version bakabilirsiniz.
SELECT sbt.variable_value AS tls_version, t2.variable_value AS cipher,
processlist_user AS user, processlist_host AS host
FROM performance_schema.status_by_thread AS sbt
JOIN performance_schema.threads AS t ON t.thread_id = sbt.thread_id
JOIN performance_schema.status_by_thread AS t2 ON t2.thread_id = t.thread_id
WHERE sbt.variable_name = 'Ssl_version' and t2.variable_name = 'Ssl_cipher' ORDER BY tls_version;
Çeşitli uygulama çerçevelerini kullanarak şifrelenmiş bağlantılarla MySQL için Azure Veritabanı Esnek Sunucu örneğine bağlanma
Azure portalında sunucunuz için kullanılabilen "Bağlantı Dizeleri" sayfasında önceden tanımlanmış bağlantı dizeleri, TLS/SSL kullanarak veritabanı sunucunuza bağlanmak için ortak diller için gerekli parametreleri içerir. TLS/SSL parametresi bağlayıcıya göre değişir. Örneğin, "useSSL=true", "sslmode=required" veya "ssl_verify_cert=true" ve diğer çeşitlemeler.
Uygulamanızdan TLS/SSL üzerinden MySQL için Azure Veritabanı Esnek Sunucu örneğine şifreli bir bağlantı kurmak için aşağıdaki kod örneklerine bakın:
WordPress
SSL ortak sertifikasını indirin ve satırın arkasına // **MySQL settings - You can get this info from your web host** //aşağıdaki satırları wp-config.php ekleyin.
//** Connect with SSL ** //
define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
//** SSL CERT **//
define('MYSQL_SSL_CERT','/FULLPATH/on-client/to/DigiCertGlobalRootG2.crt.pem');
PHP
$conn = mysqli_init();
mysqli_ssl_set($conn,NULL,NULL, "/var/www/html/DigiCertGlobalRootG2.crt.pem", NULL, NULL);
mysqli_real_connect($conn, 'mydemoserver.mysql.database.azure.com', 'myadmin', 'yourpassword', 'quickstartdb', 3306, MYSQLI_CLIENT_SSL);
if (mysqli_connect_errno()) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
PHP (PDO kullanarak)
$options = array(
PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
);
$db = new PDO('mysql:host=mydemoserver.mysql.database.azure.com;port=3306;dbname=databasename', 'myadmin', 'yourpassword', $options);
Python (MySQLConnector Python)
try:
conn = mysql.connector.connect(user='myadmin',
password='<password>',
database='quickstartdb',
host='mydemoserver.mysql.database.azure.com',
ssl_ca='/var/www/html/DigiCertGlobalRootG2.crt.pem')
except mysql.connector.Error as err:
print(err)
Python (PyMySQL)
conn = pymysql.connect(user='myadmin',
password='<password>',
database='quickstartdb',
host='mydemoserver.mysql.database.azure.com',
ssl={'ca': '/var/www/html/DigiCertGlobalRootG2.crt.pem'})
Django (PyMySQL)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'quickstartdb',
'USER': 'myadmin',
'PASSWORD': 'yourpassword',
'HOST': 'mydemoserver.mysql.database.azure.com',
'PORT': '3306',
'OPTIONS': {
'ssl': {'ca': '/var/www/html/DigiCertGlobalRootG2.crt.pem'}
}
}
}
Ruby programlama dili
client = Mysql2::Client.new(
:host => 'mydemoserver.mysql.database.azure.com',
:username => 'myadmin',
:password => 'yourpassword',
:database => 'quickstartdb',
:sslca => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
)
Golang
rootCertPool := x509.NewCertPool()
pem, _ := ioutil.ReadFile("/var/www/html/DigiCertGlobalRootG2.crt.pem")
if ok := rootCertPool.AppendCertsFromPEM(pem); !ok {
log.Fatal("Failed to append PEM.")
}
mysql.RegisterTLSConfig("custom", &tls.Config{RootCAs: rootCertPool})
var connectionString string
connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true&tls=custom",'myadmin' , 'yourpassword', 'mydemoserver.mysql.database.azure.com', 'quickstartdb')
db, _ := sql.Open("mysql", connectionString)
Java (Java için MySQL Bağlayıcısı)
# generate truststore and keystore in code
String importCert = " -import "+
" -alias mysqlServerCACert "+
" -file " + ssl_ca +
" -keystore truststore "+
" -trustcacerts " +
" -storepass password -noprompt ";
String genKey = " -genkey -keyalg rsa " +
" -alias mysqlClientCertificate -keystore keystore " +
" -storepass password123 -keypass password " +
" -dname CN=MS ";
sun.security.tools.keytool.Main.main(importCert.trim().split("\\s+"));
sun.security.tools.keytool.Main.main(genKey.trim().split("\\s+"));
# use the generated keystore and truststore
System.setProperty("javax.net.ssl.keyStore","path_to_keystore_file");
System.setProperty("javax.net.ssl.keyStorePassword","password");
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
System.setProperty("javax.net.ssl.trustStorePassword","password");
url = String.format("jdbc:mysql://%s/%s?serverTimezone=UTC&useSSL=true", 'mydemoserver.mysql.database.azure.com', 'quickstartdb');
properties.setProperty("user", 'myadmin');
properties.setProperty("password", 'yourpassword');
conn = DriverManager.getConnection(url, properties);
Java (Java için MariaDB Bağlayıcısı)
# generate truststore and keystore in code
String importCert = " -import "+
" -alias mysqlServerCACert "+
" -file " + ssl_ca +
" -keystore truststore "+
" -trustcacerts " +
" -storepass password -noprompt ";
String genKey = " -genkey -keyalg rsa " +
" -alias mysqlClientCertificate -keystore keystore " +
" -storepass password123 -keypass password " +
" -dname CN=MS ";
sun.security.tools.keytool.Main.main(importCert.trim().split("\\s+"));
sun.security.tools.keytool.Main.main(genKey.trim().split("\\s+"));
# use the generated keystore and truststore
System.setProperty("javax.net.ssl.keyStore","path_to_keystore_file");
System.setProperty("javax.net.ssl.keyStorePassword","password");
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
System.setProperty("javax.net.ssl.trustStorePassword","password");
url = String.format("jdbc:mariadb://%s/%s?useSSL=true&trustServerCertificate=true", 'mydemoserver.mysql.database.azure.com', 'quickstartdb');
properties.setProperty("user", 'myadmin');
properties.setProperty("password", 'yourpassword');
conn = DriverManager.getConnection(url, properties);
.NET (MySqlConnector)
var builder = new MySqlConnectionStringBuilder
{
Server = "mydemoserver.mysql.database.azure.com",
UserID = "myadmin",
Password = "yourpassword",
Database = "quickstartdb",
SslMode = MySqlSslMode.VerifyCA,
SslCa = "DigiCertGlobalRootG2.crt.pem",
};
using (var connection = new MySqlConnection(builder.ConnectionString))
{
connection.Open();
}
Node.js
var fs = require('fs');
var mysql = require('mysql');
const serverCa = [fs.readFileSync("/var/www/html/DigiCertGlobalRootG2.crt.pem", "utf8")];
var conn=mysql.createConnection({
host:"mydemoserver.mysql.database.azure.com",
user:"myadmin",
password:"yourpassword",
database:"quickstartdb",
port:3306,
ssl: {
rejectUnauthorized: true,
ca: serverCa
}
});
conn.connect(function(err) {
if (err) throw err;
});
İlgili içerik
- MySQL Workbench'i MySQL için Azure Veritabanı - Esnek Sunucu ile kullanma
- PHP'MySQL için Azure Veritabanı - Esnek Sunucu ile kullanma
- Azure CLI kullanarak MySQL için Azure Veritabanı - Esnek Sunucu için sanal ağlar oluşturma ve yönetme
- MySQL için Azure Veritabanı - Esnek Sunucuda ağ iletişimi
- MySQL için Azure Veritabanı - Esnek Sunucu güvenlik duvarı kuralları