Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
Sintoma
O aplicativo cliente recebe um código de resposta HTTP 502
com a mensagem.
Bad Gateway
como uma resposta para chamadas de API no Edge Microgateway.
Como alternativa, o administrador receberá um erro self signed certificate in certificate
chain
ao executar a
edgemicro configure
.
Mensagem de erro
O cliente verá a seguinte mensagem de resposta:
HTTP/1.1 502 Bad Gateway
Dois exemplos comuns de respostas de erro são:
{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
Como alternativa, esse erro pode ocorrer ao executar edgemicro configure
:
{ Error: self signed certificate in certificate chain at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34) at TLSSocket.emit (events.js:189:13) at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }
Causas possíveis
Causa | Descrição | Instruções de solução de problemas aplicáveis para |
---|---|---|
O servidor de destino apresenta um certificado autoassinado | O Edge Microgateway verificará o certificado do servidor de destino e, se ele não for confiável vai gerar um erro de tempo de execução. | Usuários de nuvem pública e privada de borda |
O Apigee Edge Management Server usa um certificado autoassinado | Ao configurar o Edge Microgateway pela primeira vez, ele se conectará ao Apigee Edge por TLS para inicialização. Se o Edge apresentar um certificado autoassinado, ocorrerá uma falha. | Usuários da nuvem privada de borda |
Causa: o servidor de destino apresenta um certificado autoassinado
Se um certificado autoassinado é apresentado pelo servidor de destino no southbound, então o Edge Microgateway geraria, por padrão, esse erro porque não confia em certificados autoassinados.
Diagnóstico
Você poderá encontrar o seguinte erro nos registros (/var/tmp/edgemicro-`hostname`-
*.log
):
2021-05-18T10:52:46.425Z [error][0:8000][1][gsc][test][edgemicro_badtargethost][][][2db53f80- b7c7-11eb-9abe-05b6297863f1][microgateway-core][][GET][502][self signed certificate in certificate chain][SELF_SIGNED_CERT_IN_CHAIN][]
O código de erro SELF_SIGNED_CERT_IN_CHAIN
indica que o Edge Microgateway tem
muito provavelmente receberam um certificado autoassinado do servidor de destino. Para confirmar isso, execute
as seguintes etapas:
- Execute o comando
openssl
a seguir para verificar a propriedade do servidor de destino cadeia de certificados:echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
Se a cadeia de certificados do servidor de destino for realmente autoassinado, essa é a causa do o problema.
No exemplo a seguir, observe que o servidor de destino apresenta um certificado autoassinado:
echo | openssl s_client -connect untrusted-root.badssl.com:443 -servername untrusted-root.badssl.com | openssl x509 -noout
depth=1 C = US, ST = California, L = San Francisco, O = BadSSL, CN = BadSSL Untrusted Root Certificate Authority verify error:num=19:self signed certificate in certificate chain verify return:0 DONE
Resolução
- Trabalhar com a equipe proprietária do servidor de destino para conseguir um certificado TLS adequado assinado por um de uma autoridade certificadora (CA, na sigla em inglês) confiável.
Se isso não for possível, considere uma das seguintes opções para permitir imagens certificados no Edge Microgateway.
Opção 1: definir uma propriedade do sistema para permitir que o Edge Microgateway confie em todos certificados
- Se você estiver usando o Docker, consulte Como usar uma AC não confiável para o Node.js
Caso contrário, exporte uma variável de ambiente chamada
NODE_EXTRA_CA_CERTS
. que apontem para o arquivo da CA raiz.Isso está documentado no documento Node.js site.
Opção 2: configurar o arquivo de configuração YAML do Edge Microgateway para confiar nesses dados específicos certificado desse servidor
- Verifique se o certificado (ou a cadeia) do servidor de destino está no formato PEM. Para converter outros formatos de certificado em PEM, siga as instruções Converter certificados em formato compatível
Se houver uma cadeia de certificados, verifique se os certificados estão no ordem. O certificado de folha precisa sempre ser o primeiro, seguido pelo intermediário e o certificado raiz. Há mais explicações sobre isso no Validação da cadeia de certificados.
No exemplo a seguir, configuramos o arquivo de CA confiável para
untrusted-root.badssl.com
:edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
As instruções para essa configuração também são abordadas nos Módulo Edge Microgateway: configurar vídeo TLS unidirecional e bidirecional no sentido sul Consulte Como configurar o SSL no servidor do Edge Microgateway para mais informações.
Se o problema persistir, acesse É necessário coletar informações de diagnóstico.
Causa: o Apigee Edge Management Server usa um certificado autoassinado
Quando o Edge Microgateway é configurado pela primeira vez, um dos comandos que você precisará executar
é edgemicro configure
ou edgemicro private configure
. Esse comando vai
vai inicializar o cluster. Ele entrará em contato com o Apigee Edge para fazer o download das informações necessárias.
Na nuvem privada de borda, o URL do servidor de gerenciamento é determinado pelo argumento -m
.
Se você tiver ativado o TLS para o servidor de gerenciamento, o Edge Microgateway tentará verificar
o certificado apresentado pelo servidor de gerenciamento.
Este é um exemplo do comando edgemicro configure
para a nuvem privada de borda:
edgemicro private configure -u <username> -p <password> -o apigee -e dev -v secure -r https://apigee-dev.net -m https://management.apigee-dev.net:8443
Se o servidor de gerenciamento estiver configurado com um certificado autoassinado, você receberá a seguinte erro na saída do console.
{ Error: self signed certificate in certificate chain at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34) at TLSSocket.emit (events.js:189:13) at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }
Diagnóstico
- Nesse caso, o servidor de gerenciamento
(
management.apigee-dev.net
) pode estar retornando um certificado TLS autoassinado. - É provável que o administrador do sistema do Apigee Edge tenha fornecido o certificado e tem uma cópia dele.
- Caso contrário, execute o seguinte comando para ver informações sobre o certificado:
echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
- Se o servidor de gerenciamento tiver um certificado autoassinado, essa é a causa do problema.
Resolução
- Trabalhar com a equipe proprietária do servidor de destino para conseguir um certificado TLS adequado assinado por um de uma autoridade certificadora (CA, na sigla em inglês) confiável.
Se isso não for possível, faça o seguinte para permitir a autenticação certificados no Edge Microgateway.
- Defina uma propriedade do sistema para permitir que o Edge Microgateway confie em todos os certificados.
- Se você estiver usando o Docker, consulte Usar uma AC em que o Node.js não confia.
- Caso contrário, exporte uma variável de ambiente chamada
NODE_EXTRA_CA_CERTS
. que aponta para o arquivo da CA raiz. documentadas no documento oficial Node.js.
É 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:
- Arquivos de registros: a pasta padrão é
/var/tmp
, mas pode ser substituída em no arquivoconfig.yaml
principal (logging > dir parameter
). É recomendado mudarlog > level
parainfo
antes de fornecer o os arquivos de registro no suporte do Apigee Edge. - Arquivo de configuração: a configuração principal do Edge Microgateway está no YAML
na pasta padrão do Edge Microgateway,
$HOME/.edgemicro
. Há um arquivo de configuração padrão chamadodefault.yaml
e um para cada ambiente. ORG-ENV-config.yaml
. Fazer upload deste arquivo da organização e do ambiente afetados.Documentos de referência
Configurar a interface do Edge para usar o TLS e acessar a API Edge