502 잘못된 게이트웨이 - 자체 서명된 인증서 체인

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

<ph type="x-smartling-placeholder">

증상

클라이언트 애플리케이션이 다음 메시지와 함께 HTTP 응답 코드 502를 수신합니다. Edge Microgateway의 API 호출에 대한 응답으로 Bad Gateway).

또는 다음을 실행할 때 관리자에게 self signed certificate in certificate chain 오류가 표시됩니다. <ph type="x-smartling-placeholder"></ph> edgemicro configure 명령어.

오류 메시지

클라이언트에 다음과 같은 응답 메시지가 표시됩니다.

HTTP/1.1 502 Bad Gateway

오류 응답의 일반적인 두 가지 예는 다음과 같습니다.

{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}

또는 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' }

가능한 원인

원인 설명 다음에 관한 문제 해결 안내
<ph type="x-smartling-placeholder"></ph> 대상 서버에서 자체 서명 인증서를 제시함 Edge Microgateway가 대상 서버의 인증서를 확인하고 신뢰할 수 없는 경우 이를 확인합니다. 런타임 오류가 발생합니다. 에지 퍼블릭 및 프라이빗 클라우드 사용자
Apigee Edge Management Server가 자체 서명 인증서를 사용함 Edge Microgateway를 처음 구성할 때는 다음을 통해 Apigee Edge에 연결됩니다. 부트스트랩으로 전송되는 TLS Edge에서 자체 서명 인증서를 제공하는 경우 실패합니다. Edge 프라이빗 클라우드 사용자

원인: 대상 서버가 자체 서명 인증서를 제시함

<ph type="x-smartling-placeholder">

자체 서명 인증서는 대상 서버의 <ph type="x-smartling-placeholder"></ph> southbound 연결이 없으면 Edge Microgateway에서 기본적으로 이 오류가 발생합니다. 자체 서명된 인증서를 신뢰하지 않습니다.

진단

로그 (/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][]

오류 코드 SELF_SIGNED_CERT_IN_CHAIN는 Edge Microgateway에 오류가 있음을 나타냅니다. 대상 서버로부터 자체 서명 인증서를 수신했을 가능성이 매우 높습니다. 이를 확인하려면 다음 단계를 따르세요.

  1. 다음 openssl 명령어를 실행하여 대상 서버의 인증서 체인:
    echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
    
  2. 대상 서버의 인증서 체인이 실제로 자체 서명된 경우 있습니다.

    다음 예에서는 대상 서버가 자체 서명 인증서를 제공합니다.

    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
    

해상도

  1. 대상 서버를 소유한 팀과 협력하여 인증 기관에서 서명한 올바른 TLS 인증서를 조달합니다. 신뢰할 수 있는 인증 기관 (CA)으로 구성되어 있어야 합니다 <ph type="x-smartling-placeholder">
  2. 그럴 수 없다면 다음 옵션 중 하나를 사용하여 자체 서명을 허용하는 것이 좋습니다. 다른 Google Cloud 인증서를 사용할 수 있습니다

    <ph type="x-smartling-placeholder">

    옵션 1: Edge Microgateway가 모든 정책을 신뢰하도록 시스템 속성 설정 인증서

    1. Docker를 사용하는 경우 다음을 참조하세요. <ph type="x-smartling-placeholder"></ph> Node.js에서 신뢰하지 않는 CA 사용
    2. 그렇지 않으면 NODE_EXTRA_CA_CERTS라는 환경 변수를 내보냅니다. 루트 CA 파일을 가리키는 것입니다

      이는 공식 Node.js 있습니다.

    를 통해 개인정보처리방침을 정의할 수 있습니다. <ph type="x-smartling-placeholder">

    옵션 #2: 특정 IP 주소를 신뢰하도록 Edge Microgateway YAML 구성 파일을 구성 해당 대상 서버의 인증서

    1. 대상 서버의 인증서 (또는 체인)가 PEM 형식인지 확인합니다. 받는사람 다른 인증서 형식을 PEM으로 변환하려면 <ph type="x-smartling-placeholder"></ph> 지원되는 형식으로 인증서 변환을 참조하세요.
    2. 인증서 체인이 있는 경우 인증서가 올바른 있습니다. 리프 인증서가 항상 첫 번째에 오고 그 다음에 중간 인증서가 와야 합니다. 인증서, 루트 인증서를 차례로 선택합니다. 이에 대한 자세한 설명은 <ph type="x-smartling-placeholder"></ph> 인증서 체인의 유효성 검사.

      다음 예제에서는 untrusted-root.badssl.com

      edgemicro:
      ...
      targets:
        - host: 'untrusted-root.badssl.com'
          ssl:
            client
              ca: /opt/apigee/certs/untrusted-root.pem
      

    이를 구성하는 방법에 대한 안내는 <ph type="x-smartling-placeholder"></ph> Edge Microgateway 모듈 - 단방향 및 양방향 Southbound TLS 구성 동영상 다음을 참고하세요. <ph type="x-smartling-placeholder"></ph> Edge Microgateway 서버에서 SSL 구성을 참조하세요.

문제가 계속되면 진단 정보를 수집해야 합니다.

원인: Apigee Edge 관리 서버가 자체 서명 인증서를 사용합니다.

<ph type="x-smartling-placeholder">

Edge Microgateway를 처음 설정할 때 실행해야 하는 명령어 중 하나 edgemicro configure 또는 edgemicro private configure입니다. 이 명령어는 클러스터를 부트스트랩하면 Apigee Edge에 접속하여 필요한 정보를 다운로드합니다.

Edge 프라이빗 클라우드의 경우 관리 서버 URL은 -m 인수로 결정됩니다. 관리 서버에 TLS를 사용 설정한 경우 Edge Microgateway에서 확인을 시도합니다. 관리 서버에서 제공하는 인증서를 사용합니다.

Edge Private Cloud의 edgemicro configure 명령어 예시는 다음과 같습니다.

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

관리 서버가 자체 서명 인증서로 구성된 경우 콘솔 출력에 다음 오류가 표시됩니다.

{ 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' }

진단

  1. 이 경우 관리 서버는 (management.apigee-dev.net개) 자체 서명 TLS 인증서를 반환할 수 있습니다.
  2. Apigee Edge 시스템 관리자가 인증서를 제공했을 수 있습니다. 사본도 있습니다
  3. 그렇지 않으면 다음 명령어를 실행하여 인증서에 대한 정보를 가져옵니다.
    echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
    
  4. 관리 서버에 자체 서명 인증서가 있는 경우 이것이 이 문제의 원인입니다. 있습니다.

해상도

  1. 대상 서버를 소유한 팀과 협력하여 인증 기관에서 서명한 올바른 TLS 인증서를 조달합니다. 신뢰할 수 있는 인증 기관 (CA)으로 구성되어 있어야 합니다 <ph type="x-smartling-placeholder">
  2. 그렇게 할 수 없는 경우 다음을 실행하여 자체 서명을 허용합니다. 다른 Google Cloud 인증서를 사용할 수 있습니다

  3. <ph type="x-smartling-placeholder">
  4. Edge Microgateway가 모든 인증서를 신뢰하도록 시스템 속성을 설정합니다.
  5. Docker를 사용하는 경우 다음을 참조하세요. <ph type="x-smartling-placeholder"></ph> Node.js에서 신뢰하지 않는 CA 사용
  6. 그렇지 않으면 NODE_EXTRA_CA_CERTS라는 환경 변수를 내보냅니다. 루트 CA 파일을 가리키고 있습니다. 공식 문서에 문서화된 Node.js 웹사이트 <ph type="x-smartling-placeholder">

진단 정보 수집 필요

위의 안내를 따른 후에도 문제가 지속되면 다음을 수집합니다. Apigee Edge 지원팀에 문의하세요.

  • 로그 파일: 기본 폴더는 /var/tmp이지만 다음에서 재정의할 수 있습니다. 기본 config.yaml 파일 (logging > dir parameter) 그것은 제공 전에 log > levelinfo로 변경하는 것이 좋습니다. 로그 파일을 Apigee Edge 지원팀에 전달합니다.
  • 구성 파일: Edge Microgateway의 기본 구성은 YAML에 있습니다. 기본 Edge Microgateway 폴더($HOME/.edgemicro)에 있습니다. 이 default.yaml라는 기본 구성 파일과 환경당 하나씩 ORG-ENV-config.yaml 이 파일 업로드 영향을 받는 조직 및 환경 전체

    참조 문서

    <ph type="x-smartling-placeholder"></ph> TLS를 사용하여 Edge API에 액세스하도록 Edge UI 구성하기