Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для PostgreSQL — гибкий сервер
Импорт сертификатов корневого ЦС в Хранилище ключей Java на клиенте для сценариев закрепления сертификатов
Приложения Java, написанные на заказ, используют хранилище ключей по умолчанию, которое cacerts
содержит сертификаты доверенного центра сертификации (ЦС). Он также часто называется хранилищем доверия Java. Файл сертификатов с именем cacerts
находится в каталоге свойств безопасности java.home\lib\security, где java.home — каталог среды выполнения ( jre
каталог в пакете SDK или каталог верхнего уровня среды выполнения Java™ 2).
Чтобы обновить сертификаты корневого ЦС клиента для сценариев закрепления сертификатов клиента с помощью гибкого сервера PostgreSQL, можно использовать следующие инструкции.
- Проверьте
cacerts
хранилище ключей Java, чтобы узнать, содержит ли он уже необходимые сертификаты. Вы можете перечислить сертификаты в хранилище ключей Java с помощью следующей команды:
keytool -list -v -keystore ..\lib\security\cacerts > outputfile.txt
Если необходимые сертификаты отсутствуют в хранилище ключей Java на клиенте, как можно проверить в выходных данных, следует продолжить следующие инструкции:
Создайте резервную копию пользовательского хранилища ключей.
Скачайте сертификаты и сохраните их локально, где можно ссылаться на них.
Создание объединенного хранилища сертификатов ЦС со всеми необходимыми сертификатами корневого ЦС включаются. В приведенном ниже примере показано использование DefaultJavaSSLFactory для пользователей JDBC 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 -noprompt
Замените исходный файл хранилища ключей новым созданным:
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file"); System.setProperty("javax.net.ssl.trustStorePassword","password");
Замените исходный PEM-файл корневого ЦС объединенным файлом корневого ЦС и перезапустите приложение или клиент.
Дополнительные сведения о настройке сертификатов клиента с помощью драйвера JDBC PostgreSQL см. в этой документации.
Примечание.
Чтобы импортировать сертификаты в хранилища сертификатов клиента, может потребоваться преобразовать файлы CRT сертификата в pem-формат. Служебная программа OpenSSL позволяет выполнять эти преобразования файлов.
Получение списка доверенных сертификатов в Хранилище ключей Java программным способом
По умолчанию Java сохраняет доверенные сертификаты в специальном файле с именем cacerts
, который находится в папке установки Java на клиенте.
Пример ниже сначала считывает 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 в сценариях закрепления сертификатов.
Для служб приложений Azure, подключаясь к гибкому серверу Базы данных Azure для PostgreSQL, можно использовать два возможных сценария обновления сертификатов клиента, и это зависит от того, как вы используете SSL с приложением, развернутым в Службах приложений Azure.
- Новые сертификаты добавляются в службу приложений на уровне платформы, прежде чем изменения происходят на гибком сервере Базы данных Azure для PostgreSQL. Если вы используете SSL-сертификаты, включенные на платформу службы приложений в приложении, никаких действий не требуется. Дополнительные сведения см. в разделе "Добавление TLS/SSL-сертификатов" в Службе приложений Azure и управление ими в документации по службе приложений Azure.
- Если вы явно включаете путь к ФАЙЛу SSL-сертификата в коде, вам потребуется скачать новый сертификат и обновить код для его использования. Хорошим примером этого сценария является использование пользовательских контейнеров в Службе приложений, как описано в руководстве "Настройка сайдкар-контейнера для пользовательского контейнера в службе приложений Azure" в документации по Службе приложений Azure.
Обновите сертификаты корневого центра сертификации (ЦС) при использовании клиентов в службе Azure Kubernetes (AKS) для сценариев закрепления сертификатов
Если вы пытаетесь подключиться к базе данных Azure для PostgreSQL с помощью приложений, размещенных в Службах Azure Kubernetes (AKS) и при использовании прикрепления сертификатов, это похоже на доступ из выделенной среды хоста клиента. Ознакомьтесь с этими инструкциями.
Обновите сертификаты корневого Центра Сертификации для пользователей .NET (Npgsql) в Windows в сценариях привязки сертификатов.
Для пользователей .NET (Npgsql) в Windows, подключающихся к гибким серверам базы данных Azure для PostgreSQL, убедитесь, что все три корневых центров сертификации Microsoft RSA Root Certificate Authority 2017, DigiCert Global Root G2 и Digicert Global Root CA присутствуют в Хранилище сертификатов Windows, Доверенные корневые центры сертификации. Если какие либо из этих сертификатов в нем отсутствуют, импортируйте их.
Обновление сертификатов корневого ЦС для других клиентов для сценариев закрепления сертификатов
Для других пользователей клиента PostgreSQL можно объединить два файла сертификата ЦС с помощью следующего формата:
-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----