TLS/SSL 정보

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

보안 소켓 레이어 (SSL)의 이전 버전이었던 전송 계층 보안 (TLS)은 브라우저나 앱과 같은 웹 서버와 웹 클라이언트 간에 암호화된 링크를 설정하기 위한 표준 보안 기술입니다. 암호화된 링크는 서버와 클라이언트 간에 전달되는 모든 데이터를 비공개로 유지합니다. TLS를 사용하기 위해 클라이언트는 암호화되지 않은 HTTP 프로토콜 대신 암호화된 HTTPS 프로토콜을 사용하여 서버에 보안 요청을 보냅니다.

Edge는 클라우드와 온프레미스 배포 모두에서 단방향 TLS와 양방향 TLS를 지원합니다. 지원되는 TLS 버전은 지원되는 소프트웨어 및 지원되는 버전을 참조하세요. 단방향 TLS를 사용하면 TLS 클라이언트에서 TLS 서버의 ID를 확인할 수 있습니다. 예를 들어 Android 휴대전화 (클라이언트)에서 실행되는 앱은 Edge API (서버)의 ID를 확인할 수 있습니다.

Apigee는 양방향(클라이언트) TLS를 사용하는 보다 강력한 인증 형식도 지원합니다. 일반적으로 양방향 TLS를 구현하여 엔드 투 엔드 보안을 강화하고 클라이언트 스푸핑 또는 중간자 공격과 같은 클라이언트 공격으로부터 데이터를 보호합니다. 양방향 TLS에서는 클라이언트가 서버의 ID를 확인한 후 서버에서 클라이언트의 ID를 확인합니다.

TLS 용어

TLS를 구성하기 전에 다음과 같은 중요한 용어와 개념을 잘 알고 있어야 합니다.

용어

정의

캐나다

인증 기관 Symantec 또는 VeriSign과 같은 신뢰할 수 있는 기관으로 인증서를 발급하고 인증서의 진위 여부를 검증하는 데 사용됩니다. 자체 서명 인증서라고 하는 한 가지 인증서 유형에는 CA가 필요하지 않습니다.

인증서 체인

CA의 루트 비공개 키로 서명된 인증서가 없을 때가 많습니다. 대신 체인을 구성하는 하나 이상의 중간 인증서와 함께 인증서가 있습니다. 체인의 마지막 중간 인증서는 일반적으로 CA의 루트 비공개 키에 의해 서명됩니다.

CSR

인증서 서명 요청 CSR은 비공개 키를 기반으로 TLS 서버에서 생성되는 파일입니다. CSR에는 공개 키와 기타 정보(예: 조직 이름, 위치, 도메인 이름)가 포함됩니다. CA는 CSR에 서명하여 TLS 인증서를 만듭니다. 일반적으로 만료된 인증서가 있고 이를 갱신하려는 경우 CSR을 생성합니다.

DER

고유한 인코딩 규칙 DER 형식은 ASCII PEM 형식이 아닌 인증서의 바이너리 형식입니다. 파일 확장자가 .der인 경우도 있지만 파일 확장자가 .cer인 경우가 많습니다. DER .cer 파일과 PEM .cer 파일을 구분하는 유일한 방법은 파일을 텍스트 편집기에서 열고 BEGINEND 문을 찾는 것입니다. 모든 유형의 인증서와 비공개 키는 DER 형식으로 인코딩할 수 있습니다. DER는 일반적으로 Java 플랫폼에서 사용됩니다.

키 별칭

키 별칭은 키 저장소의 키 저장소 항목 (TLS 인증서 및 해당 비공개 키)을 고유하게 식별합니다.

Apigee Edge에서 UI 또는 API를 사용하여 키 저장소에 인증서 또는 키를 업로드할 때 KeyAliasalias라고 합니다.

키 저장소

키 저장소는 하나 이상의 TLS 인증서와 클라이언트와 서버 간의 TLS 핸드셰이크 중에 항목을 식별하는 데 사용되는 해당 비공개 키가 포함된 저장소입니다.

노스바운드 연결에서 라우터는 서버 역할을 하며 인증서는 Apigee Edge의 키 저장소에 저장됩니다.

southbound 연결에서는 메시지 프로세서가 클라이언트 역할을 하고, 백엔드 서버가 서버 역할을 합니다. 클라이언트 인증서와 비공개 키는 Apigee Edge의 키 저장소에 저장됩니다.

P7B

PKCS #7 또는 P7B 형식은 일반적으로 Base64 ASCII 형식으로 저장되며 파일 확장자가 .p7b 또는 .p7c입니다. P7B 인증서에는 -----BEGIN PKCS7----------END PKCS7----- 문이 포함됩니다. P7B 파일에는 비공개 키가 아닌 인증서와 체인 인증서만 포함됩니다.

PEM

PEM (Privacy Enhanced Mail) 형식은 바이너리 DER (Distinguished Encoding Rules) 형식의 Base64 인코딩인 텍스트 기반 ASCII 형식입니다. PEM 인증서는 모든 텍스트 편집기에서 열 수 있으며 실제 인증서 콘텐츠는 -----BEGIN CERTIFICATE----- 문과 -----END CERTIFICATE----- 문으로 구분됩니다.

인증서, 인증서 체인 또는 비공개 키 저장을 위한 X.509 형식을 준수합니다. 인증서 또는 비공개 키가 PEM 파일로 정의되지 않은 경우 OpenSSL과 같은 유틸리티를 사용하여 PEM 파일로 변환할 수 있습니다.

PKCS #12/PFX PKCS #12 또는 PFX 형식은 서버 인증서, 중간 인증서, 비공개 키를 암호화 가능한 파일 하나에 저장하기 위한 바이너리 형식입니다. PFX 파일은 일반적으로 .pfx 및 .p12와 같은 확장자를 사용합니다. PFX 파일은 일반적으로 Windows 머신에서 인증서와 비공개 키를 가져오고 내보내는 데 사용됩니다.

비공개 키

TLS 서버에서 데이터를 복호화하는 데 사용됩니다. TLS 서버에만 비공개 키가 있으며 이 키는 TLS 클라이언트와 공유되지 않습니다.

공개 키

TLS 클라이언트에서 TLS 서버로 전송되는 데이터를 암호화하는 데 사용됩니다. 공개 키는 인증서에 포함됩니다. 모든 TLS 클라이언트에는 서버의 공개 키 사본이 있습니다.

참조 참조는 키 저장소에 대한 간접 참조 수준을 제공합니다. 따라서 동일한 참조와 키 별칭이 유지되는 한 키 저장소 변경 시 가상 호스트 업데이트가 필요하지 않습니다. 이를 통해 변경사항을 직접 처리하고 Apigee 지원팀의 종속 항목을 줄일 수 있습니다.

자체 서명 인증서

신뢰할 수 있는 CA에서 서명하지 않은 인증서 발급기관과 주체가 동일하며, 포함된 공개 키와 일치하는 비공개 키로 서명되어 있습니다.

SNI

서버 이름 표시 이러한 대상에 동일한 인증서를 사용하지 않아도 해당 대상이 동일한 IP 주소 및 포트에서 여러 HTTPS 대상이 제공될 수 있습니다.

TLS 인증서

TLS 트랜잭션에서 항목을 식별하는 디지털 파일입니다. TLS 구성에 따라 인증서 또는 cert를 사용하여 TLS 서버 및 TLS 클라이언트를 식별할 수 있습니다.

트러스트 저장소

클라이언트에 제공되는 TLS 서버의 인증서를 검증하는 데 사용되는 TLS 클라이언트의 신뢰할 수 있는 인증서가 포함됩니다. 이러한 인증서는 일반적으로 자체 서명된 인증서 또는 신뢰할 수 있는 CA에서 서명하지 않은 인증서입니다.

노스바운드 연결에서 클라이언트 애플리케이션의 인증서는 Apigee Edge의 트러스트 저장소에 저장됩니다. 클라이언트와 Apigee 사이에 양방향 TLS를 구성한 경우에만 필요합니다.

southbound 연결에서 백엔드 서버의 인증서는 Apigee Edge의 트러스트 저장소에 저장됩니다. Apigee Edge와 백엔드 서버 간의 단방향 또는 양방향 TLS 통신으로 Apigee Edge의 백엔드 인증서를 확인하려면 이 속성이 필요합니다.

Apigee Edge에는 별도의 트러스트 저장소 객체가 없습니다. 따라서 트러스트 저장소는 키 저장소 객체로 생성되지만 사용되는 곳(예: 가상 호스트, 대상 엔드포인트, 대상 서버 등)마다 트러스트 저장소로 참조됩니다.

가상 호스트

가상 호스트는 클라이언트 애플리케이션의 Apigee API 엔드포인트를 나타냅니다. 단일 서버(또는 서버 풀)에서 여러 도메인 이름(각 이름을 별도로 처리)을 호스팅하는 데 도움이 되는 항목입니다. 이렇게 하면 제공된 모든 서비스가 동일한 호스트 이름을 사용하도록 요구하지 않고도 한 서버가 메모리 및 프로세서 주기와 같은 리소스를 공유할 수 있습니다.

가상 호스트는 HTTP 또는 HTTPS (SSL 사용) 트래픽을 제공할 수 있습니다.

SSL 지원 가상 호스트는 단방향 또는 양방향 TLS 모드로 구성할 수 있습니다. 이 구성은 다음과 같이 구성됩니다.

  • 하나 이상의 hostalias (API 엔드포인트 DNS 이름)입니다.
  • 포트
  • 키 저장소
  • 키 저장소의 서버 인증서 중 하나를 고유하게 식별하는 키 별칭입니다.
  • 필요한 경우 트러스트 저장소 (클라이언트 인증이 사용 설정된 양방향 TLS)

단방향 TLS/SSL

다음 그림은 TLS 클라이언트와 TLS 서버 간의 단방향 인증을 위한 TLS/SSL 핸드셰이크를 보여줍니다.

단방향 TLS 구성에서 핸드셰이크는 다음과 같습니다.

  • 클라이언트가 서버에 세션 요청을 보냅니다.
  • 서버는 공개 키가 포함된 인증서로 응답합니다. 이 인증서는 서버의 비공개 키도 포함된 서버의 키 저장소에서 가져옵니다. 비공개 키는 클라이언트로 전송되지 않습니다.
  • 서명된 인증서의 경우 클라이언트가 인증 기관 (CA)에 인증서를 인증하도록 요청합니다.
  • 클라이언트와 서버는 키 확인을 위해 몇 개의 추가 메시지를 교환합니다.
  • 클라이언트가 서버와 TLS 데이터 전송을 시작합니다.

다음 그림은 클라이언트에서 선택적 트러스트 저장소를 사용하는 TLS/SSL 핸드셰이크를 보여줍니다.

TLS 서버가 자체 서명된 인증서 또는 신뢰할 수 있는 CA에서 서명하지 않은 인증서를 사용하는 경우 클라이언트에 트러스트 저장소를 만듭니다. 클라이언트는 트러스트 저장소를 서버 인증서와 클라이언트가 신뢰하는 공개 키로 채웁니다. 클라이언트가 인증서를 수신하면 수신 인증서는 트러스트 저장소의 인증서와 비교하여 검증됩니다.

단방향 TLS에서 Edge는 다음과 같이 서버 또는 클라이언트일 수 있습니다.

  • TLS 서버로서의 에지

    Edge는 TLS 엔드포인트를 호스팅하는 서버이며, 여기서 TLS 엔드포인트는 가상 호스트에 배포된 API 프록시에 해당합니다. 클라이언트가 API 프록시에 액세스하려는 앱입니다. 이 시나리오에서 Edge에는 인증서와 비공개 키가 포함된 키 저장소가 있습니다.

  • TLS 클라이언트로서의 Edge

    Edge는 백엔드 서비스에 액세스하는 클라이언트 역할을 합니다. 이 경우 백엔드 서비스는 TLS 엔드포인트를 호스팅하는 서버에 해당합니다. 따라서 백엔드 서버에는 인증서와 비공개 키가 포함된 키 저장소가 있습니다.

양방향 TLS

다음 그림은 클라이언트와 서버 간 양방향 TLS 인증을 위한 TLS/SSL 핸드셰이크를 보여줍니다.

양방향 TLS에서 핸드셰이크는 다음과 같습니다.

  • 클라이언트와 서버에는 모두 자체 키 저장소가 있습니다. 클라이언트의 키 저장소에는 인증서와 비공개 키가, 서버의 키 저장소에는 인증서와 비공개 키가 포함됩니다.
  • TLS 서버는 TLS 클라이언트에 인증서를 제공하여 자신을 인증합니다. 그러면 클라이언트는 인증서를 서버로 전송하기 전에 서버의 ID를 확인합니다.
  • TLS 클라이언트는 TLS 서버에 인증서를 제공하여 서버에 스스로를 인증합니다.

다음 그림은 선택적 트러스트 저장소를 사용하는 TLS 핸드셰이크를 보여줍니다.

이 시나리오에서 핸드셰이크는 다음과 같습니다.

  • TLS 서버가 자체 서명 인증서 또는 신뢰할 수 있는 CA에서 서명하지 않은 인증서를 사용하는 경우 클라이언트에 트러스트 저장소를 만듭니다. 클라이언트의 트러스트 저장소에 서버의 인증서 사본이 있습니다. TLS 핸드셰이크 중에 클라이언트는 트러스트 저장소의 인증서를 서버에서 전송된 인증서와 비교하여 서버의 ID를 확인합니다.
  • TLS 클라이언트가 자체 서명된 인증서 또는 신뢰할 수 있는 CA에서 서명하지 않은 인증서를 사용하는 경우에는 서버에 트러스트 저장소를 만듭니다.서버클라이언트 인증서의 사본이 트러스트 저장소에 있습니다. TLS 핸드셰이크 중에 서버는 트러스트 저장소의 인증서를 클라이언트에서 전송된 인증서와 비교하여 클라이언트의 ID를 확인합니다.

클라이언트나 서버 또는 둘 다 트러스트 저장소를 사용할 수 있습니다.

양방향 TLS에서 Edge는 다음과 같이 서버 또는 클라이언트일 수 있습니다.

  • Edge를 서버로

    Edge는 TLS 엔드포인트를 호스팅하는 서버이며, 여기서 TLS 엔드포인트는 API 프록시에 해당합니다. 클라이언트가 API 프록시에 액세스하려는 앱입니다. 이 시나리오에서 Edge에는 인증서와 비공개 키가 포함된 키 저장소가 있으며 클라이언트의 인증서 및 CA 체인이 포함된 트러스트 저장소가 필요합니다.

  • Edge를 클라이언트로

    Edge는 백엔드 서비스에 액세스하는 클라이언트 역할을 합니다. 이 경우 백엔드 서비스는 TLS 엔드포인트를 호스팅하는 서버에 해당합니다. 따라서 백엔드 서버에는 인증서와 비공개 키가 포함된 키 저장소가 있습니다.

    또한 Edge는 백엔드 서비스에 대해 자체적으로 유효성을 검사하는 데 필요한 인증서가 포함된 키 저장소를 정의해야 하고, 서버에서 자체 서명된 인증서 또는 신뢰할 수 있는 CA에서 서명하지 않은 인증서를 사용하는 경우 백엔드 서버의 인증서를 포함하는 트러스트 저장소도 정의해야 합니다.

Edge는 어떤 방법을 선택하든 양방향 TLS를 지원할 수 있을 정도로 유연하다는 점을 기억해야 합니다.

SNI 지원

Edge는 API 프록시에서 Edge까지 서버 이름 표시(SNI)를 사용할 수 있도록 지원합니다.(여기에서 Edge는 TLS 서버), Edge에서 대상 엔드포인트로, Edge는 클라우드 및 프라이빗 클라우드 설치에서 Edge가 TLS 클라이언트 역할을 합니다.

TLS/SSL의 확장인 SNI를 사용하면 이러한 대상에 동일한 인증서를 사용하지 않아도 동일한 IP 주소 및 포트에서 여러 HTTPS 대상을 제공할 수 있습니다.

온프레미스 설치에 SNI를 사용 설정하는 방법에 대한 자세한 내용은 Edge에 SNI 사용을 참조하세요.

북쪽 방면 및 남쪽 방면

Apigee에서 노스바운드는 클라이언트 애플리케이션이 API 프록시를 호출하는 데 사용하는 API 엔드포인트를 나타냅니다. 일반적으로 라우터는 Apigee Edge의 진입점이며 Apigee Edge로 수신되는 요청을 처리합니다. 따라서 Apigee에서 클라이언트 애플리케이션과 Apigee Edge (라우터) 간의 통신에 사용되는 엔드포인트를 노스바운드라고 합니다.

Apigee에서 사우스바운드는 Apigee가 백엔드 서버와 통신하는 데 사용하는 대상 엔드포인트를 나타냅니다. 따라서 Apigee에서 Apigee Edge(메시지 프로세서)와 백엔드 서버 간의 통신에 사용되는 엔드포인트를 southbound라고 합니다. 메시지 프로세서는 API 요청을 백엔드 대상 서버로 프록시하는 Apigee Edge의 구성요소입니다.

다음 그림은 Apigee Edge의 북쪽 방면 및 남쪽 방면 연결을 보여줍니다.

북쪽 방면 흐름과 남쪽 방면 흐름입니다. 라우터에 대한 클라이언트 애플리케이션이 북쪽 방면입니다. 그런 다음 메시지 프로세서로 이동합니다. 백엔드 서버의 메시지 프로세서가 남쪽 경계입니다.