Você está lendo a documentação do Apigee Edge.
Acesse a documentação da
Apigee X. info
Sintoma
O aplicativo cliente recebe um código de status HTTP 503 Service Unavailable com o
código de erro messaging.adaptors.http.flow.SslHandshakeFailed como resposta para chamadas de
API.
Mensagem de erro
O aplicativo cliente recebe o seguinte código de resposta:
HTTP/1.1 503 Service Unavailable
Além disso, você pode receber 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
Você pode receber 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 geralmente indica uma possível causa de alto nível que levou a esse erro.
Dependendo da mensagem de erro observada no faultstring, use
técnicas adequadas para resolver o problema. Este manual explica como resolver
esse erro se você observar a mensagem 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) que não corresponde ao nome de host especificado no endpoint de destino
- Contém uma cadeia de certificados incorreta ou incompleta
As possíveis causas para esse problema são as seguintes:
| Causa | Descrição | Instruções de solução de problemas aplicáveis para |
|---|---|---|
| Certificado ou cadeia de certificados incorreta/incompleta no truststore do processador de mensagens | O certificado e/ou a cadeia dele armazenados no repositório de confiança do processador de mensagens do Apigee Edge não correspondem à cadeia de certificados do servidor de back-end ou não contêm a cadeia de certificados completa do servidor de back-end. | Usuários da nuvem pública e privada do Edge |
| Incompatibilidade do FQDN no certificado do servidor de back-end e no 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 da nuvem pública e privada do Edge |
| Certificado ou cadeia de certificados incorreta/incompleta apresentada pelo servidor de back-end | A cadeia de certificados apresentada pelo servidor de back-end está incorreta ou incompleta. | Usuários da nuvem pública e privada 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 API Monitoring
Para diagnosticar o erro usando o API Monitoring:
- Faça login na interface do Apigee Edge como um usuário com um papel apropriado.
Mude para a organização em que você quer investigar o problema.
- Acesse a página Analisar > Monitoramento de APIs > Investigar.
- Selecione o período específico em que você observou os erros.
Crie um gráfico com Código de falha e Tempo.
Selecione uma célula com 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.SslHandshakeFailedsão mostradas conforme abaixo:
Clique em Ver registros e expanda a linha da solicitação com falha.
- Na janela Registros, observe os seguintes detalhes:
- ID da mensagem de solicitação
- Código de status:
503 - Origem da falha:
target - Código de falha:
messaging.adaptors.http.flow.SslHandshakeFailed
Trace
Procedimento 2: usar a ferramenta Trace
Para diagnosticar o erro usando a ferramenta Trace:
- Ative a sessão de rastreamento e uma das seguintes opções:
- Aguarde o erro
503 Service Unavailablecom o códigomessaging.adaptors.http.flow.SslHandshakeFailedou - Se for possível reproduzir o problema, faça a chamada de API para reproduzir o problema
503 Service Unavailable
- Aguarde o erro
Verifique se a opção Mostrar todos os FlowInfos está ativada:

- Selecione uma das solicitações com falha e examine o rastreamento.
- Navegue pelas diferentes fases do rastreamento e localize onde a falha ocorreu.
Normalmente, você encontra o erro depois da fase Fluxo de solicitação de destino iniciado, conforme mostrado abaixo:

- Observe os valores a seguir no rastreamento:
- 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 targetindica que o handshake 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 a tela para baixo até a seção Cabeçalhos de erro de detalhes da fase 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 3: usar registros de acesso do NGINX
Para diagnosticar o erro usando registros de acesso do NGINX:
- Se você for um usuário do Private Cloud, poderá usar os registros de acesso do NGINX para determinar as principais informações sobre
503 Service UnavailableHTTP. Verifique os registros de acesso do NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Pesquise para ver se há erros de
503com o código de erromessaging.adaptors.http.flow.SslHandshakeFaileddurante um período específico (se o problema aconteceu no passado) ou se ainda há solicitações com falha em503. Se você encontrar erros de
503com 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 exemplo acima do registro de acesso do NGINX tem os seguintes valores para X-Apigee-fault-code e X-Apigee-fault-source:
Cabeçalhos Valor X-Apigee-fault-code messaging.adaptors.http.flow.SslHandshakeFailedX-Apigee-fault-source target
Registros do processador de mensagens
Procedimento 4: usar registros do processador de mensagens
- Determine o ID da mensagem de uma das solicitações com falha usando o API Monitoring, a ferramenta Trace ou os registros de acesso do NGINX, conforme explicado em Etapas comuns de diagnóstico.
Procure 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). Talvez você veja o seguinte erro:org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1NIOThread@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 rastreamento de pilha detalhado, conforme mostrado abaixo:
org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1NIOThread@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 targetat sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302) ... <snipped>A falha no handshake ocorreu devido a:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetIsso 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 incorreta/incompleta no truststore do processador de mensagens
Diagnóstico
- Determine o código de falha e a origem da falha do erro observado usando o monitoramento de APIs, a ferramenta Trace ou os registros de acesso do NGINX, conforme explicado em Etapas comuns de diagnóstico.
- Se o código de falha for
messaging.adaptors.http.flow.SslHandshakeFailed, determine a mensagem de erro usando um dos seguintes métodos: - Encontre o 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 do diagnóstico
- Encontre o
faultstringna resposta de erro da chamada de API, conforme mostrado 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.
Você pode depurar esse problema em duas fases:
- Fase 1:determinar a cadeia de certificados do servidor de back-end
- Fase 2:compare 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 seguintes métodos 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#
Anote a cadeia de certificados na saída do comando acima:
Exemplo de cadeia de certificados do servidor de back-end na resposta ao 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, já que os pacotes são descriptografados nele.
Use o seguinte comando tcpdump 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 outra semelhante que você conheça.
Exemplo de análise do Tcpdump
- Pacote 43:o processador de mensagens (origem) enviou uma
mensagem
Client Hellopara o servidor de back-end (destino). - Pacote 44:o servidor de back-end confirma o recebimento da mensagem
Client Hellodo processador de mensagens. - Pacote nº 45:o servidor de back-end envia a mensagem
Server Hellojunto com o certificado. - Pacote nº 46:o processador de mensagens confirma o recebimento da mensagem
Server Helloe do certificado. Pacote 47:o processador de mensagens envia uma mensagem
FIN, ACKseguida porRST, ACKno pacote 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 pode confiar no certificado do servidor de back-end com os certificados disponíveis no repositório de confiança do processador de mensagens.
Volte e revise o pacote nº 45 e determine a cadeia de certificados enviada pelo servidor de back-end.
- Neste exemplo, é possível ver que o servidor enviou um certificado folha
com o
common name (CN) = mocktarget.apigee.net, seguido por um certificado intermediário comCN= GTS CA 1D4e um certificado raiz comCN = GTX Root R1.
Se você tiver determinado que a validação do certificado do servidor falhou, acesse Fase 2: comparar o certificado do servidor de back-end e os certificados armazenados no truststore do processador de mensagens.
- Pacote 43:o processador de mensagens (origem) enviou uma
mensagem
Fase 2
Fase 2: comparar o certificado do servidor de back-end e os certificados armazenados no repositório de confiança do processador de mensagens
- Determine a cadeia de certificados do servidor de back-end.
- Determine o certificado armazenado no truststore do processador de mensagens usando
as seguintes etapas:
Receba o nome de referência do truststore do elemento
TrustStorena seçãoSSLInfodoTargetEndpoint.Confira um exemplo de seção
SSLInfoem uma configuraçãoTargetEndpoint:<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 usuário do Edge, selecione Ambientes > Referências. Observe o nome na coluna Referência para a referência específica do keystore de confiança. Esse será o nome do seu truststore.
No exemplo acima, o nome do truststore é:
myCompanyTruststoreRef:
myCompanyTruststore
Receba 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 do OAuth 2.0, conforme descrito em Receber um token de acesso do OAuth 2.0
- As opções de
curlusadas neste exemplo estão descritas em Usar curl
Exemplo de resposta:
Os certificados do exemplo de keystore de confiança
myCompanyTruststoresão:[ "serverCert" ]
-
Receba os detalhes de um certificado específico de um armazenamento de chaves ou de confiança.
Essa API retorna informações sobre um certificado específico no keystore de confiança
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 do OAuth 2.0, conforme descrito em Receber um token de acesso do OAuth 2.0
- As opções de
curlusadas neste exemplo estão descritas em Usar curl
Exemplo de saída
Os detalhes de
serverCertmostram o assunto e o emissor da seguinte forma: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 do servidor real obtido na etapa 1 e o certificado armazenado no repositório de confiança obtido na etapa 3 correspondem. Se não corresponderem, essa é a causa do problema.
No exemplo acima, vamos analisar um certificado por vez:
- Certificado folha:
No servidor de back-end:
s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4
Do repositório de confiança do processador de mensagens (cliente):
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
O certificado 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
Do repositório de confiança 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 repositório de confiança 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 Unavailablecom o código de erromessaging.adaptors.http.flow.SslHandshakeFailedpara os aplicativos clientes.
- Certificado folha:
Resolução
- Verifique se você tem a cadeia de certificados adequada e completa 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 a nuvem para atualizar o certificado para o repositório de confiança 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 para atualizar o certificado para o truststore do processador de mensagens do Apigee Edge.
Causa: o FQDN no certificado do servidor de back-end e o nome do host no endpoint de destino não correspondem
Se o servidor de back-end apresentar uma cadeia de certificados que contenha FQDN, que não corresponda ao
nome de host especificado no endpoint de destino, o processo de mensagens do Apigee Edge vai 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:
Exemplo de TargetEndpoint:
<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
opensslconforme mostrado abaixo:openssl s_client -connect BACKEND_SERVER_HOST_NAME>:PORT_#>
Exemplo:
openssl s_client -connect backend.company.com:443
Examine a seção
Certificate chaine observe o FQDN especificado como parte do CN no assunto do certificado folha.Certificate chain 0 s:/
CN=backend.apigee.neti:/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 obtido na etapa 1 e o FQDN obtido 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 correspondem, você recebe 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 uma cadeia de certificados válida e completa:
- Se você não tiver um certificado de servidor de back-end com o FQDN correto, consiga o certificado adequado de uma AC (autoridade certificadora) apropriada.
Valide se você tem uma cadeia de certificados válida e completa do servidor de back-end.
- 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 do host correto do servidor de back-end:
- Se o nome do host foi especificado incorretamente no endpoint de destino, atualize o endpoint de destino para ter o nome de host correto que corresponde ao FQDN no certificado do servidor de back-end.
Salve as mudanças no proxy de API.
No exemplo acima, se o nome do host do servidor de back-end foi especificado incorretamente, use o FQDN do certificado do servidor de back-end, ou seja,
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 incorreta/incompleta apresentada pelo servidor de back-end
Diagnóstico
- Para receber a cadeia de certificados do servidor de back-end, execute o comando
opensslno nome do host do servidor de back-end da seguinte maneira:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
Anote o
Certificate chainna saída do comando acima.Exemplo de cadeia de certificados do servidor de back-end na resposta ao comando openssl:
Certificate chain 0 s:/
CN=mocktarget.apigee.neti:/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 adequada e completa, conforme explicado em Validar a cadeia de certificados.
Se você não tiver a cadeia de certificados válida e completa para o servidor de back-end, essa é a causa do problema.
Na cadeia de certificados do servidor de back-end de exemplo 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:
Valide se você tem uma cadeia de certificados válida e completa do servidor de back-end.
- Atualize a cadeia de certificados válida e completa no keystore do servidor de back-end.
Se o problema persistir, acesse Precisa de 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, reúna 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
- Comando
curlcompleto 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.
- Saída da API Receber todos os certificados de um keystore ou truststore e também os detalhes de cada certificado obtido usando a API Receber detalhes do certificado de um keystore ou truststore.
Referências
- Certificado Cadeia de confiança
- Comando OpenSSL