Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При подключении приложений к Azure HorizonDB клиент приложения должен установить доверенные корневые сертификаты. В следующих разделах описано обновление доверенных корневых сертификатов для приложений, что является общим сценарием для приложений, подключающихся к экземпляру HorizonDB Azure.
Импортируйте корневые сертификаты центра сертификации в хранилище ключей Java на стороне клиента для сценариев привязки сертификатов
Пользовательские приложения, написанные на Java, используют хранилище ключей по умолчанию, называемое cacerts, которое содержит сертификаты доверенных центров сертификации (ЦС). Он также часто называется хранилищем доверительных сертификатов Java. Файл сертификатов с именем cacerts находится в каталоге свойств безопасности java.home\lib\security, где java.home — каталог среды выполнения ( jre каталог в пакете SDK или каталог верхнего уровня среды выполнения Java™ 2).
Для обновления корневых сертификатов ЦС клиента для сценариев пиннинга клиентских сертификатов с использованием PostgreSQL можно использовать следующие указания.
Проверьте хранилище ключей
cacertsJava, чтобы узнать, содержит ли он уже необходимые сертификаты. Вы можете перечислить сертификаты в хранилище ключей 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 см. в этой документации.
Note
Чтобы импортировать сертификаты в хранилища сертификатов клиента, может потребоваться преобразовать файлы CRT сертификата в pem-формат. Вы можете использовать Transport Layer Security (TLS) в Azure HorizonDB (предварительная версия).
Получение списка доверенных сертификатов в Хранилище ключей 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 Services при подключении к экземпляру Azure HorizonDB возможны два сценария обновления клиентских сертификатов, и выбор между ними зависит от того, как именно вы используете SSL в приложении, развернутом в приложение Azure Services.
- Новые сертификаты добавляются в App Service на уровне платформы до внесения изменений в ваш экземпляр Azure HorizonDB. Если вы используете SSL-сертификаты, включенные на платформу службы приложений в приложении, никаких действий не требуется. Дополнительные сведения см. в разделе "Добавление TLS/SSL-сертификатов" в Службе приложений Azure и управление ими в документации по службе приложений Azure.
- Если вы явно включаете путь к ФАЙЛу SSL-сертификата в коде, вам потребуется скачать новый сертификат и обновить код для его использования. Хорошим примером этого сценария является использование пользовательских контейнеров в службе приложений, как указано в руководстве: настройка контейнера-сайдкара для пользовательского контейнера в службе приложений Azure в документации по службе приложений Azure.
Обновление сертификатов корневого удостоверяющего центра при использовании клиентов в Azure Kubernetes Service (AKS) для сценариев привязки сертификатов
Если вы пытаетесь подключиться к Azure HorizonDB из приложений, размещённых в Azure Kubernetes Service (AKS), с закреплением сертификатов, это аналогично доступу из выделенной хост-среды клиента. Ознакомьтесь с инструкциями по использованию TLS с контроллером входящего трафика в AKS.
Обновление сертификатов корневого центра сертификации для пользователей .NET (Npgsql) в Windows для сценариев закрепления сертификатов
Для пользователей .NET (Npgsql) в Windows, подключающихся к Azure HorizonDB, убедитесь, что все три сертификата — 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-----