Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Po połączeniu aplikacji z usługą Azure HorizonDB klient aplikacji musi zainstalować zaufane certyfikaty główne. W poniższych sekcjach opisano proces aktualizowania zaufanych certyfikatów głównych dla aplikacji, który jest typowym scenariuszem dla aplikacji łączących się z wystąpieniem usługi Azure HorizonDB.
Importowanie certyfikatów głównego urzędu certyfikacji do magazynu kluczy Java po stronie klienta na potrzeby scenariuszy pinningu certyfikatów
Własnoręcznie napisane aplikacje Java używają domyślnego magazynu kluczy o nazwie cacerts, który zawiera certyfikaty urzędów certyfikacji (CA). Jest również nazywany repozytorium zaufania Java. Plik certyfikatów o nazwie cacerts znajduje się w katalogu właściwości zabezpieczeń java.home\lib\security, gdzie java.home jest katalogiem środowiska uruchomieniowego ( jre katalog w zestawie SDK lub katalogu najwyższego poziomu środowiska uruchomieniowego Java™ 2).
Możesz użyć następujących wskazówek, aby zaktualizować certyfikaty root CA klienta dla scenariuszy przypinania certyfikatów klienta przy użyciu PostgreSQL.
cacertsSprawdź magazyn kluczy Java, aby sprawdzić, czy zawiera już wymagane certyfikaty. Certyfikaty można wyświetlić w magazynie kluczy Java przy użyciu następującego polecenia:keytool -list -v -keystore ..\lib\security\cacerts > outputfile.txtJeśli wymagane certyfikaty nie są obecne w magazynie kluczy Java po stronie klienta, co można sprawdzić w danych wyjściowych, postępuj zgodnie z poniższymi instrukcjami:
Utwórz kopię zapasową niestandardowego magazynu kluczy.
Pobierz certyfikaty i zapisz je lokalnie, gdzie można się do nich odwoływać.
Wygeneruj połączony magazyn certyfikatów, uwzględniający wszystkie potrzebne certyfikaty głównego urzędu certyfikacji. W poniższym przykładzie pokazano użycie elementu DefaultJavaSSLFactory dla użytkowników JDBC bazy danych PostgreSQL.
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 -nopromptZastąp oryginalny plik keystore nowym wygenerowanym.
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file"); System.setProperty("javax.net.ssl.trustStorePassword","password");Zastąp oryginalny plik PEM głównego urzędu certyfikacji plikiem połączonego głównego urzędu certyfikacji, a następnie uruchom ponownie swoją aplikację lub klienta.
Aby uzyskać więcej informacji na temat konfigurowania certyfikatów klienta za pomocą sterownika JDBC bazy danych PostgreSQL, zobacz tę dokumentację.
Uwaga / Notatka
Aby zaimportować certyfikaty do magazynów certyfikatów klienta, może być konieczne przekonwertowanie plików crt certyfikatu na format pem. Możesz użyć Transport Layer Security (TLS) w usłudze Azure HorizonDB (wersja zapoznawcza).
Programowe uzyskiwanie listy zaufanych certyfikatów w Java KeyStore
Domyślnie język Java przechowuje zaufane certyfikaty w specjalnym pliku o nazwie cacerts znajdującym się w folderze instalacyjnym Java na kliencie.
Poniższy przykład najpierw odczytuje cacerts oraz ładuje go do obiektu KeyStore.
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;
}
Domyślne hasło dla programu cacerts to changeit , ale powinno być inne na rzeczywistym kliencie, ponieważ administratorzy zaleca zmianę hasła natychmiast po zainstalowaniu języka Java.
Po załadowaniu obiektu KeyStore możemy użyć klasy PKIXParameters do odczytywania certyfikatów obecnych.
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());
}
Aktualizowanie certyfikatów głównego urzędu certyfikacji podczas korzystania z klientów w usługach aplikacja systemu Azure w scenariuszach przypinania certyfikatów
W przypadku usługi aplikacja systemu Azure Services podczas łączenia z wystąpieniem Azure HorizonDB mogą wystąpić dwa scenariusze aktualizacji certyfikatów klienta, zależnie od tego, w jaki sposób używasz protokołu SSL w aplikacji wdrożonej w usłudze aplikacja systemu Azure Services.
- Nowe certyfikaty są dodawane do usługi App Service na poziomie platformy, zanim zmiany zostaną wprowadzone w instancji Azure HorizonDB. Jeśli używasz certyfikatów SSL zawartych na platformie App Service w aplikacji, nie jest wymagana żadna akcja. Aby uzyskać więcej informacji, zobacz Dodawanie certyfikatów TLS/SSL i zarządzanie nimi w usłudze Azure App Service w dokumentacji usługi Azure App Service.
- Jeśli jawnie dołączasz ścieżkę do pliku certyfikatu SSL w kodzie, musisz pobrać nowy certyfikat i zaktualizować go, aby go użyć. Dobrym przykładem tego scenariusza jest użycie kontenerów niestandardowych w usłudze App Service zgodnie z opisem w artykule Samouczek: konfigurowanie kontenera przyczepki dla kontenera niestandardowego w usłudze Azure App Service w dokumentacji usługi Azure App Service.
Aktualizowanie certyfikatów głównego urzędu certyfikacji w przypadku korzystania z klientów w usłudze Azure Kubernetes Service (AKS) w scenariuszach przypinania certyfikatów
Jeśli próbujesz połączyć się z usługą Azure HorizonDB za pomocą aplikacji hostowanych w Azure Kubernetes Service (AKS) oraz z użyciem przypinania certyfikatów, jest to podobne do uzyskiwania dostępu z dedykowanego środowiska hosta klienta. Zapoznaj się z instrukcjami dotyczącymi używania protokołu TLS z kontrolerem ruchu przychodzącego w usłudze AKS.
Aktualizowanie głównych certyfikatów urzędu certyfikacji dla użytkowników .NET (Npgsql) w systemie Windows na potrzeby scenariuszy przypinania certyfikatów
W przypadku użytkowników platformy .NET (Npgsql) w systemie Windows nawiązujących połączenie z usługą Azure HorizonDB upewnij się, że w magazynie certyfikatów systemu Windows „Zaufane główne urzędy certyfikacji” są obecne wszystkie trzy certyfikaty: Microsoft RSA Root Certificate Authority 2017, DigiCert Global Root G2 i DigiCert Global Root CA. Jeśli jakiekolwiek certyfikaty nie istnieją, zaimportuj brakujący certyfikat.
Aktualizowanie certyfikatów głównego urzędu certyfikacji dla innych klientów w scenariuszach przypinania certyfikatów
W przypadku użytkowników innych klientów PostgreSQL można scalić dwa pliki certyfikatów CA przy użyciu następującego formatu:
-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----