Esta é a documentação do Apigee Edge.
Acesse
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 a API
chamadas.
Mensagem de erro
O aplicativo cliente recebe o seguinte código de resposta:
HTTP/1.1 503 Service Unavailable
Além disso, você poderá encontrar 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 SSL
processo de handshake entre o processador de mensagens do Apigee Edge e o servidor de back-end por vários
motivos. A mensagem de erro no faultstring
normalmente indica
uma possível causa de alto nível que causou esse erro.
Dependendo da mensagem de erro observada no faultstring
, é necessário usar
e técnicas apropriadas para solucionar o problema. Este playbook explica como resolver problemas
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 no servidor de back-end:
- Se o truststore do processador de mensagens do Apigee Edge:
- Contém uma cadeia de certificados que não corresponde ao endereço completo do servidor de back-end cadeia de certificados, 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 Nome de domínio totalmente qualificado (FQDN, na sigla em inglês) que não corresponde ao nome do host especificado no o endpoint de destino
- Contém uma cadeia de certificados incorreta ou incompleta
Estas são as possíveis causas desse problema:
Causa | Descrição | Instruções de solução de problemas aplicáveis para |
---|---|---|
Certificado incorreto/incompleto ou cadeia de certificados no truststore do processador de mensagens | O certificado e/ou a cadeia dele armazenado no truststore 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 de certificados completa do servidor de back-end. | Usuários de nuvem pública e privada de borda |
Incompatibilidade de 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 de nuvem pública e privada de borda |
Certificado incorreto/incompleto ou cadeia de certificados apresentado pelo servidor de back-end | A cadeia de certificados apresentada pelo servidor de back-end está incorreta ou incompleta. | Usuários de nuvem pública e privada de borda |
Etapas comuns do diagnóstico
Use uma das seguintes ferramentas/técnicas para diagnosticar esse erro:
Monitoramento de APIs
Procedimento no 1: como usar o monitoramento de APIs
Para diagnosticar o erro usando a API Monitoring:
- Faça login na interface do Apigee Edge como usuário com um para o papel apropriado.
Alterne para a organização na qual você deseja investigar o problema.
- Navegue até o menu Analisar > Monitoramento de APIs > Investigar.
- Selecione o período específico em que você observou os erros.
Compare Código de falha com Time.
Selecione uma célula que contenha o código de falha
messaging.adaptors.http.flow.SslHandshakeFailed
conforme mostrado abaixo:Informações sobre o código de falha
messaging.adaptors.http.flow.SslHandshakeFailed
aparece como mostrados abaixo:Clique em Ver registros e expanda a linha da solicitação com falha.
- Na janela Registros, observe os seguintes detalhes:
- ID da mensagem da solicitação
- Código de status:
503
- Origem da falha:
target
- Código da falha:
messaging.adaptors.http.flow.SslHandshakeFailed
Trace
Procedimento no 2: como usar a ferramenta Trace
Para diagnosticar o erro usando a ferramenta Trace:
- Ative a sessão de rastreamento e
- Aguarde o erro
503 Service Unavailable
com o código do erro.messaging.adaptors.http.flow.SslHandshakeFailed
ocorrer ou - Se você puder reproduzir o problema, faça a chamada de API para reproduzir o problema
503 Service Unavailable
- Aguarde o erro
Verifique se Mostrar todos os FlowInfos está ativado:
- Selecione uma das solicitações com falha e examine o trace.
- Navegar pelas diferentes fases do trace e localizar onde a falha ocorreu.
Normalmente, o erro ocorre após a fase Fluxo de solicitação de destino iniciado. conforme mostrado abaixo:
- Observe os seguintes valores do trace:
- 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 as configurações certificado.
- erro:
- Navegue até a fase AX (dados do Analytics registrados) no trace e clique nela.
Role para baixo até a seção Cabeçalhos de erro de detalhes da fase e determine os de X-Apigee-fault-code e X-Apigee-fault-source, e X-Apigee-Message-ID, conforme mostrado abaixo:
- Anote 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: como usar registros de acesso do NGINX
Para diagnosticar o erro usando registros de acesso do NGINX:
- Se você for um usuário da nuvem privada, poderá usar os registros de acesso do NGINX para determinar
as principais informações sobre o
503 Service Unavailable
do HTTP. 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ódigo de erro.messaging.adaptors.http.flow.SslHandshakeFailed
durante um período específico (se o problema tiver acontecido anterior) ou se ainda há solicitações falhando com503
. Se você encontrar erros
503
com a correspondência X-Apigee-fault-code o valor demessaging.adaptors.http.flow.SslHandshakeFailed
, então determinar o valor de X-Apigee-fault-source.Exemplo de erro 503 do registro de acesso do NGINX:
O exemplo de entrada do registro de acesso do NGINX acima 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 no 4: como usar registros do processador de mensagens
- Determinar o ID da mensagem de uma das solicitações com falha usando a API Monitoring, a ferramenta Trace ou Registros de acesso do NGINX, conforme explicado nas Etapas comuns de diagnóstico.
Pesquisar 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
). Você pode observar o seguinte erro: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 um 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>Observe que a falha de handshake se deve ao seguinte:
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 enquanto o processador de mensagens do Apigee Edge estava não conseguiu validar o certificado do servidor de back-end.
Causa: certificado ou cadeia de certificados incorreto/incompleto no truststore do processador de mensagens
Diagnóstico
- Determine o código da falha e a fonte da falha do erro observado usando a API registros do Monitoring, da ferramenta Trace ou de acesso NGINX, como explicado na seção Informações etapas de diagnóstico.
- Se o Código da falha for
messaging.adaptors.http.flow.SslHandshakeFailed
: determine a mensagem de erro usando um dos seguintes métodos: - Encontre error.cause usando a ferramenta Trace, conforme explicado nas 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 da sua 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 porque o processador de mensagens do Apigee Edge não conseguiu validar as configurações certificado.
É possível 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 métodos a seguir para determinar a cadeia de certificados do servidor de back-end:
openssl
Execute o comando openssl
no host do servidor de back-end
da seguinte forma:
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 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 na servidor de back-end.
- Se você for usuário da nuvem privada, poderá capturar o TCP/IP pacotes no servidor de back-end ou no processador de mensagens. De preferência, capture-os no servidor de back-end enquanto os pacotes são descriptografados nele.
Use o seguinte tcpdump para capturar pacotes TCP/IP:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
Analise os pacotes TCP/IP usando o ferramenta Wireshark ou semelhante com a qual você está familiarizado.
Análise de amostra de Tcpdump
- Pacote 43: o processador de mensagens (origem) enviou um
Mensagem
Client Hello
para o servidor de back-end (destino). - Pacote 44:o servidor de back-end confirma o recebimento do
Client Hello
do processador de mensagens. - Pacote 45:o servidor de back-end envia o
Server Hello
junto com o certificado. - Pacote 46: o processador de mensagens confirma o recebimento do
Server Hello
e o certificado. Pacote 47:o processador de mensagens envia um
FIN, ACK
. mensagem seguida porRST, ACK
no Pacote 48.Isso indica que a validação do certificado do servidor de back-end pela Falha no processador de mensagens. Isso ocorre porque o processador de mensagens não tem qualquer certificado que corresponda ao do servidor de back-end ou não confiável o certificado do servidor de back-end com os certificados disponíveis no truststore (do processador de mensagem).
Você pode revisar o Pacote 45 e determinar o certificado cadeia 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 certificado raiz comCN = GTX Root R1
.
Se você tiver certeza de que a validação da certificação do servidor falhou, faça o seguinte: Acesse a Fase 2: comparar o certificado do servidor de back-end e certificados armazenados no truststore do processador de mensagens.
- Pacote 43: o processador de mensagens (origem) enviou um
Mensagem
Fase 2
Fase 2: comparar os certificados do servidor de back-end armazenados no o truststore 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:
Consiga o nome de referência do truststore do elemento
TrustStore
na seçãoSSLInfo
noTargetEndpoint
.Vamos conferir um exemplo de seção de
SSLInfo
em umTargetEndpoint
configuração:<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 IU do Edge, selecione Ambientes > Referências. Anote o nome na Coluna Reference da referência do truststore específica. Ele será seu nome do truststore.
No exemplo acima, o nome do truststore é:
myCompanyTruststoreRef:
myCompanyTruststore
Obter os certificados armazenados no truststore (determinado na etapa anterior) usando as seguintes APIs:
Receber todos os certificados de um keystore ou truststore Essa API lista todas as 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á definida para seu token de acesso OAuth 2.0, conforme descrito em Receber um token de acesso do OAuth 2.0
- As opções de
curl
usadas neste exemplo estão descritas em Usar curl
Exemplo de resposta:
Os certificados do exemplo de truststore
myCompanyTruststore
são:[ "serverCert" ]
-
Acessar detalhes do certificado específico de um Keystore ou Truststore.
Essa API retorna as informações sobre um certificado específico no determinado
o truststore.
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 é definida como seu token de acesso OAuth 2.0, conforme descrito em Receber um token de acesso do 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 forma:Certificado de entidade/folha:
"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 armazenados no truststore obtidos na correspondência da etapa 3. Se eles não forem correspondentes, 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 back-end servidor.
- 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 arquivo o truststore.
Como o certificado raiz está ausente no truststore, o 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 do erro.messaging.adaptors.http.flow.SslHandshakeFailed
, para o cliente aplicativos conteinerizados.
- 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 Atualize um certificado TLS para a nuvem a fim de atualizar o certificado para a versão do o truststore de processador de mensagens.
- Se você for um usuário da nuvem privada, siga as instruções na Atualize um certificado TLS da nuvem privada para que ele seja atualizado o truststore de processador de mensagens do Apigee Edge.
Causa: incompatibilidade de FQDN no certificado do servidor de back-end e no nome do host no endpoint de destino
Se o servidor de back-end apresentar uma cadeia de certificados que contenha FQDN, que não corresponde ao
nome do host especificado no endpoint de destino, o processo de mensagens 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 isso
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
. Determinar o FQDN no certificado do servidor de back-end usando o método
openssl
como 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 de CN no assunto do certificado de 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 de host do servidor de back-end obtido 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ê 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 um FQDN correto, um certificado válido e completo rede:
- Se você não tiver um certificado de servidor de back-end com o FQDN correto, Em seguida, consiga o certificado adequado de uma autoridade de certificação (CA, na sigla em inglês) apropriada.
Confirme se você tem cadeia de certificados do servidor de back-end completa e válida.
- Quando você tiver uma cadeia de certificados completa e válida com o FQDN correto do servidor de back-end na folha ou certificado de entidade idêntico ao nome do host especificado no endpoint de destino, atualize o keystore do back-end com o 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 endpoint de destino para ter o nome de host correto que corresponde ao FQDN no back-end do servidor de aplicativos da Web.
Salve as alterações no proxy de API.
No exemplo discutido acima, se o nome do host do servidor de back-end estiver incorreto especificado, é possível corrigi-lo usando o FQDN do certificado do servidor de back-end que é
backend.apigee.net
desta 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: um certificado ou uma cadeia de certificados incorreto/incompleto apresentado pelo servidor de back-end
Diagnóstico
- Receba a cadeia de certificados do servidor de back-end executando o comando
openssl
. com o nome do host do servidor de back-end da seguinte maneira:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
Observe o
Certificate chain
da saída do comando acima.Exemplo de cadeia de certificados do servidor de back-end da 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 - Verifique se você tem a cadeia de certificados completa e adequada, conforme explicado em Validação da cadeia de certificados.
Se você não tiver uma cadeia de certificados completa e válida 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 é desaparecidos. 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 completa e válida.
- Atualize a cadeia de certificados completa e válida no keystore do servidor de back-end.
Se o problema persistir, vá para É necessário 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: 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 da API
- Complete 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 estas 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 de Acessar todos os certificados de uma API keystore ou truststore e também os detalhes de cada certificado obtido usando Acesse os detalhes do certificado de uma API Keystore ou Truststore.
Referências
- Cadeia de confiança do certificado
- Comando OpenSSL