에지 메시지 프로세서와 백엔드 서버 간에 SNI 구성

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

SNI (서버 이름 표시)를 사용하면 백엔드 서버에서 동일한 TLS 인증서를 사용할 필요 없이 동일한 IP 주소 및 포트에서 여러 HTTPS 백엔드 서버를 제공할 수 있습니다. 이는 TLS 프로토콜의 확장 프로그램입니다. 클라이언트에서 SNI가 사용 설정되면 클라이언트는 초기 TLS 핸드셰이크의 일부로 백엔드 서버의 호스트 이름을 전달합니다. 이렇게 하면 TLS 서버에서 클라이언트의 요청을 검증하는 데 사용해야 하는 TLS 인증서를 결정할 수 있습니다.

기본적으로 SNI는 기존 백엔드 서버와의 하위 호환성을 보장하기 위해 프라이빗 클라우드용 Edge의 메시지 프로세서 구성요소에서 사용 중지됩니다. 백엔드 서버가 SNI를 지원하도록 구성된 경우 메시지 프로세서 구성요소에서 SNI를 사용 설정해야 합니다. 그렇지 않으면 Apigee Edge를 통과하는 API 요청이 TLS 핸드셰이크 실패와 함께 실패합니다.

이 문서에서는 다음 작업을 실행하는 방법을 설명합니다.

시작하기 전에

SNI 지원 서버 식별

이 섹션에서는 백엔드 서버가 SNI를 사용 설정했는지 확인하는 방법을 설명합니다.

  1. openssl 명령어를 실행하고 아래와 같이 서버 이름을 전달하지 않고 관련 서버 호스트 이름(에지 라우터 또는 백엔드 서버)에 연결을 시도합니다.
    openssl s_client -connect hostname:port
    
  2. 인증서를 가져올 수 있으며 다음과 같이 openssl 명령어에서 핸드셰이크 실패가 발생하는 경우도 있습니다.
    CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
    
  3. openssl 명령어를 실행하고 아래와 같이 서버 이름을 전달하여 관련 서버 호스트 이름 (에지 라우터 또는 백엔드 서버)에 연결을 시도합니다.
    openssl s_client -connect hostname:port -servername hostname
    
  4. 1단계에서 핸드셰이크 실패가 발생하거나 1단계와 2단계에서 다른 인증서를 받으면 지정된 서버에 SNI가 사용 설정되었음을 나타냅니다.
  5. 2개 이상의 백엔드 서버에 대해 이를 확인하려면 각 백엔드 서버에 위 단계를 반복해야 합니다.

SNI가 사용 설정된 백엔드 서버가 하나 이상 있는 경우 아래 설명에 따라 메시지 프로세서 구성요소에 SNI를 사용 설정해야 합니다. 그렇지 않으면 Apigee Edge를 통과하는 API 요청이 TLS 핸드셰이크 실패와 함께 실패합니다.

에지 메시지 프로세서와 백엔드 서버 간에 SNI 사용 설정

이 섹션에서는 에지 메시지 프로세서와 백엔드 서버 간에 SNI를 사용 설정하는 방법을 설명합니다. SNI는 메시지 프로세서 구성요소의 jsse.enableSNIExtension 속성을 통해 사용 설정할 수 있습니다. 메시지 프로세서의 속성을 구성하려면 Edge 구성 방법에 설명된 구문에 따라 토큰을 사용합니다.

메시지 프로세서에서 SNI를 사용 설정하려면 다음 단계를 따르세요.

  1. jsse.enableSNIExtension 속성의 토큰 찾기
  2. 메시지 프로세서에서 SNI 사용 설정

jsse.enableSNIExtension 속성 토큰 찾기

다음 단계에서는 jsse.enableSNIExtension 속성의 토큰을 찾는 방법을 설명합니다.

  1. 다음 명령어를 사용하여 메시지 프로세서 소스 디렉터리 /opt/apigee/edge-message-processor/source에서 jsse.enableSNIExtension 속성을 검색합니다.
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
    
  2. 이 명령어의 출력에는 다음과 같이 메시지 프로세서의 속성 jsse.enableSNIExtension에 대한 토큰이 표시됩니다.
    /opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}
    

    여기서 {T}{/T} 태그 사이의 문자열은 메시지 프로세서의 .properties 파일에 설정할 수 있는 토큰의 이름입니다.

    따라서 jsse.enableSNIExtension 속성 토큰은 다음과 같습니다.

    conf_system_jsse.enableSNIExtension
    

메시지 프로세서에서 SNI 사용 설정

다음 단계에서는 Apigee 메시지 프로세서 구성요소에 SNI를 사용 설정하는 방법을 설명합니다.

  1. 메시지 프로세서 머신에서 편집기에서 다음 파일을 엽니다. 아직 없으면 새로 만듭니다.
    /opt/apigee/customer/application/message-processor.properties
    

    예를 들어 vi를 사용하여 파일을 열려면 다음 명령어를 입력합니다.

    vi /opt/apigee/customer/application/message-processor.properties
    

  2. 다음 형식의 행을 속성 파일에 추가합니다.
    conf_system_jsse.enableSNIExtension=true
    
  3. 변경사항을 저장합니다.
  4. 아래와 같이 이 속성 파일을 apigee 사용자가 소유하고 있는지 확인합니다.
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 아래와 같이 메시지 프로세서를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 메시지 프로세서에 SNI 구성이 업데이트되었는지 확인합니다.
  7. 메시지 프로세서가 2개 이상 있으면 모든 메시지 프로세서에서 위 단계를 반복합니다.

에지 메시지 프로세서와 백엔드 서버 간의 SNI 사용 중지

일반적으로 SNI를 사용 설정한 후에는 문제가 발생하지 않습니다. 하지만 SNI를 사용 설정한 후 에지 메시지 프로세서와 백엔드 서버 간에 연결 문제가 발생하면 언제든지 다음 단계를 수행하여 SNI를 사용 중지할 수 있습니다.

메시지 프로세서 구성요소의 jsse.enableSNIExtension 속성을 다시 false로 설정하여 SNI를 사용 중지할 수 있습니다.

메시지 프로세서에서 SNI 사용 중지

다음 단계에서는 Apigee 메시지 프로세서에서 SNI를 사용 중지하는 방법을 설명합니다.

  1. 메시지 프로세서 머신에서 편집기에서 다음 파일을 엽니다. 아직 없으면 새로 만듭니다.
    /opt/apigee/customer/application/message-processor.properties
    

    예를 들어 vi를 사용하여 파일을 열려면 다음 명령어를 입력합니다.

    vi /opt/apigee/customer/application/message-processor.properties
    

  2. conf_system_jsse.enableSNIExtension=true 줄이 /opt/apigee/customer/application/message-processor.properties에 있으면 다음과 같이 수정합니다.
    conf_system_jsse.enableSNIExtension=false
    
  3. 변경사항을 저장합니다.
  4. 아래와 같이 이 속성 파일을 apigee 사용자가 소유하고 있는지 확인합니다.
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 아래와 같이 메시지 프로세서를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 메시지 프로세서에 SNI 구성이 업데이트되었는지 확인합니다.
  7. 메시지 프로세서가 2개 이상 있으면 모든 메시지 프로세서에서 위 단계를 반복합니다.

메시지 프로세서에서 SNI 구성 확인

이 섹션에서는 메시지 프로세서에서 SNI 구성이 성공적으로 업데이트되었는지 확인하는 방법을 설명합니다.

conf_system_jsse.enableSNIExtension 토큰을 사용하여 메시지 프로세서에서 SNI를 구성하더라도 실제 속성 jsse.enableSNIExtension가 새 값으로 설정되었는지 확인해야 합니다.

  1. 메시지 프로세서 시스템의 /opt/apigee/edge-message-processor/conf 디렉터리에서 jsse.enableSNIExtension 속성을 검색하여 아래와 같이 새 값으로 설정되어 있는지 확인합니다.
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
    
  2. 메시지 프로세서에서 SNI 구성이 성공적으로 업데이트되면 위 명령어를 실행하면 system.properties 파일에 새 값이 표시됩니다.

    메시지 프로세서에서 SNI를 사용 설정한 후 위 명령어를 실행하면 샘플 결과는 다음과 같습니다.

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true
    

    마찬가지로 메시지 프로세서에서 SNI를 사용 중지한 후 위 명령어를 실행하면 샘플 결과는 다음과 같습니다.

    /opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false
    

    위의 출력 예에서 jsse.enableSNIExtension 속성이 system.properties의 새 값 true 또는 false로 업데이트되었습니다. 이는 메시지 프로세서에서 SNI가 성공적으로 사용 설정 또는 중지되었음을 나타냅니다.

  3. jsse.enableSNIExtension 속성의 이전 값이 계속 표시되면 관련 섹션에 설명된 모든 단계를 수행하여 SNI를 올바르게 사용 설정 또는 중지했는지 확인합니다. 누락된 단계가 있으면 모든 단계를 다시 올바르게 반복합니다.
  4. 그래도 SNI를 사용 설정/중지할 수 없으면 Apigee Edge 지원팀에 문의하세요.