Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Sintoma
O aplicativo cliente recebe um código de status HTTP de 503 Service Unavailable
com o código de erro messaging.adaptors.http.flow.SslHandshakeFailed
como uma resposta para chamadas de API.
Mensagem de erro
O aplicativo cliente recebe este código de resposta:
HTTP/1.1 503 Service Unavailable
Além disso, talvez você veja a seguinte mensagem de erro:
{ "fault":{ "faultstring":"SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target", "detail":{ "errorcode":"messaging.adaptors.http.flow.SslHandshakeFailed" } } }
Causas possíveis
Talvez você receba o código de status 503 Service Unavailable
com o código de erro messaging.adaptors.http.flow.SslHandshakeFailed
devido a uma falha durante o processo de handshake de SSL entre o processador de mensagens do Apigee Edge e o servidor de back-end por vários motivos. A mensagem de erro em faultstring
normalmente indica uma possível causa de alto nível que levou a esse erro.
Dependendo da mensagem de erro observada em faultstring
, é necessário usar
técnicas adequadas para resolver o problema. Este manual explica como solucionar esse erro se você observar a mensagem de erro SSL Handshake failed
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
no faultstring
.
Esse erro ocorre durante o processo de handshake de SSL entre o processador de mensagens do Apigee Edge e o servidor de back-end:
- Se o truststore do processador de mensagens do Apigee Edge:
- Contém uma cadeia de certificados que não corresponde à cadeia de certificados completa do servidor de back-end; OU
- Não contém a cadeia de certificados completa do servidor de back-end
- Se a cadeia de certificados apresentada pelo servidor de back-end:
- Contém um nome de domínio totalmente qualificado (FQDN, na sigla em inglês) que não corresponde ao nome do host especificado no endpoint de destino
- Contém uma cadeia de certificados incorreta ou incompleta
As possíveis causas desse problema são as seguintes:
Causa | Descrição | Instruções de solução de problemas aplicáveis para |
---|---|---|
Certificados ou cadeias de certificados incorretos/incompletos no truststore do processador de mensagens | O certificado e/ou a cadeia armazenada no repositório de confiança do processador de mensagens do Apigee Edge não corresponde à cadeia de certificados do servidor de back-end ou não contém a cadeia completa de certificados do servidor de back-end. | Usuários de nuvem privada e pública do Edge |
Incompatibilidade de FQDN no certificado do servidor de back-end e o nome do host no endpoint de destino | O certificado apresentado pelo servidor de back-end contém um FQDN que não corresponde ao nome do host especificado no endpoint de destino. | Usuários de nuvem privada e pública do Edge |
Certificado incorreto/incompleto ou cadeia de certificados apresentada pelo servidor de back-end | A cadeia de certificados apresentada pelo servidor de back-end está incorreta ou incompleta. | Usuários de nuvem privada e pública do Edge |
Etapas comuns do diagnóstico
Use uma das seguintes ferramentas/técnicas para diagnosticar esse erro:
Monitoramento de APIs
Procedimento 1: usar o monitoramento de APIs
Para diagnosticar o erro usando o monitoramento de APIs:
- Faça login na interface do Apigee Edge como usuário com um papel apropriado.
Alterne para a organização em que você quer investigar o problema.
- Navegue até a página Analisar > Monitoramento de API > Investigar.
- Selecione o período específico em que você observou os erros.
Trace o Código de falha em relação a Time.
Selecione uma célula que tenha o código de falha
messaging.adaptors.http.flow.SslHandshakeFailed
, conforme mostrado abaixo:As informações sobre o código de falha
messaging.adaptors.http.flow.SslHandshakeFailed
são mostradas conforme mostrado abaixo:Clique em Ver registros e expanda a linha da solicitação com falha.
- Na janela Registros, observe os seguintes detalhes:
- Solicitar ID da mensagem
- Código de status:
503
- Origem da falha:
target
- Código de falha:
messaging.adaptors.http.flow.SslHandshakeFailed
Trace
Procedimento 2: uso da ferramenta Trace
Para diagnosticar o erro usando a ferramenta Trace:
- Ative a sessão de rastreamento e:
- Aguarde a ocorrência do erro
503 Service Unavailable
com o código de erromessaging.adaptors.http.flow.SslHandshakeFailed
ou - Se for possível reproduzir o problema, faça a chamada de API para reproduzi-lo
503 Service Unavailable
- Aguarde a ocorrência do erro
Verifique se a opção Mostrar todos os FlowInfos está ativada:
- Selecione uma das solicitações com falha e examine o rastro.
- Navegue pelas diferentes fases do rastro e localize onde a falha ocorreu.
O erro geralmente ocorre após o início da fase Target Request Flow, conforme mostrado abaixo:
- Observe os valores a seguir no rastro:
- erro:
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
- error.cause:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
- error.class::
com.apigee.errors.http.server.ServiceUnavailableException
- O valor do erro
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
indica que o handshake de SSL falhou, porque o processador de mensagens do Apigee Edge não conseguiu validar o certificado do servidor de back-end.
- erro:
- Navegue até a fase AX (Dados do Analytics registrados) no rastreamento e clique nela.
Role para baixo até a seção Stage Details Error Headers e determine os valores de X-Apigee-fault-code, X-Apigee-fault-source e X-Apigee-Message-ID, conforme mostrado abaixo:
- Observe os valores de X-Apigee-fault-code, X-Apigee-fault-source e X-Apigee-Message-ID:
Cabeçalhos de erro | Valor |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.SslHandshakeFailed |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Procedimento no 3: uso de registros de acesso do NGINX
Para diagnosticar o erro usando os registros de acesso do NGINX:
- Se você for um usuário de nuvem privada, poderá usar os registros de acesso do NGINX para determinar as principais informações sobre o HTTP
503 Service Unavailable
. Verifique os registros de acesso do NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Pesquise se há algum erro
503
com o códigomessaging.adaptors.http.flow.SslHandshakeFailed
durante um período específico (se o problema tiver acontecido anteriormente) ou se ainda há alguma solicitação com falha com503
. Se você encontrar erros
503
com o X-Apigee-fault-code correspondente ao valor demessaging.adaptors.http.flow.SslHandshakeFailed
, determine o valor de X-Apigee-fault-source.Exemplo de erro 503 do registro de acesso do NGINX:
A entrada de amostra acima do registro de acesso do NGINX tem os seguintes valores para X-Apigee-fault-code e X-Apigee-fault-code :
Cabeçalhos Valor X-Apigee-fault-code messaging.adaptors.http.flow.SslHandshakeFailed
X-Apigee-fault-source target
Registros do processador de mensagens
Procedimento 4: usar os registros do processador de mensagens
- Determine o código da mensagem de uma das solicitações com falha usando o monitoramento de APIs, a ferramenta de rastreamento ou os registros de acesso do NGINX, conforme explicado nas Etapas comuns de diagnóstico.
Pesquise o ID da mensagem de solicitação específica no registro do processador de mensagens (
/opt/apigee/var/log/edge-message-processor/logs/system.log
). O seguinte erro poderá aparecer:org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1
NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context.handshakeFailed() : SSLClientChannel[Connected: Remote:X.X.X.X:443 Local:192.168.194.140:55102]@64596 useCount=1 bytesRead=0 bytesWritten=0 age=233ms lastIO=233ms isOpen=true handshake failed, message: General SSLEngine problemO erro acima indica que o handshake de SSL falhou entre o processador de mensagens e o servidor de back-end.
Isso será seguido por uma exceção com stack trace detalhado, conforme mostrado abaixo:
org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1
NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onException() : RequestWriteListener.onException(HTTPRequest@1522922c) javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1478) at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) ... <snipped> Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Alerts.getSSLException(Alerts.java:203) at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728) ... <snipped>Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302) ... <snipped>A falha de handshake ocorre pelos seguintes motivos:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Isso indica que o handshake de SSL falhou porque o processador de mensagens do Apigee Edge não conseguiu validar o certificado do servidor de back-end.
Causa: certificado ou cadeia de certificados incorretos/incompletos no truststore do processador de mensagens
Diagnóstico
- Determine o código de falha, a origem da falha referente ao erro observado usando o monitoramento da API, a ferramenta de rastreamento ou os registros de acesso do NGINX, conforme explicado nas etapas comuns de diagnóstico.
- Se o Código de falha for
messaging.adaptors.http.flow.SslHandshakeFailed
, determine a mensagem de erro usando um destes métodos: - Encontre a error.cause usando a ferramenta Trace, conforme explicado em Etapas comuns de diagnóstico
- Encontre a exceção usando os registros do processador de mensagens, conforme explicado em Etapas comuns de diagnóstico
- Encontre o
faultstring
na resposta de erro para sua chamada de API, conforme visto em Mensagem de erro - Se a mensagem de erro for
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
, isso indica que o handshake de SSL falhou, porque o processador de mensagens do Apigee Edge não conseguiu validar o certificado do servidor de back-end.
É possível depurar esse problema em duas fases:
- Fase 1: determinar a cadeia de certificados do servidor de back-end
- Fase 2: comparar a cadeia de certificados armazenada no truststore do processador de mensagens
Fase 1
Fase 1: determinar a cadeia de certificados do servidor de back-end
Use um dos métodos a seguir para determinar a cadeia de certificados do servidor de back-end:
openssl
Execute o comando openssl
no nome do host do servidor de back-end da seguinte maneira:
openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT#
Observe a cadeia de certificados na saída do comando acima:
Exemplo de cadeia de certificados do servidor de back-end da saída do comando openssl:
Certificate chain 0 s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
tcpdump
- Se você for um usuário da nuvem pública, capture os pacotes TCP/IP no servidor de back-end.
- Se você for um usuário da nuvem privada, poderá capturar os pacotes TCP/IP no servidor de back-end ou no processador de mensagens. De preferência, capture-os no servidor de back-end à medida que os pacotes são descriptografados no servidor de back-end.
Use o comando tcpdump a seguir para capturar pacotes TCP/IP:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
Analise os pacotes TCP/IP usando a ferramenta Wireshark ou uma ferramenta semelhante com que você esteja familiarizado.
Exemplo de análise do Tcpdump
- Pacote no 43:o processador de mensagens (origem) enviou uma
mensagem
Client Hello
para o servidor de back-end (destino). - Pacote no 44:o servidor de back-end confirma o recebimento da mensagem
Client Hello
do processador de mensagens. - Pacote no 45:o servidor de back-end envia a mensagem
Server Hello
com o certificado. - Pacote no 46:o processador de mensagens confirma o recebimento da mensagem
Server Hello
e do certificado. Pacote 47:o processador de mensagens envia uma mensagem
FIN, ACK
seguida porRST, ACK
no pacote no 48.Isso indica que a validação do certificado do servidor de back-end pelo processador de mensagens falhou. Isso ocorre porque o processador de mensagens não tem nenhum certificado que corresponda ao certificado do servidor de back-end ou não possa confiar no certificado do servidor de back-end com os certificados disponíveis no truststore (do processador de mensagens).
Você pode voltar e analisar o Pacote 45 e determinar a cadeia de certificados enviada pelo servidor de back-end
- Neste exemplo, é possível ver que o servidor enviou um certificado de folha
com
common name (CN) = mocktarget.apigee.net
, seguido por um certificado intermediário comCN= GTS CA 1D4
e um certificado raiz comCN = GTX Root R1
.
Se você verificou que a validação da certificação do servidor falhou, vá para Fase 2: compare o certificado do servidor de back-end e os certificados armazenados no truststore do processador de mensagens.
- Pacote no 43:o processador de mensagens (origem) enviou uma
mensagem
Fase 2
Fase 2: comparar os certificados e os certificados do servidor de back-end armazenados no truststore do processador de mensagens
- Determine a cadeia de certificados do servidor de back-end.
- Para determinar o certificado armazenado no truststore do processador de mensagens, siga
estas etapas:
Consiga o nome de referência do truststore do elemento
TrustStore
na seçãoSSLInfo
doTargetEndpoint
.Veja um exemplo de seção
SSLInfo
em uma configuração deTargetEndpoint
:<TargetEndpoint name="default"> ... <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKey</KeyAlias> <TrustStore> ref://myCompanyTrustStoreRef </TrustStore> </SSLInfo> </HTTPTargetConnection> ... </TargetEndpoint>
- No exemplo acima, o nome de referência
TrustStore
émyCompanyTruststoreRef
. Na interface do Edge, selecione Ambientes > Referências. Observe o nome na coluna Reference da referência específica do truststore. Esse será o nome do seu truststore.
No exemplo acima, o nome do truststore é:
myCompanyTruststoreRef:
myCompanyTruststore
Consiga os certificados armazenados no truststore (determinado na etapa anterior) usando as seguintes APIs:
Receba todos os certificados de um keystore ou truststore. Essa API lista todos os certificados no truststore específico.
Usuário da nuvem pública:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
Usuário da nuvem privada:
curl -v -X GET http://MANAGEMENT_HOST:PORT_#/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
Onde:
- ORGANIZATION_NAME é o nome da organização.
- ENVIRONMENT_NAME é o nome do ambiente;
- KEYSTORE_NAME é o nome do keystore.
- $TOKEN está definido como seu token de acesso OAuth 2.0, conforme descrito em Receber um token de acesso OAuth 2.0.
- As opções de
curl
usadas neste exemplo estão descritas em Usar curl
Exemplo de resposta:
Os certificados do truststore de exemplo
myCompanyTruststore
são:[ "serverCert" ]
-
Confira os detalhes do certificado específico de um keystore ou de um Truststore.
Essa API retorna as informações sobre um certificado específico no
truststore específico.
Usuário da nuvem pública:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
Usuário da nuvem privada
curl -v -X GET http://MANAGEMENT_HOST:PORT_#>/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
Onde:
- ORGANIZATION_NAME é o nome da organização.
- ENVIRONMENT_NAME é o nome do ambiente;
- KEYSTORE_NAME é o nome do keystore.
- CERT_NAME é o nome do certificado.
- $TOKEN está definido como seu token de acesso OAuth 2.0, conforme descrito em Receber um token de acesso OAuth 2.0.
- As opções de
curl
usadas neste exemplo estão descritas em Usar curl
Exemplo de saída
Os detalhes de
serverCert
mostram o assunto e o emissor da seguinte maneira:Certificado de folha/entidade:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
Certificado intermediário:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
Verifique se o certificado real do servidor recebido na etapa 1 e o certificado armazenado no truststore obtido na etapa 3 correspondem. Se eles não corresponderem, essa é a causa do problema.
No exemplo acima, vamos analisar um certificado de cada vez:
- Certificado de folha:
No servidor de back-end:
s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4
No truststore do processador de mensagens (cliente):
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
O certificado de folha armazenado no truststore corresponde ao do servidor de back-end.
- Certificado intermediário:
No servidor de back-end:
s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
No truststore do processador de mensagens (cliente):
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
O certificado intermediário armazenado no truststore corresponde ao do servidor de back-end.
- Certificado raiz:
No servidor de back-end:
s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
O certificado raiz está completamente ausente no truststore do processador de mensagens.
Como o certificado raiz está ausente no truststore, o processador de mensagens gera a seguinte exceção:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
e retorna
503 Service Unavailable
com o código de erromessaging.adaptors.http.flow.SslHandshakeFailed
para os aplicativos clientes.
- Certificado de folha:
Resolução
- Verifique se você tem a cadeia de certificados completa e adequada do servidor de back-end.
- Se você for um usuário da nuvem pública, siga as instruções em Atualizar um certificado TLS para o Cloud e atualize o certificado para o truststore do processador de mensagens do Apigee Edge.
- Se você for um usuário da nuvem privada, siga as instruções em Atualizar um certificado TLS para a nuvem privada e atualize o certificado para o truststore de processador de mensagens do Apigee Edge.
Causa: incompatibilidade de FQDN no certificado do servidor de back-end e o nome do host no endpoint de destino
Se o servidor de back-end apresentar uma cadeia de certificados que contém FQDN, que não corresponde ao
nome do host especificado no endpoint de destino, o processo de mensagem do Apigee Edge retornará o erro
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
.
Diagnóstico
- Examine o endpoint de destino específico no proxy de API em que você está observando esse
erro e anote o nome do host do servidor de back-end:
TargetEndpoint de amostra:
<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.company.com/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
No exemplo acima, o nome do host do servidor de back-end é
backend.company.com
. Determine o FQDN no certificado do servidor de back-end usando o comando
openssl
, conforme mostrado abaixo:openssl s_client -connect BACKEND_SERVER_HOST_NAME>:PORT_#>
Exemplo:
openssl s_client -connect backend.company.com:443
Analise a seção
Certificate chain
e observe o FQDN especificado como parte do CN no assunto do certificado folha.Certificate chain 0 s:/
CN=backend.apigee.net
i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1No exemplo acima, o FQDN do servidor de back-end é
backend.apigee.net
.- Se o nome do host do servidor de back-end recebido na etapa 1 e o FQDN recebido na etapa 2 não corresponderem, essa será a causa do erro.
- No exemplo discutido acima, o nome do host no endpoint de destino é
backend.company.com
. No entanto, o nome do FQDN no certificado do servidor de back-end ébackend.apigee.net
. Como eles não são iguais, você vai receber esse erro.
Resolução
Para corrigir esse problema, use um dos seguintes métodos:
FQDN correto
Atualize o keystore do servidor de back-end com o FQDN correto e a cadeia de certificados completa e válida:
- Se você não tiver o certificado do servidor de back-end com o FQDN correto, consiga o certificado adequado de uma CA (autoridade de certificação) apropriada.
Verifique se você tem uma cadeia de certificados do servidor de back-end válida e completa.
- Depois de ter a cadeia de certificados válida e completa com o FQDN correto do servidor de back-end no certificado de folha ou de entidade idêntico ao nome do host especificado no endpoint de destino, atualize o keystore do back-end com a cadeia de certificados completa.
Servidor de back-end correto
Atualize o endpoint de destino com o nome de host do servidor de back-end correto:
- Se o nome do host tiver sido especificado incorretamente no endpoint de destino, atualize-o para que tenha o nome de host correto que corresponda ao FQDN no certificado do servidor de back-end.
Salve as alterações feitas no proxy de API.
No exemplo discutido acima, se o nome do host do servidor de back-end foi especificado incorretamente, é possível corrigi-lo usando o FQDN do certificado do servidor de back-end, que é
backend.apigee.net
da seguinte maneira:<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.apigee.net/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
Causa: certificado ou cadeia de certificados incorretos/incompletos apresentados pelo servidor de back-end
Diagnóstico
- Acesse a cadeia de certificados do servidor de back-end executando o comando
openssl
no nome do host do servidor de back-end da seguinte maneira:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
Observe o
Certificate chain
na saída do comando acima.Exemplo de cadeia de certificados do servidor de back-end da saída do comando openssl:
Certificate chain 0 s:/
CN=mocktarget.apigee.net
i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 - Verifique se você tem a cadeia de certificados completa e adequada, conforme explicado em Como validar a cadeia de certificados.
Se você não tem a cadeia de certificados válida e completa para o servidor de back-end, essa é a causa do problema.
Na amostra de cadeia de certificados do servidor de back-end mostrada acima, o certificado raiz está ausente. Portanto, você recebe esse erro.
Resolução
Atualize o keystore do servidor de back-end com uma cadeia de certificados válida e completa:
Confira se você tem uma cadeia de certificados do servidor de back-end válida e completa.
- Atualize a cadeia de certificados válida e completa no keystore do servidor de back-end.
Se o problema persistir, acesse Precisamos coletar informações de diagnóstico.
É necessário coletar informações de diagnóstico
Se o problema persistir mesmo depois de seguir as instruções acima, colete as seguintes informações de diagnóstico e entre em contato com o suporte do Apigee Edge:
- Se você for um usuário da nuvem pública, forneça as seguintes informações:
- Nome da organização
- Nome do ambiente
- Nome do proxy de API
- Concluir o comando
curl
para reproduzir o erro - Arquivo de rastreamento mostrando o erro
Saída do comando
openssl
:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- Pacotes TCP/IP capturados no servidor de back-end
- Se você for um usuário da nuvem privada, forneça as seguintes informações:
- Mensagem de erro completa observada
- Pacote de proxy de API
- Arquivo de rastreamento mostrando o erro
- Registros do processador de mensagens
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Saída do comando
openssl
:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- Pacotes TCP/IP capturados no servidor de back-end ou no processador de mensagens.
- Resultado de Receber todos os certificados de uma API keystore ou truststore e os detalhes de cada certificado recebido usando a API Receber detalhes do certificado de uma API Keystore ou Truststore.
Referências
- Cadeia de confiança do certificado
- Comando OpenSSL