По умолчанию в Apigee Edge для частного облака 4.54.00 маршрутизатор (Nginx) и процессор сообщений (Java 21) включают TLSv1.2 и TLSv1.3. В зависимости от потребностей вашей компании и правил безопасности вы можете ограничить разрешенные протоколы или повторно включить более старые протоколы. В этом документе описывается, как настроить протоколы TLS для входящего и исходящего трафика на маршрутизаторе и процессоре сообщений.
Для маршрутизатора вы также можете задать протокол для отдельных виртуальных хостов. Подробнее о том, как настроить доступ к API через TLS для Private Cloud…
Для процессора сообщений можно задать протокол для отдельной конечной точки TargetEndpoint. Подробнее о том, как настроить TLS от Edge до внутреннего сервиса (облачного или частного)…
Как настроить протокол TLS на маршрутизаторе
С помощью перечисленных ниже свойств можно задать нужные протоколы TLS на маршрутизаторе для исходящей связи.
Чтобы задать протокол TLS на маршрутизаторе, укажите свойства в файле router.properties:
- Откройте файл
router.propertiesв редакторе. Если файла нет, создайте его:vi /opt/apigee/customer/application/router.properties
- Задайте нужные свойства:
# Possible values are space-delimited list of: TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
- Сохраните изменения.
- Убедитесь, что файл свойств принадлежит пользователю
apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Перезапустите маршрутизатор
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Убедитесь, что протокол обновлен правильно, проверив файл Nginx
/opt/nginx/conf.d/0-default.conf:cat /opt/nginx/conf.d/0-default.conf
Убедитесь, что для
ssl_protocolsуказано значениеTLSv1.2. - Если вы используете двусторонний протокол TLS с виртуальным хостом, вам также необходимо задать протокол TLS в виртуальном хосте, как описано в разделе Настройка доступа к API по протоколу TLS для частного облака.
Как задать протокол TLS в процессоре сообщений
Ниже перечислены свойства, которые позволяют задать нужные протоколы TLS в процессоре сообщений для исходящей связи. В этом разделе также рассказывается, как работать с отключенными протоколами TLS и шифрами.
Чтобы задать протокол TLS в Message Processor, установите свойства в файле message-processor.properties:
- Откройте файл
message-processor.propertiesв редакторе. Если файла нет, создайте его:vi /opt/apigee/customer/application/message-processor.properties
- Настройте свойства, используя следующий синтаксис:
# Possible values are a comma-delimited list of TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3 conf/system.properties+https.protocols=[TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3] # Possible values are a comma-delimited list of SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 # SSLv3 is required conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3[,TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3] # Specify the ciphers that the Message Processor supports. (You must separate ciphers with a comma.): conf_message-processor-communication_local.http.ssl.ciphers=cipher[,...]
Пример:
conf/system.properties+https.protocols=TLSv1.2 conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1 conf_message-processor-communication_local.http.ssl.ciphers=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Полный список связанных свойств приведен в разделе Настройка TLS между маршрутизатором и процессором сообщений.
- Сохраните изменения.
- Убедитесь, что файл свойств принадлежит пользователю
apigee:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Перезапустите Message Processor:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Если вы используете двусторонний протокол TLS с серверной частью, настройте протокол TLS на виртуальном хосте, как описано в статье Настройка TLS от Edge до серверной части (Cloud и Private Cloud).
Работа со старыми шифрами и протоколами TLS. Если вы хотите работать со старыми шифрами или протоколами, ознакомьтесь с разделами ниже.
Как работать с более старыми версиями TLS
В Java 21 устаревшие протоколы TLS (TLSv1, TLSv1.1 и SSLv3) и слабые ключи протокола Диффи – Хеллмана (DH keySize < 1024) по умолчанию отключены в jdk.tls.disabledAlgorithms. Чтобы включить их, выполните одно из следующих действий:
- Вариант А. Модернизация бэкенд-протоколов. Обновите бэкенд-серверы для поддержки TLS 1.2 или TLS 1.3 и убедитесь, что размер параметра протокола Диффи – Хеллмана составляет не менее 2048 бит (
>= 2048бит). - Вариант Б. Повторно включите устаревшие протоколы с помощью CwC. Чтобы сохранить совместимость с устаревшими серверными компонентами TLS 1.0 или TLS 1.1, удалите
TLSv1, TLSv1.1изconf_jvmsecurity_jdk.tls.disabledAlgorithmsв/opt/apigee/customer/application/message-processor.propertiesс помощью кода с конфигурацией (CwC).# Re-enable TLS 1.0 and TLS 1.1 for legacy backend connectivity conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, TLS_RSA_*, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves
Работа со статическими шифрами RSA
Apigee Edge для частного облака версии 4.54.00 работает на Java 21, где статические наборы шифров RSA (TLS_RSA_*), в которых отсутствует временный протокол Диффи – Хеллмана (ECDHE или DHE), по умолчанию отключены в jdk.tls.disabledAlgorithms (например, TLS_RSA_WITH_AES_128_CBC_SHA или TLS_RSA_WITH_AES_256_CBC_SHA). Чтобы поддерживать серверные части, которым требуются статические наборы шифров RSA, используйте следующий вариант:
- Повторно включите статические шифры RSA с помощью CwC. Чтобы сохранить совместимость с устаревшими серверными системами, удалите
TLS_RSA_*изconf_jvmsecurity_jdk.tls.disabledAlgorithmsв/opt/apigee/customer/application/message-processor.propertiesс помощью кода с конфигурацией (CwC).# Re-enable Static RSA ciphers for backward compatibility with legacy Java 8 backends conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves
После изменения свойств перезапустите Message Processor с помощью apigee-service:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Как включить TLS 1.3 для хостов
В этом разделе рассказывается, как включить TLS 1.3 для определенных виртуальных хостов. Чтобы включить TLS 1.3, выполните следующие действия на узлах сервера управления:
- На каждом узле сервера управления отредактируйте файл
/opt/apigee/customer/application/management-server.propertiesи добавьте в него следующую строку (если файла нет, создайте его):conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
В этом файле протоколы разделены запятыми и указываются с учетом регистра.
- Сохраните файл.
- Убедитесь, что владельцем файла является пользователь
apigee:chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Перезапустите сервер управления:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Повторите описанные выше шаги для всех узлов сервера управления по очереди.
- Создайте виртуальный хост или обновите существующий, указав следующее свойство: Обратите внимание, что протоколы разделяются пробелами и указываются с учетом регистра.
"properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }Ниже приведен пример виртуального хоста с этим свойством:
{ "hostAliases": [ "api.myCompany,com", ], "interfaces": [], "listenOptions": [], "name": "secure", "port": "443", "retryOptions": [], "properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }, "sSLInfo": { "ciphers": [], "clientAuthEnabled": "false", "enabled": "true", "ignoreValidationErrors": false, "keyAlias": "myCompanyKeyAlias", "keyStore": "ref://myCompanyKeystoreref", "protocols": [] }, "useBuiltInFreeTrialCert": false }
Тестирование TLS 1.3
Чтобы протестировать TLS 1.3, введите следующую команду:
curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"
Обратите внимание, что тестировать TLS 1.3 можно только на клиентах, которые поддерживают этот протокол. Если TLS 1.3 не включен, вы увидите сообщение об ошибке, похожее на следующее:
sslv3 alert handshake failure