Edge에서 백엔드로 TLS 구성 (Cloud 및 Private Cloud)

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

API 프록시는 공개적으로 사용 가능한 엔드포인트를 백엔드 서비스에 매핑하는 역할을 합니다. 가상 호스트는 공개 API 프록시가 앱에 노출되는 방식을 정의합니다. 예를 들어 가상 호스트는 TLS를 사용하여 API 프록시에 액세스할 수 있는지 여부를 결정합니다. API 프록시를 구성할 때 프록시 엔드포인트 정의를 수정하여 프록시에서 사용하는 가상 호스트를 구성하세요.

TargetEndpoint는 프록시 엔드포인트와 동등한 아웃바운드입니다. TargetEndpoint는 Edge에서 백엔드 서비스로의 HTTP 클라이언트 역할을 합니다. API 프록시를 만들 때 TargetEndpoint를 0개 이상 사용하도록 구성할 수 있습니다.

자세히 알아보기:

TargetEndpoint 또는 TargetServer 구성

TargetEndpoint를 구성하려면 TargetEndpoint를 정의하는 XML 객체를 수정하세요. API 프록시에서 TargetEndpoint를 정의하는 XML 파일을 수정하여 TargetEndpoint를 수정하거나 Edge 관리 UI에서 수정할 수 있습니다.

에지 관리 UI를 사용하여 TargetEndpoint를 수정하려면 다음 안내를 따르세요.

  1. https://enterprise.apigee.com에서 에지 관리 UI에 로그인합니다.
  2. 업데이트할 API 프록시의 이름을 선택합니다.
  3. 개발 탭을 선택합니다.
  4. 대상 엔드포인트에서 기본값을 선택합니다.
  5. 코드 영역에 다음과 같이 TargetEndpoint 정의가 표시됩니다.
    <TargetEndpoint name="default">
      <Description/>
      <FaultRules/>
      <Flows/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <HTTPTargetConnection>
        <Properties/>
        <SSLInfo>
          <Enabled>true</Enabled>
          <TrustStore>ref://myTrustStoreRef</TrustStore>
        </SSLInfo>
        <URL>https://mocktarget.apigee.net</URL>
      </HTTPTargetConnection>
    </TargetEndpoint>
  6. 아래의 백엔드를 사용한 TLS 구성 정보에 설명된 대로 트러스트 저장소를 구성합니다.
  7. 원하는 대로 변경하고 프록시를 저장합니다. API 프록시가 배포된 경우 저장하면 새 설정으로 다시 배포됩니다.

TargetEndpoint 정의에 name 속성이 포함된 것을 볼 수 있습니다. TargetEndpoint를 사용하도록 API 프록시의 ProxyEndpoint 정의를 구성하려면 name 속성의 값을 사용합니다. 자세한 내용은 API 프록시 구성 참조를 확인하세요.

명시적 대상 URL이 아닌 TargetServer를 참조하도록 TargetEndpoint를 구성할 수 있습니다. TargetServer 구성은 TargetEndpoint 구성에서 구체적인 엔드포인트 URL을 분리합니다. TargetServer는 여러 백엔드 서버 인스턴스에서 부하 분산 및 장애 조치를 지원하는 데 사용됩니다.

다음은 TargetServer 정의의 예입니다.

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer> 

TargetServer는 TargetEndpoint 정의의 <HTTPTargetConnection> 요소에서 이름으로 참조됩니다. 아래와 같이 이름이 지정된 TargetServer를 하나 이상 구성할 수 있습니다.

<TargetEndpoint name="default">
  ...
  <HTTPTargetConnection>
    <LoadBalancer>
      <Server name="target1" />
      <Server name="target2" />
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
  ...
</TargetEndpoint>

자세한 내용은 백엔드 서버 간 부하 분산을 참조하세요.

백엔드를 사용한 TLS 구성 정보

백엔드에 대한 TLS 액세스를 구성하기 전에 다음 두 가지 중요한 사항을 이해해야 합니다.

  1. 기본적으로 Edge는 백엔드 인증서의 유효성을 검사하지 않습니다. 인증서를 검증하도록 Edge를 구성하려면 트러스트 저장소를 만들어야 합니다.
  2. 참조를 사용하여 Edge에서 사용하는 키 저장소 또는 트러스트 저장소를 지정합니다.

두 고려사항은 아래에 설명되어 있습니다.

인증서 검증을 사용 설정하기 위해 트러스트 저장소 정의

TargetEndpoint 또는 TargetServer를 통해 TLS 요청을 실행할 때 Edge는 기본적으로 백엔드 서버에서 수신한 TLS 인증서의 유효성을 검사하지 않습니다 . 즉 Edge에서는 다음 사항을 확인하지 않습니다.

  • 신뢰할 수 있는 CA에서 인증서에 서명했습니다.
  • 인증서가 만료되지 않았습니다.
  • 인증서는 일반 이름을 나타냅니다. 일반 이름이 있으면 Edge는 일반 이름이 URL에 지정된 호스트 이름과 일치하는지 확인하지 않습니다.

백엔드 인증서를 검증하도록 Edge를 구성하려면 다음을 수행해야 합니다.

  1. Edge에 트러스트 저장소 만들기
  2. 서버의 인증서 또는 인증서 체인을 트러스트 저장소에 업로드합니다. 서드 파티에서 서버 인증서를 서명한 경우 루트 CA 인증서를 포함한 전체 인증서 체인을 트러스트 저장소에 업로드해야 합니다. 암시적으로 신뢰할 수 있는 CA가 없습니다.
  3. TargetEndpoint 또는 TargetServer 정의에 트러스트 저장소를 추가합니다.

자세한 내용은 키 저장소 및 트러스트 저장소를 참조하세요.

예를 들면 다음과 같습니다.

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

키 저장소 또는 트러스트 저장소에 대한 참조 사용

아래 예시는 TLS를 지원하도록 TargetEndpoint 또는 TargetServer를 구성하는 방법을 보여줍니다. TLS를 구성하는 과정에서 TargetEndpoint 또는 TargetServer 정의의 일부로 truststore와 키 저장소를 지정합니다.

Apigee에서는 TargetEndpoint 또는 TargetServer 정의에서 키 저장소 및 트러스트 저장소에 대한 참조를 사용할 것을 적극 권장합니다. 참조 사용의 장점은 TLS 인증서를 업데이트할 때 다른 키 저장소 또는 트러스트 저장소를 가리키도록 참조를 업데이트하기만 하면 된다는 것입니다.

TargetEndpoint 또는 TargetServer 정의의 키 저장소 및 트러스트 저장소에 대한 참조는 가상 호스트에 대한 참조와 동일한 방식으로 작동합니다.

참조를 사용하도록 TargetEndpoint 또는 TargetServer 변환

키 저장소와 트러스트 저장소의 리터럴 이름을 사용하는 기존 TargetEndpoint 또는 TargetServer 정의가 있을 수 있습니다. 참조를 사용하도록 TargetEndpoint 또는 TargetServer 정의를 변환하려면 다음 안내를 따르세요.

  1. 참조를 사용하려면 TargetEndpoint 또는 TargetServer 정의를 업데이트합니다.
  2. 에지 메시지 프로세서를 다시 시작합니다.
    • 퍼블릭 클라우드 고객의 경우 Apigee Edge 지원팀에 문의하여 메시지 프로세서를 다시 시작하세요.
    • Private Cloud 고객의 경우 에지 메시지 프로세서를 한 번에 하나씩 다시 시작합니다.
  3. TargetEndpoint 또는 TargetServer가 올바르게 작동하는지 확인합니다.

백엔드 서버에 단방향 TLS 구성

TargetEndpoint 정의를 사용할 때는 Edge (TLS 클라이언트)에서 백엔드 서버 (TLS 서버)로의 단방향 TLS 액세스를 구성할 때 Edge에서 추가 구성이 필요하지 않습니다. TLS를 올바르게 구성하는 것은 백엔드 서버의 책임입니다.

TargetEndpoint 정의의 <URL> 요소가 HTTPS 프로토콜로 백엔드 서비스를 참조하고 TLS를 사용 설정했는지 확인하기만 하면 됩니다.

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

TargetServer를 사용하여 백엔드 서비스를 정의하는 경우 TargetServer 정의에서 TLS를 사용 설정합니다.

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
  </SSLInfo> 
</TargetServer> 

하지만 Edge에서 백엔드 인증서의 유효성을 검사하도록 하려면 백엔드 인증서 또는 인증서 체인이 포함된 트러스트 저장소를 만들어야 합니다. 그런 다음 TargetEndpoint 정의에 트러스트 저장소를 지정합니다.

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

또는 TargetServer 정의에서 다음을 실행합니다.

<TargetServer name="target1">
  <Host>mockserver.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
    <TrustStore>ref://myTrustStoreRef</TrustStore>
  </SSLInfo> 
</TargetServer>

단방향 TLS를 구성하려면 다음 안내를 따르세요.

  1. 백엔드 인증서의 유효성을 검사하려면 Edge에 트러스트 저장소를 만들고 키 저장소 및 트러스트 저장소에 설명된 대로 백엔드 인증서 또는 CA 체인을 업로드합니다. 이 예에서 트러스트 저장소를 만들어야 한다면 이름을 myTrustStore로 지정합니다.
  2. 트러스트 저장소를 만든 경우 다음 POST API 호출을 사용하여 위에서 만든 트러스트 저장소에 대한 myTrustStoreRef라는 참조를 만듭니다.

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>' -u email:password
    
  3. 에지 관리 UI를 사용하여 API 프록시의 TargetEndpoint 정의를 업데이트합니다. 또는 XML로 API 프록시를 정의하는 경우 프록시의 XML 파일을 수정합니다.
    1. https://enterprise.apigee.com에서 에지 관리 UI에 로그인합니다.
    2. 에지 관리 UI 메뉴에서 API를 선택합니다.
    3. 업데이트할 API 프록시의 이름을 선택합니다.
    4. 개발 탭을 선택합니다.
    5. 대상 엔드포인트에서 기본값을 선택합니다.
    6. 코드 영역에서 <HTTPTargetConnection> 요소를 수정하여 <SSLInfo> 요소를 추가합니다. 올바른 트러스트 저장소 참조를 지정하고 <Enabled>을 true로 설정해야 합니다.
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. API 프록시를 저장합니다. API 프록시가 배포된 경우 저장하면 새로운 설정으로 다시 배포됩니다.

백엔드 서버에 대한 양방향 TLS 구성

Edge (TLS 클라이언트)와 백엔드 서버 (TLS 서버) 간에 양방향 TLS를 지원하려면 다음 안내를 따르세요.

  • Edge에서 키 저장소를 만들고 Edge 인증서와 비공개 키를 업로드합니다.
  • 백엔드 인증서의 유효성을 검사하려면 백엔드 서버에서 받은 인증서 및 CA 체인이 포함된 트러스트 저장소를 Edge에 만듭니다.
  • 백엔드 서버를 참조하는 모든 API 프록시의 TargetEndpoint를 업데이트하여 TLS 액세스를 구성합니다.

키 별칭을 사용하여 키 저장소 인증서 지정

같은 키 저장소에서 각각 고유한 별칭을 갖는 여러 인증서를 정의할 수 있습니다. 기본적으로 Edge는 키 저장소에 정의된 첫 번째 인증서를 사용합니다.

필요한 경우 <KeyAlias> 속성에 지정된 인증서를 사용하도록 Edge를 구성할 수 있습니다. 이렇게 하면 여러 인증서에 단일 키 저장소를 정의한 다음 TargetServer 정의에서 사용할 키 저장소를 선택할 수 있습니다. Edge가 별칭이 <KeyAlias>와 일치하는 인증서를 찾을 수 없으면 키 저장소의 첫 번째 인증서를 선택하는 기본 작업을 사용합니다.

퍼블릭 클라우드용 Edge 사용자는 이 기능을 사용 설정하려면 Apigee Edge 지원팀에 문의해야 합니다.

양방향 TLS 구성

양방향 TLS를 구성하려면 다음 안내를 따르세요.

  1. Edge에서 키 저장소를 만들고 키 저장소 및 Truststores에 설명된 절차에 따라 인증서와 비공개 키를 업로드합니다. 이 예에서는 인증서와 비공개 키에 myKey라는 별칭 이름을 사용하는 myTestKeystore라는 키 저장소를 만듭니다.
  2. 다음 POST API 호출을 사용하여 위에서 만든 키 저장소에 대한 myKeyStoreRef라는 참조를 만듭니다.

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myKeyStoreRef">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    

    참조는 키 저장소의 이름과 참조 유형을 KeyStore로 지정합니다.

    참조를 보려면 다음 GET API 호출을 사용하세요.

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef /
    -u email:password
    
  3. 백엔드 인증서의 유효성을 검사하려면 Edge에 트러스트 저장소를 만들고 키 저장소 및 트러스트 저장소에 설명된 대로 인증서 및 CA 체인을 업로드합니다. 이 예에서는 트러스트 저장소 이름을 myTrustStore로 만들어야 합니다.
  4. 트러스트 저장소를 만든 경우 다음 POST API 호출을 사용하여 위에서 만든 트러스트 저장소에 대한 myTrustStoreRef라는 참조를 만듭니다.

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    
  5. 에지 관리 UI를 사용하여 API 프록시의 TargetEndpoint 정의를 업데이트합니다. 또는 XML로 API 프록시를 정의하는 경우 프록시의 XML 파일을 수정합니다.
    1. https://enterprise.apigee.com에서 에지 관리 UI에 로그인합니다.
    2. 에지 관리 UI 메뉴에서 API를 선택합니다.
    3. 업데이트할 API 프록시의 이름을 선택합니다.
    4. 개발 탭을 선택합니다.
    5. 대상 엔드포인트에서 기본값을 선택합니다.
    6. 코드 영역에서 <HTTPTargetConnection> 요소를 수정하여 <SSLInfo> 요소를 추가합니다. 올바른 키 저장소와 키 별칭을 지정하고 <Enabled><ClientAuthEnabled> 요소를 모두 true로 설정해야 합니다.
      <TargetEndpoint name="default">
        ...
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>true</ClientAuthEnabled>
            <KeyStore>ref://myKeyStoreRef</KeyStore>
            <KeyAlias>myKey</KeyAlias>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        ...
      </TargetEndpoint>
    7. API 프록시를 저장합니다. API 프록시가 배포된 경우 저장하면 새로운 설정으로 다시 배포됩니다.

변수를 사용하여 TargetEndpoint <SSLInfo> 값을 제공하는 방법 등 <TargetEndpoint>에서 사용 가능한 옵션에 대한 자세한 내용은 API 프록시 구성 참조를 확인하세요.

SNI 사용 설정

Edge는 메시지 프로세서의 서버 이름 표시 (SNI)를 사용하여 클라우드 및 프라이빗 클라우드 배포를 위한 Apigee Edge의 엔드포인트를 대상으로 지정합니다.

프라이빗 클라우드용 에지의 경우 기존 대상 백엔드와 하위 호환성을 유지하기 위해 Apigee가 SNI를 기본적으로 사용 중지했습니다. 대상 백엔드가 SNI를 지원하도록 구성된 경우 이 기능을 사용 설정할 수 있습니다. 자세한 내용은 Edge에 SNI 사용을 참조하세요.