Edge와 함께 SNI 사용

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

서버 이름 표시 (SNI)를 통해 동일한 IP에서 여러 HTTPS 대상을 제공할 수 있음 포트 80 및 440을 통과하도록 요청할 수 있습니다 SNI가 다음과 같은 경우 클라이언트에서 사용 설정된 경우 클라이언트는 대상 엔드포인트의 호스트 이름을 초기 TLS 핸드셰이크 이렇게 하면 TLS 서버에서 검증에 사용해야 하는 TLS 인증서를 결정할 수 있습니다. 요청을 처리합니다

예를 들어 요청 대상이 https://example.com/request/path인 경우 TLS 클라이언트는 TLS 핸드셰이크에 server_name 확장 프로그램을 추가합니다. 요청을 전송합니다.

Edge는 다음에서 SNI를 지원합니다.

  • 클라이언트 앱에서 API 프록시로 보내는 요청입니다. 이 시나리오에서 Edge는 서버
  • Edge에서 백엔드로의 요청입니다. 이 시나리오에서 Edge는 TLS 클라이언트 역할을 합니다.

SNI에 관한 자세한 내용은 다음을 참고하세요.

다음에서 API 프록시 요청을 위한 SNI 지원 에지

API 프록시 요청에 대한 SNI 지원은 호스트 별칭 및 가상 호스팅합니다

가상 정보 호스트 및 호스트 별칭

Edge를 사용하면 가상 호스트가 조직의 IP 주소와 포트 또는 DNS 이름과 포트를 정의합니다. API 프록시가 노출되고, 더 나아가 앱이 API 프록시에 액세스하는 데 사용하는 URL이 포함됩니다. IP 주소/DNS 이름은 Edge Router에 해당하며 포트 번호는 라우터.

가상 호스트를 만들 때 가상 호스트의 호스트 별칭도 지정합니다. 일반적으로 가상 호스트의 DNS 이름입니다. 이 API 프록시를 결정하는 과정에서 요청을 처리하는 경우 라우터는 수신 요청의 Host 헤더를 모든 가상 호스트에서 정의한 사용 가능한 호스트 별칭의 목록입니다.

가상 호스트의 호스트 별칭과 포트 번호 조합은 모든 가상 호스트에서 고유해야 합니다. 가상 호스트로 지정할 수 있습니다 즉, 여러 가상 호스트가 동일한 포트 번호로 구성해야 합니다.

가상 호스트는 API 프록시가 HTTP 프로토콜을 사용하여 액세스되는지 여부도 정의합니다. TLS를 사용하여 암호화된 HTTPS 프로토콜로 전송합니다. HTTPS를 사용하도록 가상 호스트를 구성할 때 가상 호스트를 가상 호스트에서 사용하는 인증서와 비공개 키가 포함된 키 저장소와 가상 호스트로 라우팅합니다

가상 호스트에 대한 자세한 내용은 다음을 참조하세요.

SNI 작동 방식 호스트 별칭

SNI를 사용하면 동일한 포트에 각각 다른 포트로 구성된 여러 개의 가상 호스트를 TLS 인증서 및 키. 그런 다음 Edge는 가상 호스트와 TLS에서 사용하는 인증서/키 쌍을 결정합니다. server_name 기준 확장자를 포함할 수도 있습니다.

Edge 라우터는 TLS 핸드셰이크에서 server_name 확장 프로그램을 읽습니다. 요청한 다음 이를 사용하여 모든 가상 서버에서 호스트 별칭을 호스팅합니다 라우터가 호스트 별칭과 일치하는 것을 감지하면 이 라우터는 호스트 별칭과 연결된 가상 호스트입니다. 일치하는 항목이 없으면 TLS 핸드셰이크가 실패합니다.

TLS 핸드셰이크가 실패하는 대신, 기본 인증서/키 쌍을 다음과 같이 정의할 수 있습니다. 다음 섹션에서 설명합니다.

Edge에서 클라우드의 기본 인증서/키 쌍 정의

Apigee는 HTTPS를 지원하기 위해 TLS 인증서와 비공개 키를 제공합니다. 많은 고객이 배포할 때 자체 인증서와 비공개 키를 사용하고 싶다면, 자체 인증서와 비공개 키를 인증서를 사용할 수 있습니다

클라우드용 Edge에서 라우터가 SNI 헤더와 호스트 별칭과 일치할 수 없거나 클라이언트가 SNI를 지원하지 않는 경우 라우터는 Apigee에서 제공한 기본 인증서를 사용합니다. 즉, *.apigee.net입니다.

Edge에서 프라이빗 클라우드의 기본 인증서/키 쌍 정의

프라이빗 클라우드용 Edge에서 server_name 확장 프로그램과 호스트 별칭 간에 일치하는 항목이 없는 경우 SNI를 지원하지 않는 경우에는 요청하는 클라이언트가 SNI를 지원하지 않는 경우 포트의 기본 가상 호스트에서 인증서/키를 사용할 라우터입니다. 기본 가상 호스트는 가상 호스트 이름의 조합으로 정의됨 양식:

orgName_envName_vhName

라우터는 인증서/키를 orgName_envName_vhName 알파벳순으로 먼저 옵니다. 예를 들어 요청이 포트 443으로 수신되고 prod 환경의 example 조직에 정의된 2개의 가상 호스트:

  • 가상 호스트 이름 = default
  • 가상 호스트 이름 = test

이 예시에서 라우터는 default라는 가상 호스트의 인증서/키를 사용합니다. example_prod_default이 알파벳순으로 example_prod_test보다 먼저 오기 때문입니다.

기본 가상 호스트를 사용 설정하려면 다음 안내를 따르세요.

  1. 첫 번째 라우터 노드에서 /opt/apigee/customer/application/router.properties을 수정합니다. 해당 파일이 없으면 새로 만듭니다.
  2. 다음 속성을 파일에 추가하여 기본 가상 호스트를 정의할 수 있습니다.
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  3. 라우터를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  4. 나머지 모든 라우터에서 이 단계를 반복합니다.

기본 가상 호스트의 인증서/키를 사용하는 대신 기본 인증서/키를 입력합니다. 다음 절차를 사용하여 명시적 기본값을 정의합니다. 인증서/키 쌍:

  1. 첫 번째 라우터 노드에서 인증서와 비공개 키를 라우터 노드의 위치로 복사합니다. 액세스 가능한 인스턴스 수를 확인할 수 있습니다 예를 들면 /opt/apigee/customer/application입니다.
  2. 파일의 소유권을 'Apigee. 사용자:
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. /opt/apigee/customer/application/router.properties를 수정합니다. 해당 파일이 없으면 새로 만듭니다.
  4. 기본 인증서/키를 지정할 수 있도록 파일에 다음 속성을 추가합니다.
    conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  5. router.properties에서 다음 속성을 설정하여 위치를 지정합니다. 다음과 같습니다.
    conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem
    conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
  6. 라우터를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. 나머지 모든 라우터에서 이 단계를 반복합니다.

Edge에서 백엔드

Edge는 메시지 프로세서에서 SNI를 사용하여 Apigee Edge의 엔드포인트를 Cloud 및 프라이빗 클라우드 배포용입니다. 기본적으로 SNI는 에지 메시지 프로세서에서 사용 설정됩니다. 프라이빗 클라우드에서 사용 중지되어야 합니다.

사용 프라이빗 클라우드의 에지 백엔드에 대한 SNI

프라이빗 클라우드용 에지의 경우 기존 대상 백엔드와 하위 호환성을 유지하려면 Apigee가 기본적으로 SNI를 사용 중지했습니다. 대상 백엔드가 SNI를 지원하도록 구성된 경우 아래 설명에 따라 사용 중인 Edge 버전에 이 기능을 사용 설정하세요.

다른 Edge별 구성은 필요하지 않습니다. 대상 환경이 SNI, Edge에서 지원합니다. Edge는 요청 URL에서 호스트 이름을 자동으로 추출하여 TLS 핸드셰이크 요청에 전달합니다.

Edge 버전 4.15.07.0x에 대해 Edge와 백엔드 간에 SNI 사용 설정

SNI를 사용 설정하려면 다음 절차를 따르세요.

  1. 첫 번째 메시지 프로세서 노드에서 파일을 엽니다. 편집기의 /opt/apigee4/conf/apigee/message-processor/system.properties
  2. system.properties에서 다음 속성을 true로 설정합니다.
    jsse.enableSNIExtension=true
  3. 메시지 프로세서를 다시 시작합니다.
    /opt/apigee4/bin/apigee-service message-processor restart
  4. 나머지 모든 메시지 프로세서에서 이 단계를 반복합니다.

Edge 버전 4.16.01 이상에서 Edge와 백엔드 간에 SNI 사용 설정

SNI를 사용 설정하려면 다음 절차를 따르세요.

  1. 첫 번째 메시지 프로세서 노드에서 /opt/apigee/customer/application/message-processor.properties을 수정합니다. 해당 파일이 없으면 새로 만듭니다.
  2. 파일에 다음 속성을 추가합니다.
    conf_system_jsse.enableSNIExtension=true
  3. 메시지 프로세서를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. 나머지 모든 메시지 프로세서에서 이 단계를 반복합니다.