Tüm Ürünler
Search
Belge Merkezi

PolarDB:Configure SSL encryption

Son Güncelleme:Oct 07, 2026

Aktarım halindeki verilerin güvenliğini artırmak için Secure Sockets Layer (SSL) şifrelemeyi etkinleştirebilir ve uygulama hizmetlerinize bir CA sertifikası yükleyebilirsiniz. SSL, veri güvenliğini ve bütünlüğünü iyileştirmek amacıyla ağ bağlantılarını taşıma katmanında şifreler; ancak bu işlem bağlantı gecikme süresini artırabilir.

Arka plan bilgileri

SSL, bir web tarayıcısı ile bir web sunucusu arasında veri aktarımı için güvenli bir kanal oluşturmak amacıyla Netscape tarafından geliştirilen bir güvenlik protokolüdür. RC4, MD5 ve RSA gibi şifreleme algoritmaları kullanarak iletişimi güvence altına alır. Internet Engineering Task Force (IETF), SSL 3.0'ı standartlaştırarak Transport Layer Security (TLS) olarak yeniden adlandırdı. SSL daha yaygın bir terim olsa da bu belgede SSL şifrelemeden bahsedilirken TLS şifrelemeye atıfta bulunulmaktadır.

Senaryolar

  • Genel internet üzerinden bir veritabanına erişim: Bir istemci genel internet üzerinden bir PolarDB kümesine bağlandığında, veri bağlantısı güvenilmeyen bir ağa maruz kalır. Man-in-the-middle saldırılarını önlemek için şifreleme gereklidir.

  • Güvenlik ve uyumluluk gereksinimlerini karşılama: PCI-DSS ve GDPR gibi belirli sektör veya veri koruma düzenlemeleri, aktarım halindeki hassas veriler için şifreleme kullanılmasını zorunlu kılar.

  • Ağ ortamları arasında iletişim: Hibrit cloud veya çok VPC mimarisinde, ağ sınırlarını aşan veri akışlarının gizliliğini ve bütünlüğünü sağlamak için SSL şifreleme gerekir.

Sınırlamalar

  • Tek uç nokta şifrelemesi: Her küme, aynı anda yalnızca bir uç nokta için SSL şifrelemeyi destekler. Kümeniz hem bir genel hem de bir dahili uç nokta ile yapılandırılmışsa, iş senaryonıza göre şifrelemek üzere birini seçmeniz gerekir.

  • Şifrelenecek bir uç nokta seçmeye ilişkin öneriler:

    • Veritabanına genel internet üzerinden erişiyorsanız, aktarım halindeki verileri korumak için genel uç nokta için SSL şifrelemeyi etkinleştirmenizi öneririz.

    • Veritabanına yalnızca bir VPC içinden erişiyorsanız ve güvenlik ile uyumluluk gereksinimlerini karşılamak istiyorsanız, dahili uç nokta için SSL şifrelemeyi etkinleştirmenizi öneririz.

  • Uç nokta uzunluğu sınırı: SSL şifreleme etkinleştirilmiş bir PolarDB uç noktası 64 karakterden kısa olmalıdır. Bir uç noktayı nasıl değiştireceğiniz hakkında bilgi için bkz. PolarProxy'yi Yapılandırma.

Önemli

Yordam

1. Adım: SSL şifrelemeyi etkinleştirin

Önemli

SSL şifrelemeyi etkinleştirmek kümenizi yeniden başlatır. Bu işlemi yoğun olmayan saatlerde yapmanızı öneririz.

  1. PolarDB konsoluna giriş yapın. Sol gezinme bölmesinde Clusters öğesine tıklayın. Kümenizin bulunduğu bölgeyi seçin ve ardından küme kimliğine tıklayın.

  2. Sol gezinme bölmesinde Settings and Management > Security seçeneğini belirleyin.

  3. SSL Settings sekmesinde, SSL şifrelemeyi etkinleştirmek için SSL Status anahtarını açın.

    Not

    Birincil, küme ve özel uç noktalar için SSL yapılandırabilirsiniz.

  4. Configure SSL iletişim kutusunda şifrelenecek uç noktayı seçin ve ardından OK öğesine tıklayın.

2. Adım: Sertifikayı indirin

SSL şifrelemeyi etkinleştirdikten sonra, bir istemci PolarDB kümesine uzaktan bağlandığında veritabanının kimliğini doğrulamak için PolarDB kümesinin sertifikasını indirebilirsiniz.

  1. SSL Settings sekmesinde, istediğiniz uç noktanın bölümünde Download öğesine tıklayın.

  2. İndirilen dosya, aşağıdaki üç dosyayı içeren sıkıştırılmış bir pakettir:

    • .p7b dosyası: Windows'ta CA sertifikasını içe aktarmak için kullanılır.

    • .pem dosyası: Diğer sistemlerde veya uygulamalarda CA sertifikasını içe aktarmak için kullanılır.

    • .jks dosyası: CA sertifika zincirini Java uygulamalarına içe aktarmak için kullanılan, parolası apsaradb olan bir Java truststore sertifika dosyasıdır.

      Not

      Java'da JKS sertifika dosyasını kullanırken JDK 7 ve JDK 8 için varsayılan güvenlik yapılandırmasını değiştirmeniz gerekir. PolarDB veritabanına bağlanan sunucuda jre/lib/security/java.security dosyasını düzenleyin ve aşağıdaki iki ayarı değiştirin:

      jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224
      jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

      JDK güvenlik ayarlarını değiştirmezseniz aşağıdakine benzer bir hata oluşabilir. Bu ve diğer ilgili hatalar genellikle yanlış Java güvenlik ayarlarından kaynaklanır.

      javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints

3. Adım: Bir istemciden PolarDB'ye bağlanın

SSL şifrelemeyi etkinleştirdikten sonra, bir istemci ile PolarDB kümesi arasındaki bir bağlantının şifrelenip şifrelenmediği istemcinin türüne ve ayarlarına bağlıdır. Örneğin, bazı istemciler varsayılan olarak şifrelenmiş bağlantılar kullanabilir. Şifrelenmiş bir bağlantı kurmak ve PolarDB kümesinin kimliğini doğrulamak için istemcinin ayarlarını veya kodunu değiştirebilirsiniz.

Not

PolarDB kümelerinde oturum açmak ve bunları yönetmek için Data Management (DMS) kullanıyorsanız bağlantıyı şifrelemeniz gerekmez.

CLI

MySQL istemcilerinin 5.7.11 ve sonraki sürümleri için, bağlantı komutunda SSL şifrelemeyi yapılandırmak amacıyla --ssl-mode seçeneğini kullanabilirsiniz.

  • --ssl-mode=DISABLED: Bağlantı şifrelenmez.

  • --ssl-mode=PREFERRED veya --ssl-mode seçeneğinin belirtilmemesi: Şifrelenmiş bir bağlantı kurmaya çalışır. Başarısız olursa bunun yerine şifrelenmemiş bir bağlantı kurar.

  • --ssl-mode=REQUIRED: Şifrelenmiş bir bağlantı gerektirir. Şifrelenmiş bir bağlantı kurulamazsa bağlantı başarısız olur.

  • --ssl-mode=VERIFY_CA: Şifrelenmiş bir bağlantı gerektirir ve sunucu sertifikasını yerel CA sertifikasına göre doğrular.

  • --ssl-mode=VERIFY_IDENTITY: Şifrelenmiş bir bağlantı gerektirir, sunucu sertifikasını yerel CA sertifikasına göre doğrular ve sunucunun ana bilgisayar adının veya IP adresinin bağlantı için kullanılanla eşleştiğini kontrol eder.

Örnek 1: Başarısız olması durumunda şifrelenmemiş bağlantıya geri dönerek şifrelenmiş bir bağlantı kurmayı deneyin.

mysql -h {endpoint} -u {username} -p --ssl-mode=PREFERRED

Örnek 2: Şifrelenmiş bir bağlantı gerektirin ve sunucu sertifikasını doğrulayın.

mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={CA certificate path}/ApsaraDB-CA-Chain.pem
Not
  • {endpoint}, {username} ve {CA certificate path} değerlerini gerçek değerlerinizle değiştirin.

  • --ssl-mode seçeneği hakkında daha fazla bilgi için MySQL belgelerine bakın.

MySQL Workbench

  1. MySQL Workbench'i açın ve Database > Manage Connections öğesini seçin.

  2. PolarDB uç noktasını, kullanıcı adını ve parolayı girin.

  3. SSL sekmesinde Use SSL parametresini ayarlayın, SSL CA File değerini indirilen PEM formatlı CA sertifikasının yoluna ayarlayın ve ardından Test Connection veya OK öğesine tıklayın.

    Not

    Use SSL seçeneklerinin açıklaması için komut satırı bağlantıları için --ssl-mode seçeneğinin açıklamasına bakın.

Application code

Java

Connector/J (mysql-connector-java), MySQL için resmi JDBC sürücüsüdür. Bu örnekte bağımlılık olarak mysql-connector-java sürüm 8.0.19 kullanılmaktadır.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>
Not

Aşağıdaki örnek kod, SSL modunu belirtmek için sslMode özelliğini kullanır. Bu özellik, mysql-connector-java'nın 8.0.13 ve sonraki sürümlerinde desteklenir. Daha eski bir sürüm kullanıyorsanız bunun yerine useSSL, requireSSL ve verifyServerCertificate özelliklerini kullanmanız gerekir. Ayrıntılar için MySQL belgelerine bakın.

Örnek kod:

package com.example.ssltest;
import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
    public static void main(String[] args) {
       Connection conn = null;
        MysqlDataSource mysqlDS=null;
        try{
            mysqlDS = new MysqlDataSource();
            // Set SslMode as needed. For options, see the command-line connection instructions.
            mysqlDS.setSslMode("VERIFY_IDENTITY");
            // The truststore contains the CA certificate. Set the truststore type to JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Replace the path after file:/ with the path to your ApsaraDB-CA-Chain.jks file.
            mysqlDS.setTrustCertificateKeyStoreUrl("file://{CA certificate path}/ApsaraDB-CA-Chain.jks");
            // The password for the downloaded JKS file is apsaradb and cannot be changed.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
            // Your database endpoint
            mysqlDS.setServerName("your_polardb_host");
            // Your database port
            mysqlDS.setPort(3306);
            // Your database username
            mysqlDS.setUser("your_username");
            // Your database password
            mysqlDS.setPassword("your_password");
            // Your database name
            mysqlDS.setDatabaseName("your_database");
            System.out.println("Attempting to connect to the database...");
            conn = mysqlDS.getConnection();
            System.out.println("Database connection successful!");
            // Use try-with-resources to ensure Statement and ResultSet are automatically closed.
            try (Statement stmt = conn.createStatement();
                 ResultSet rs = stmt.executeQuery("SELECT VERSION()")) {
                // Check if the query returned a result.
                if (rs.next()) {
                    // Get the result from the first column and print it.
                    String dbVersion = rs.getString(1);
                    System.out.println("Database version: " + dbVersion);
                } else {
                    System.out.println("Failed to retrieve database version information.");
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        } finally {
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Python

# Install pymysql
# pip install pymysql
import pymysql
# --- Configure your database information ---
db_config = {
    'host': 'your_polardb_host',          # Your cluster endpoint
    'user': 'your_username',            # Your username
    'password': 'your_password',        # Your password
    'database': 'your_database',        # The database you want to connect to
    'port': 3306
}
# --- Configure SSL information ---
ssl_args = {
    'ca': '{CA certificate path}/ApsaraDB-CA-Chain.pem',
    'mode': 'VERIFY_CA'
}
try:
    # Establish a connection, passing ssl parameters
    print("Attempting to connect to MySQL with SSL...")
    connection = pymysql.connect(**db_config, ssl=ssl_args)
    print("SSL connection successful!")
    with connection.cursor() as cursor:
        # Execute a simple query to verify the connection
        cursor.execute("SELECT VERSION()")
        version = cursor.fetchone()
        print(f"Database version: {version[0]}")
except pymysql.MySQLError as e:
    # Printing SSL-related errors can be helpful for troubleshooting
    print(f"Connection failed: {e}")
finally:
    if 'connection' in locals() and connection.open:
        connection.close()
        print("Database connection closed.")

Sysbench benchmarking

  1. Sertifikayı indirin ve paketi açın.

  2. Sysbench'i yapılandırın:

    1. sysbench komutuna --mysql-ssl=on ekleyin.

    2. Sysbench 1.0.x kullanıyorsanız .pem dosyasının adını cacert.pem olarak değiştirin ve sysbench komutunu çalıştırdığınız dizine yerleştirin. Sysbench'in bu sürümü SSL sertifika adını cacert.pem olarak sabit kodlar.

    3. Sysbench 1.1.x kullanıyorsanız SSL sertifikasını Sysbench 1.0.x'teki gibi yapılandırabilirsiniz. Alternatif olarak, --mysql-ssl-ca parametresini kullanarak PEM dosyasının yolunu belirtebilirsiniz.

  3. Karşılaştırma yöntemleri için bkz. Performans test yöntemi (OLTP).

    Not

    Karşılaştırma sırasında MySQL İstemci sürümünüzün PolarDB kümenizin MySQL sürümüyle eşleştiğinden emin olun.

4. Adım: Şifrelenmiş bağlantıyı doğrulayın

SSL protokolünün birden çok sürümü vardır. PolarDB şu anda TLSv1.2 ve sonraki sürümleri destekler. SSL el sıkışması sırasında istemci ve PolarDB sunucusu, TLS sürümü, şifre paketi ve oturum anahtarı dahil olmak üzere bağlantı parametrelerini müzakere eder. Şifre paketlerinin ayrıntılı listesi için OpenSSL resmi web sitesini ziyaret edin.

  1. SSL için yapılandırılmış bir istemci kullanarak PolarDB kümesine bağlanın.

  2. Aşağıdaki SQL sorgusunu yürütün:

    SHOW STATUS LIKE 'ssl_cipher';
    +---------------+---------------------------+
    | Variable_name | Value                     |
    +---------------+---------------------------+
    | Ssl_cipher    | DHE-RSA-AES256-GCM-SHA384 |
    +---------------+---------------------------+
  3. Sonucu analiz edin:

    • Value sütunu DHE-RSA-AES256-GCM-SHA384 gibi boş olmayan bir değer döndürürse mevcut bağlantı şifrelenir.

    • Value sütunu boşsa mevcut bağlantı şifrelenmez. İstemci yapılandırmanızı kontrol edin.

Bakım ve yönetim

Korunan uç noktayı değiştirin

SSL tarafından korunan uç noktayı değiştirmek için o uç noktanın bölümünde Configure SSL öğesine tıklayın.

Önemli

Korunan uç noktayı değiştirmek SSL sertifikasını otomatik olarak günceller ve kümenizi yeniden başlatır. Bu işlemi yoğun olmayan saatlerde yapın.

Sertifika geçerlilik süresini güncelleyin

SSL uç noktasını değiştirirseniz veya sertifikanın süresi dolmak üzereyse sertifikanın geçerlilik süresini manuel olarak güncellemeniz gerekir.

Önemli

Sertifika geçerlilik süresini güncellemek kümeyi yeniden başlatır. Bu kesinti süresini buna göre planlayın.

  1. SSL Settings sekmesinde Update Validity Period öğesine tıklayın.

  2. Görüntülenen iletişim kutusunda OK öğesine tıklayın.

  3. Geçerlilik süresi güncellendikten sonra yeni sertifikayı indirin ve yapılandırın.

Not

Bir SSL sertifikasının geçerlilik süresi uzatılamaz. Yalnızca geçerlilik süresini güncelleyebilir ve ardından sertifikayı yeniden indirip yapılandırabilirsiniz. Sertifikanın süresi her dolduğunda manuel olarak güncellemekten kaçınmak için otomatik sertifika rotasyonunu etkinleştirmenizi öneririz. Daha fazla bilgi için bkz. Otomatik sertifika rotasyonunu etkinleştirme.

Otomatik sertifika rotasyonunu etkinleştirin

Otomatik sertifika rotasyonunu etkinleştirirseniz PolarDB süresinin dolmasına 10 gün kala kümenin bakım penceresi sırasında sertifikayı otomatik olarak yeniler.

Önemli

Otomatik sertifika yenileme kümeyi yeniden başlatır. Bu işlemi yoğun olmayan saatlerde yapmanızı öneririz.

  1. SSL Settings sekmesinde Advanced Settings öğesine tıklayın.

  2. Advanced Settings iletişim kutusunda otomatik sertifika rotasyonunu etkinleştirin ve Confirm öğesine tıklayın.

SSL şifrelemeyi devre dışı bırakın

Önemli

SSL şifrelemeyi devre dışı bırakmak kümenizi yeniden başlatır. Bu işlemi yoğun olmayan saatlerde yapmanızı öneririz.

  1. SSL Settings sekmesinde SSL şifrelemeyi devre dışı bırakmak için SSL Status anahtarını kapatın.

  2. Görüntülenen iletişim kutusunda OK öğesine tıklayın.

İlgili API'ler


API


Açıklama


DescribeDBClusterSSL


Bir PolarDB kümesinin SSL ayarlarını sorgular.


ModifyDBClusterSSL


Bir PolarDB kümesi için SSL şifrelemeyi etkinleştirir veya devre dışı bırakır ya da CA sertifikasını günceller.