Uygulamanıza güvenli bir şekilde bağlanmak için uygulamanıza SSL bağlantısını MariaDB için Azure Veritabanı
MariaDB için Azure Veritabanı, MariaDB için Azure Veritabanı (SSL) kullanarak istemci uygulamalarına Güvenli Yuva Katmanı destekler. Veritabanı sunucunuzla istemci uygulamalarınız arasında SSL bağlantılarının zorunlu tutulması, sunucuya uygulamanız arasındaki veri akışını şifreleyerek "bağlantıyı izinsiz izleme" saldırılarına karşı korumaya yardımcı olur.
SSL sertifikası alma
MariaDB için Azure Veritabanı sunucunuzla SSL üzerinden iletişim kurmak için gereken sertifikayı indirin ve sertifika dosyasını yerel sürücünize kaydedin (bu öğreticide https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem örneğin c:\ssl kullanılır). Microsoft Internet Explorer ve Microsoft Edge: İndirme işlemi tamamlandıktan sonra sertifikayı BaltimoreCyberTrustRoot.crt.pem olarak yeniden adlandırin.
Bağımsız bulutlarda sunucuların sertifikaları için aşağıdaki bağlantılara bakın: Azure Kamu, Azure Çinve Azure Almanya.
SSL bağlama
SSL üzerinden MySQL Workbench kullanarak sunucuya bağlanma
MySQL Workbench'i SSL üzerinden güvenli bir şekilde bağlanarak yapılandırın.
Yeni Bağlantı Kur iletişim penceresinde SSL sekmesine gidin.
SSL Kullan alanını "Gerekli" olarak güncelleştirin.
SSL CA Dosyası: alanına BaltimoreCyberTrustRoot.crt.pem dosyasının konumunu girin.

Mevcut bağlantılar için bağlantı simgesine sağ tıklar ve düzenle'yi seçerek SSL'yi bebilirsiniz. Ardından SSL sekmesine gidin ve sertifika dosyasını bağlayın.
SSL üzerinden MySQL CLI kullanarak sunucuya bağlanma
SSL sertifikasını bağlamanın başka bir yolu, aşağıdaki komutları yürüterek MySQL komut satırı arabirimini kullanmaktır.
mysql.exe -h mydemoserver.mariadb.database.azure.com -u Username@mydemoserver -p --ssl-mode=REQUIRED --ssl-ca=c:\ssl\BaltimoreCyberTrustRoot.crt.pem
Not
Windows'da MySQL komut satırı arabirimini kullanırken bir hata SSL connection error: Certificate signature check failed alabilirsiniz. Bu gerçekleşirse, --ssl-mode=REQUIRED --ssl-ca={filepath} parametreleri ile değiştirin --ssl .
Azure 'da SSL bağlantılarını zorunlu tutma
Azure portalını kullanma
Azure portal kullanarak, MariaDB sunucusu için Azure veritabanı ' nı ziyaret edin ve bağlantı güvenliği' ne tıklayın. SSL bağlantısını zorla ayarını etkinleştirmek veya devre dışı bırakmak için iki durumlu düğmeyi kullanın ve ardından Kaydet' e tıklayın. Microsoft, gelişmiş güvenlik için her zaman SSL bağlantısını zorla ayarını etkinleştirmenizi önerir.

Azure CLI’yı kullanma
Azure CLı 'de sırasıyla etkin veya devre dışı değerler kullanarak SSL zorlama parametresini etkinleştirebilir veya devre dışı bırakabilirsiniz.
az mariadb server update --resource-group myresource --name mydemoserver --ssl-enforcement Enabled
SSL bağlantısını doğrulama
SSL kullanarak MariaDB sunucunuza bağlandığınızı doğrulamak için MySQL Status komutunu yürütün:
status
Çıktıyı inceleyerek bağlantının şifrelendiğini onaylayın; bu, şunu göstermelidir: SSL: kullanımdaki ŞIFRE AES256-SHA
Örnek kod
Uygulamanızdan SSL üzerinden MariaDB için Azure veritabanı 'na güvenli bir bağlantı kurmak için aşağıdaki kod örneklerine bakın:
PHP
$conn = mysqli_init();
mysqli_ssl_set($conn,NULL,NULL, "/var/www/html/BaltimoreCyberTrustRoot.crt.pem", NULL, NULL) ;
mysqli_real_connect($conn, 'mydemoserver.mariadb.database.azure.com', 'myadmin@mydemoserver', 'yourpassword', 'quickstartdb', 3306, MYSQLI_CLIENT_SSL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
Python (MySQLConnector Python)
try:
conn = mysql.connector.connect(user='myadmin@mydemoserver',
password='yourpassword',
database='quickstartdb',
host='mydemoserver.mariadb.database.azure.com',
ssl_ca='/var/www/html/BaltimoreCyberTrustRoot.crt.pem')
except mysql.connector.Error as err:
print(err)
Python (PyMySQL)
conn = pymysql.connect(user='myadmin@mydemoserver',
password='yourpassword',
database='quickstartdb',
host='mydemoserver.mariadb.database.azure.com',
ssl={'ca': '/var/www/html/BaltimoreCyberTrustRoot.crt.pem'})
Ruby
client = Mysql2::Client.new(
:host => 'mydemoserver.mariadb.database.azure.com',
:username => 'myadmin@mydemoserver',
:password => 'yourpassword',
:database => 'quickstartdb',
:sslca => '/var/www/html/BaltimoreCyberTrustRoot.crt.pem'
:ssl_mode => 'required'
)
Ruby on rayları
default: &default
adapter: mysql2
username: username@mydemoserver
password: yourpassword
host: mydemoserver.mariadb.database.azure.com
sslca: BaltimoreCyberTrustRoot.crt.pem
sslverify: true
Golang
rootCertPool := x509.NewCertPool()
pem, _ := ioutil.ReadFile("/var/www/html/BaltimoreCyberTrustRoot.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@mydemoserver' , 'yourpassword', 'mydemoserver.mariadb.database.azure.com', 'quickstartdb')
db, _ := sql.Open("mysql", connectionString)
Java (JDBC)
# 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.mariadb.database.azure.com', 'quickstartdb');
properties.setProperty("user", 'myadmin@mydemoserver');
properties.setProperty("password", 'yourpassword');
conn = DriverManager.getConnection(url, properties);
Java (MariaDB)
# 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.mariadb.database.azure.com', 'quickstartdb');
properties.setProperty("user", 'myadmin@mydemoserver');
properties.setProperty("password", 'yourpassword');
conn = DriverManager.getConnection(url, properties);
.NET (MySqlConnector)
var builder = new MySqlConnectionStringBuilder
{
Server = "mydemoserver.mysql.database.azure.com",
UserID = "myadmin@mydemoserver",
Password = "yourpassword",
Database = "quickstartdb",
SslMode = MySqlSslMode.VerifyCA,
CACertificateFile = "BaltimoreCyberTrustRoot.crt.pem",
};
using (var connection = new MySqlConnection(builder.ConnectionString))
{
connection.Open();
}
Sonraki adımlar
Sertifika süre sonu ve döndürme hakkında bilgi edinmek için sertifika döndürme belgelerine başvurun