Azure HorizonDB'de uygulama istemci sertifikalarını güncelleştirme (Önizleme)

Uygulamaları Azure HorizonDB'ye bağladığınızda, uygulama istemcisinin güvenilen kök sertifikaları yüklemesi gerekir. Aşağıdaki bölümler, Azure HorizonDB örneğine bağlanan uygulamalar için yaygın bir senaryo olan uygulamalar için güvenilen kök sertifikaları güncelleştirme konusunda size yol gösterir.

Sertifika sabitleme senaryoları için istemcideki Java Anahtar Deposu'nda kök sertifika yetkilisi sertifikalarını içeri aktarma

Özel yazılmış Java uygulamaları, güvenilen sertifika yetkilisi (CA) sertifikaları içeren adlı cacertsvarsayılan bir anahtar deposu kullanır. Genellikle Java güven deposu olarak da bilinir. adlı cacerts sertifika dosyası java.home\lib\security güvenlik özellikleri dizininde bulunur; burada java.home çalışma zamanı ortam dizinidir ( jre SDK'daki dizin veya Java™ 2 Çalışma Zamanı Ortamı'nın üst düzey dizini). PostgreSQL ile istemci sertifikası sabitleme senaryoları için istemci kök CA sertifikalarını güncelleştirmek için aşağıdaki yönergeleri kullanabilirsiniz:

  1. cacerts Zaten gerekli sertifikaları içerip içermediğini görmek için Java anahtar deposuna bakın. Aşağıdaki komutu kullanarak Java anahtar deposundaki sertifikaları listeleyebilirsiniz:

      keytool -list -v -keystore ..\lib\security\cacerts > outputfile.txt
    

    Gerekli sertifikalar istemcideki Java anahtar deposunda yoksa, bunu çıktıda kontrol edebileceğiniz gibi, aşağıdaki yönergeleri izleyin:

  2. Özel anahtar deponuzun yedek kopyasını oluşturma.

  3. Sertifikaları indirin ve erişebileceğiniz bir yere yerel olarak kaydedin.

  4. Gerekli tüm Kök CA sertifikaları dahil edilmiş bir birleşik CA sertifika deposu oluşturun. Aşağıdaki örnekte PostgreSQL JDBC kullanıcıları için DefaultJavaSSLFactory kullanımı gösterilmektedir.

        keytool -importcert -alias PostgreSQLServerCACert  -file D:\ DigiCertGlobalRootG2.crt.pem   -keystore truststore -storepass password -noprompt
    
        keytool -importcert -alias PostgreSQLServerCACert2  -file "D:\ Microsoft ECC Root Certificate Authority 2017.crt.pem" -keystore truststore -storepass password  -noprompt
    
        keytool -importcert -alias PostgreSQLServerCACert  -file D:\ DigiCertGlobalRootCA.crt.pem   -keystore truststore -storepass password -noprompt
    
  5. Özgün keystore dosyasını yeni oluşturulan dosyayla değiştirin:

    System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
    System.setProperty("javax.net.ssl.trustStorePassword","password");
    
  6. Özgün kök CA pem dosyasını birleştirilmiş kök CA dosyasıyla değiştirin ve uygulamanızı/istemcinizi yeniden başlatın.

    PostgreSQL JDBC sürücüsüyle istemci sertifikalarını yapılandırma hakkında daha fazla bilgi için bu belgelere bakın.

    Note

    Sertifikaları istemci sertifika depolarına aktarmak için sertifika .crt dosyalarını .pem biçimine dönüştürmeniz gerekebilir. Azure HorizonDB (Önizleme) içinde Aktarım Katmanı Güvenliği'ni (TLS) kullanabilirsiniz.

Java Key Store'da program aracılığıyla güvenilen sertifikaların listesini alma

Varsayılan olarak, Java güvenilen sertifikaları istemcideki Java yükleme klasöründe bulunan adlı cacerts özel bir dosyada depolar. Aşağıdaki örnek önce bunu okur cacerts ve KeyStore nesnesine yükler:

private KeyStore loadKeyStore() {
    String relativeCacertsPath = "/lib/security/cacerts".replace("/", File.separator);
    String filename = System.getProperty("java.home") + relativeCacertsPath;
    FileInputStream is = new FileInputStream(filename);
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
    String password = "changeit";
    keystore.load(is, password.toCharArray());

    return keystore;
}

için varsayılan parola cacerts şeklindedir changeit , ancak yöneticilerin Java yüklemesinin hemen ardından parolayı değiştirmelerini önerdiğinden gerçek istemcide farklı olmalıdır. KeyStore nesnesini yükledikten sonra, mevcut sertifikaları okumak için PKIXParameters sınıfını kullanabiliriz.

public void whenLoadingCacertsKeyStore_thenCertificatesArePresent() {
    KeyStore keyStore = loadKeyStore();
    PKIXParameters params = new PKIXParameters(keyStore);
    Set<TrustAnchor> trustAnchors = params.getTrustAnchors();
    List<Certificate> certificates = trustAnchors.stream()
      .map(TrustAnchor::getTrustedCert)
      .collect(Collectors.toList());

    assertFalse(certificates.isEmpty());
}

sertifika sabitleme senaryoları için Azure Uygulaması Hizmetlerinde istemciler kullanılırken kök sertifika yetkilisi sertifikalarını güncelleştirme

Azure HorizonDB örneğine bağlanan Azure Uygulaması hizmetler için istemci sertifikalarını güncelleştirmeyle ilgili iki olası senaryomuz olabilir ve bu durum, Azure Uygulaması Hizmetleri'ne dağıtılan uygulamanızla SSL'yi nasıl kullandığınıza bağlıdır.

sertifika sabitleme senaryoları için Azure Kubernetes Service (AKS) istemcilerini kullanırken kök sertifika yetkilisi sertifikalarını güncelleştirme

Azure Kubernetes Service (AKS) üzerinde barındırılan uygulamalarla Azure HorizonDB'ye bağlanmaya çalışıyor ve sertifika sabitleme kullanıyorsanız, bu durum özel bir müşteriye ait ana bilgisayar ortamından erişmeye benzer. AKS'de bir giriş denetleyicisiyle TLS kullanma adımlarına bakın.

Sertifika sabitleme senaryoları için Windows'da .NET (Npgsql) kullanıcıları için kök sertifika yetkilisi sertifikalarını güncelleştirme

Windows'ta Azure HorizonDB'ye bağlanan .NET (Npgsql) kullanıcıları için, Microsoft RSA Root Certificate Authority 2017, DigiCert Global Root G2 ve DigiCert Global Root CA sertifikalarının üçünün de Windows Sertifika Deposu'ndaki Güvenilen Kök Sertifika Yetkilileri bölümünde bulunduğundan emin olun. Herhangi bir sertifika yoksa, eksik sertifikayı içeri aktarın.

Sertifika sabitleme senaryoları için diğer istemciler için kök sertifika yetkilisi sertifikalarını güncelleştirme

Diğer PostgreSQL istemci kullanıcıları için aşağıdaki biçimi kullanarak iki CA sertifika dosyasını birleştirebilirsiniz:

-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----