アプリケーションをAzure Database for PostgreSQLに接続する場合、アプリケーション クライアントは信頼されたルート証明書をインストールする必要があります。 次のセクションでは、アプリケーションの信頼されたルート証明書を更新する方法について説明します。 このプロセスは、Azure Database for PostgreSQLフレキシブル サーバーに接続するアプリケーションの一般的なシナリオです。
Important
Microsoft では、証明機関と結果の証明書チェーンを更新するために、Azure Database for PostgreSQL の TLS 証明書をローテーションしています。
クライアント構成で TLS の推奨構成を使用している場合は、アクションを実行する必要はありません。
中間証明書ローテーション スケジュール:
- Azure リージョンの米国中西部と東アジアの更新が完了しました。
- 英国南部および米国政府リージョンの更新プログラムは、2026 年 1 月 21 日に開始されます。
- 米国中部の更新プログラムは、2026 年 1 月 26 日に開始されます。
- その他のすべてのリージョンの更新は、2026 年 1 月 28 日に開始されます。
ルート証明書のローテーション スケジュール:
- DigiCert Global Root CA (G1) から中国リージョンの DigiCert Global Root G2 へのルート CA 証明書の更新は、2026 年 3 月 9 日から開始されます。
証明書のピン留めシナリオ用Javaクライアントのキー ストアにルート CA 証明書をインポートする
カスタム記述 Java アプリケーションは、信頼された証明機関 (CA) 証明書を含む cacerts と呼ばれる既定のキーストアを使用します。 Java トラスト ストアとも呼ばれます。
cacertsという名前の証明書ファイルは、java.home\lib\securityセキュリティ プロパティ ディレクトリに存在します。ここで、java.homeはランタイム環境ディレクトリ (SDK のjre ディレクトリ、または Java ™ 2 ランタイム環境の最上位ディレクトリ) です。
PostgreSQL を使用してクライアント証明書のピン留めシナリオ用にクライアント ルート CA 証明書を更新するには、次の手順に従います。
cacertsJavaキーストアに必要な証明書が既に含まれているかどうかを確認します。 次のコマンドを使用して、Javaキーストア内の証明書を一覧表示できます。keytool -list -v -keystore ..\lib\security\cacerts > outputfile.txt必要な証明書がクライアントの Java キー ストアに存在しない場合は、出力を確認できるので、次の手順に進みます。
カスタム キーストアのバックアップ コピーを作成します。
証明書をダウンロードし、参照できる場所にローカルに保存します。
必要なすべてのルート CA 証明書を含む結合 CA 証明書ストアを生成します。 次の例は、PostgreSQL JDBC ユーザーの
DefaultJavaSSLFactoryの使用を示しています。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元のキーストア ファイルを、新しく生成されたキーストア ファイルに置き換えます。
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file"); System.setProperty("javax.net.ssl.trustStorePassword","password");元のルート CA PEM ファイルを結合されたルート CA ファイルに置き換え、アプリケーションまたはクライアントを再起動します。
PostgreSQL JDBC ドライバーを使用したクライアント証明書の構成の詳細については、この ドキュメントを参照してください。
注
証明書をクライアント証明書ストアにインポートするには、証明書の .crt ファイルを .pem 形式に変換する必要がある場合があります。 OpenSSL ユーティリティを使用して、これらのファイル変換を実行できます。
Java キー ストアの信頼できる証明書の一覧をプログラムで取得する
既定では、信頼された証明書は、クライアントの Java インストール フォルダー内にある cacerts という名前の特別なファイルに格納されます。
次の例では、 cacerts を読み取り、 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;
}
cacertsの既定のパスワードはchangeitですが、実際のクライアントでは異なる必要があります。管理者は、Javaインストール直後にパスワードを変更することをお勧めします。
KeyStore オブジェクトを読み込んだ後、PKIXParameters クラスを使用して、存在する証明書を読み取ります。
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());
}
証明書のピン留めシナリオのために、Azure アプリ サービスでクライアントを使用する場合にルート CA 証明書を更新する
Azure Database for PostgreSQLフレキシブル サーバーに接続する Azure アプリ Services の場合、クライアント証明書を更新するシナリオが 2 つあります。 シナリオは、Azure アプリ Services にデプロイされたアプリケーションで SSL を使用する方法によって異なります。
- プラットフォームは、Azure Database for PostgreSQLフレキシブル サーバーで変更が行われる前に、App Service に新しい証明書を追加します。 アプリケーションの App Service プラットフォームに含まれている SSL 証明書を使用している場合、何もする必要はありません。 詳細については、 Azure App Service ドキュメントの「Azure App Service での TLS/SSL 証明書の追加と管理 」を参照してください。
- SSL 証明書ファイルへのパスをコードに明示的に含める場合は、新しい証明書をダウンロードし、それを使用するようにコードを更新する必要があります。 このシナリオの良い例として、Azure App Service のドキュメントにある チュートリアル: Azure App Service のカスタム コンテナー用にサイドカー コンテナーを構成する で説明されているように、App Service でカスタム コンテナーを使用する場合が挙げられます。
証明書のピン留めシナリオで、Azure Kubernetes Service (AKS)でクライアントを使用するときにルート CA 証明書を更新する
Azure Kubernetes Services (AKS) でホストされているアプリケーションを使用して Azure Database for PostgreSQL に接続し、証明書をピン留めしようとしている場合は、専用のお客様のホスト環境からのアクセスに似ています。 この手順を参照してください。
証明書のピン留めシナリオ用に、Windows の .NET (Npgsql) ユーザーのルート CA 証明書を更新する
Windows で Azure Database for PostgreSQL フレキシブル サーバーに接続する .NET (Npgsql) ユーザーは、Microsoft RSA Root Certificate Authority 2017、DigiCert Global Root G2、DigiCert Global Root CA の 3 つすべての証明書が Windows の証明書ストアの [信頼されたルート証明機関] に存在することを確認してください。 証明書が存在しない場合は、不足している証明書をインポートします。
証明書のピン留めシナリオ用に、他のクライアントのルート CA 証明書を更新する
他の PostgreSQL クライアント ユーザーの場合は、次の形式を使用して 2 つの CA 証明書ファイルをマージできます。
-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----