Por padrão, no Apigee Edge para nuvem privada 4.54.00, o roteador
(Nginx) e o processador de mensagens (Java 21) ativam TLSv1.2 e
TLSv1.3. Dependendo das suas necessidades de negócios e práticas de segurança
talvez você queira restringir os protocolos permitidos ou reativar
protocolos mais antigos. Este documento descreve como configurar os protocolos TLS
para tráfego de entrada e saída no roteador e no processador de mensagens.
Para o roteador, também é possível definir o protocolo para hosts virtuais individuais. Consulte Como configurar o acesso TLS a uma API para a nuvem privada para mais informações.
Para o processador de mensagens, é possível definir o protocolo para um TargetEndpoint individual. Consulte Como configurar o TLS da borda para o back-end (nuvem e nuvem privada) para mais informações.
Definir o protocolo TLS no roteador
As propriedades a seguir ajudam a definir os protocolos TLS desejados no roteador para comunicação de entrada.
Para definir o protocolo TLS no roteador, defina as propriedades no arquivo router.properties:
- Abra o arquivo
router.propertiesem um editor. Se o arquivo não existir, crie-o:vi /opt/apigee/customer/application/router.properties
- Defina as propriedades conforme desejado:
# 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
- Salve as alterações.
- Verifique se o arquivo de propriedades pertence ao usuário
apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Reinicie o roteador:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Verifique se o protocolo foi atualizado corretamente examinando o arquivo Nginx
/opt/nginx/conf.d/0-default.conf:cat /opt/nginx/conf.d/0-default.conf
Verifique se o valor de
ssl_protocolséTLSv1.2. - Se você estiver usando o TLS bidirecional com um host virtual, também será necessário definir o protocolo TLS no host virtual, conforme descrito em Como configurar o acesso TLS a uma API para a nuvem privada.
Definir o protocolo TLS no processador de mensagens
As propriedades a seguir ajudam a definir os protocolos TLS desejados no processador de mensagens para comunicação de saída. Esta seção também descreve como trabalhar com protocolos e cifras TLS desativados.
Para definir o protocolo TLS no processador de mensagens, defina as propriedades no
message-processor.properties arquivo:
- Abra o arquivo
message-processor.propertiesem um editor. Se o arquivo não existir, crie-o:vi /opt/apigee/customer/application/message-processor.properties
- Configure as propriedades usando a seguinte sintaxe:
# 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[,...]
Exemplo:
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
Para uma lista completa de propriedades relacionadas, consulte Como configurar o TLS entre um roteador e um processador de mensagens.
- Salve as alterações.
- Verifique se o arquivo de propriedades pertence ao usuário
apigee:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Reinicie o processador de mensagens:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Se você estiver usando o TLS bidirecional com o back-end, defina o protocolo TLS no host virtual, conforme descrito em Como configurar o TLS da borda para o back-end (nuvem e nuvem privada).
Como trabalhar com cifras e protocolos TLS mais antigos: consulte as seções a seguir se quiser trabalhar com cifras ou protocolos mais antigos.
Trabalhar com TLS mais antigo
No Java 21, os protocolos TLS legados (TLSv1,
TLSv1.1 e SSLv3) e as chaves de troca de chaves de Diffie-Hellman fracas
(DH keySize < 1024) são desativados por padrão em
jdk.tls.disabledAlgorithms. Para ativá-los, use uma das seguintes opções:
- Opção A: modernizar protocolos de back-end: atualize os servidores de back-end para
oferecer suporte ao TLS 1.2 ou TLS 1.3 e verifique se os tamanhos dos parâmetros do algoritmo de Diffie-Hellman são
2048 bits ou mais (
>= 2048bits). - Opção B: reativar protocolos legados usando o CwC: Mantenha
a compatibilidade com back-ends legados do TLS 1.0 ou TLS 1.1 removendo
TLSv1, TLSv1.1deconf_jvmsecurity_jdk.tls.disabledAlgorithmsem/opt/apigee/customer/application/message-processor.propertiesusando código com configuração (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
Trabalhar com cifras RSA estáticas
O Apigee Edge para nuvem privada versão 4.54.00 é executado no Java 21,
em que os pacotes de criptografia RSA estáticos (TLS_RSA_*) que não têm troca de chaves de Diffie-Hellman temporárias (ECDHE ou DHE) são desativados por padrão em
jdk.tls.disabledAlgorithms (por exemplo,
TLS_RSA_WITH_AES_128_CBC_SHA ou
TLS_RSA_WITH_AES_256_CBC_SHA). Para oferecer suporte a back-ends que exigem
pacotes de criptografia RSA estáticos, use a seguinte opção:
- Reativar cifras RSA estáticas usando o CwC: Mantenha
a compatibilidade com back-ends legados removendo
TLS_RSA_*deconf_jvmsecurity_jdk.tls.disabledAlgorithmsem/opt/apigee/customer/application/message-processor.propertiesusando código com configuração (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
Depois de modificar as propriedades, reinicie o processador de mensagens usando
apigee-service:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Ativar o TLS 1.3 para hosts
Esta seção explica como ativar o TLS 1.3 para hosts virtuais específicos. Para ativar o TLS 1.3, siga estas etapas nos nós do servidor de gerenciamento:
- Em cada nó do servidor de gerenciamento, edite o arquivo
/opt/apigee/customer/application/management-server.propertiese adicione a seguinte linha (se o arquivo não existir, crie-o):conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
Para esse arquivo, os protocolos são separados por vírgulas e diferenciam maiúsculas de minúsculas.
- Salve o arquivo.
- Verifique se o arquivo pertence ao usuário
apigee:chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Reinicie o servidor de gerenciamento:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Repita as etapas anteriores em todos os nós do servidor de gerenciamento, um por um.
- Crie (ou atualize um host virtual) com a seguinte
propriedade. Os protocolos são separados por espaços e diferenciam maiúsculas de minúsculas:
"properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }O exemplo a seguir mostra um vhost de amostra com essa propriedade:
{ "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 }
Como testar o TLS 1.3
Para testar o TLS 1.3, insira o seguinte comando:
curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"
Só é possível testar o TLS 1.3 em clientes que oferecem suporte a esse protocolo. Se o TLS 1.3 não estiver ativado, você verá uma mensagem de erro semelhante a esta:
sslv3 alert handshake failure