API 프록시에서 TLS 연결 정보에 액세스

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

Edge를 사용하면 단방향 및 양방향 TLS를 지원하는 가상 호스트를 만들 수 있습니다. 단방향 TLS를 사용하면 클라이언트가 에지 라우터에 배포된 가상 호스트에 세션 요청을 보내는 경우 가상 호스트의 공개 키가 포함된 인증서로 응답합니다. 서명된 인증서의 경우 인증 기관 (CA)에 인증서를 인증하도록 요청할 수 있습니다.

양방향 TLS에서는 클라이언트와 Edge 모두 요청의 일부로 검증된 인증서를 전달합니다.

  • 에지 라우터는 자체 인증을 위해 TLS 클라이언트에 인증서를 제공합니다. 클라이언트 인증서를 서버에 보내기 전에 서버의 ID를 확인합니다.
  • TLS 클라이언트는 자체적으로 인증을 위해 인증서를 Edge에 제공합니다.

자세한 내용은 가상 호스트 정보를 참조하세요.

TLS 연결 정보 캡처

TLS를 지원하는 가상 호스트를 통해 API 프록시에 요청하는 동안 Edge는 TLS 연결에 대한 정보를 확인하세요. 그러면 API 프록시는 추가 분석 및 검증을 수행할 수 있습니다.

Edge에서 캡처한 TLS 정보 유형은 가상 호스트에서 지원되는지 여부에 따라 다릅니다. 단방향 또는 양방향 TLS입니다 예를 들어 단방향 TLS의 경우 Edge는 TLS 연결에 사용되는 TLS 암호화 또는 TLS 프로토콜입니다.

양방향 TLS의 경우 Edge는 단방향 TLS에서 캡처한 것과 동일한 정보를 모두 캡처할 수 있습니다. 클라이언트의 인증서에 대한 정보를 캡처할 수도 있습니다 예를 들어 Edge는 SHA1 디지털 지문을 캡처할 수 있습니다. 클라이언트 인증서와 클라이언트 인증서를 PEM 형식으로 입력합니다.

둘 모두에 대한 정보 캡처 단방향 및 양방향 TLS

다음 표에는 캡처된 TLS 연결 정보가 포함된 흐름 변수가 나와 있습니다. Edge로 생성되며 API 프록시에서 액세스할 수 있습니다. 이 정보는 단방향 양방향 TLS의 경우 <ConnectionProperties>를 true로 설정하여 가상 호스트 정의:

흐름 변수 설명
tls.cipher TLS 연결에 사용되는 암호화입니다.
tls.protocol TLS 연결에 사용되는 프로토콜입니다.
tls.server.name 요청된 SNI 서버 이름입니다.
tls.session.id

세션 식별자입니다.

이 흐름 변수는 <ConnectionProperties> 또는 또는 <ClientProperties> 또는 true로 설정합니다.

양방향 TLS 중에 추가 TLS 정보 캡처

다음 표에는 Edge에서 캡처한 클라이언트 인증서 세부정보가 포함된 흐름 변수가 나와 있습니다. 전송됩니다 이 정보는 다음을 설정하여 양방향 TLS에 대해 캡처됩니다. 가상 호스트 정의에서 <ClientProperties>를 true로 설정합니다.

흐름 변수 설명
tls.client.s.dn 클라이언트 인증서의 주제 고유 이름(DN)입니다.
tls.client.i.dn 클라이언트 인증서의 발급기관 고유 이름(DN)입니다.
tls.client.raw.cert PEM 형식의 클라이언트 인증서입니다.
tls.client.cert.serial 클라이언트 인증서의 일련번호입니다.
tls.client.cert.fingerprint 클라이언트 인증서의 SHA1 지문입니다.
tls.session.id

세션 식별자입니다.

이 흐름 변수는 <ConnectionProperties> 또는 <ClientProperties>를 true로 설정합니다.

TLS 정보를 캡처하도록 가상 호스트 구성

TLS 정보를 캡처하도록 가상 호스트를 구성하려면 다음 속성을 설정합니다. <PropagateTLSInformation> 미만 true

  • <ConnectionProperties>: TLS 연결 정보 캡처 사용 설정 단방향 TLS와 양방향 TLS입니다 기본값은 false입니다.
  • <ClientProperties>: 추가 정보 캡처 사용 설정 두 가지 옵션을 제공합니다 기본값은 false입니다.

예를 들어, 다음 가상 호스트 정의는 양방향 TLS를 사용하고 두 가지 유형의 TLS 정보를 모두 제공합니다

<VirtualHost name="secure">
    ....
    <SSLInfo>
        <Enabled>true</Enabled>
        # Enable two-way TLS.
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>ks-alias</KeyAlias>
        <KeyStore>ref://ks-ref</KeyStore>
        <TrustStore>ref://ts-ref</TrustStore>
    </SSLInfo>
    <PropagateTLSInformation>
        <ConnectionProperties>true</ConnectionProperties>
        <ClientProperties>true</ClientProperties>
    </PropagateTLSInformation>
</VirtualHost>

JSON 본문을 전달하는 경우 다음과 같이 속성을 설정합니다.

  "propagateTLSInformation" : {
    "connectionProperties" : true,
    "clientProperties" : true
  }

헤더 크기 제한 설정

가상 호스트에서 TLS 정보 캡처를 사용 설정하면 Edge에서 해당 정보를 전달합니다. HTTP 헤더 사용. 따라서 헤더 크기 제한이 적절하게 설정되어 있는지 확인해야 합니다. Cloud에 Edge를 사용하는지 아니면 프라이빗 클라우드에 Edge를 사용하는지에 따라 다음 명령어를 실행합니다.

  • 클라우드의 에지: Apigee가 헤더 크기를 적절하게 설정합니다.
  • Private Cloud의 에지: 기능을 사용할 수 없습니다.

API 프록시에서 흐름 변수에 액세스

API 프록시 내에서 TLS 흐름 변수에 액세스하여 검사할 수 있습니다. 예를 들어 AssignMessage 메서드를 사용하여 정책을 사용하면 JavaScript 정책을 사용하여 JavaScript에서 파일에 액세스할 수 있습니다.

프록시 또는 대상 흐름의 <Condition> 요소에서 흐름 변수를 참조할 수도 있습니다. 또는 <Step> 또는 <RouteRule>에서 찾을 수 있습니다. 예를 들어 클라이언트의 SN을 기반으로 다른 대상에 대한 요청을 보냅니다.

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