가상 호스트 및 라우터에서 암호화 스위트 구성

Apigee Edge 문서를 보고 있습니다.
Apigee X 문서로 이동하세요.
info

이 문서에서는 Apigee Edge의 가상 호스트와 라우터에서 암호화 스위트를 구성하는 방법을 설명합니다.

암호화 스위트는 TLS를 사용하는 네트워크 연결을 보호하는 데 도움이 되는 알고리즘 집합입니다. 클라이언트와 서버는 메시지 교환에 사용할 특정 암호화 스위트에 동의해야 합니다. 클라이언트와 서버가 암호화 스위트에 동의하지 않으면 TLS 핸드셰이크 실패로 요청이 실패합니다.

Apigee에서 암호화 스위트는 클라이언트 애플리케이션과 라우터 간에 상호 합의되어야 합니다.

다음과 같은 이유로 Apigee Edge에서 암호화 스위트를 수정할 수 있습니다.

  • 클라이언트 애플리케이션과 Apigee 라우터 간의 암호화 스위트 불일치를 방지하려면
  • 보안 취약점을 수정하거나 보안을 강화하기 위해 더 안전한 암호화 스위트를 사용하려면

암호화 스위트는 가상 호스트 또는 Apigee 라우터에서 구성할 수 있습니다. Apigee는 가상 호스트와 라우터 모두에서 OpenSSL 암호 문자열 형식의 암호화 스위트만 허용합니다. OpenSSL 암호 맨페이지에는 관련 사양의 SSL 또는 TLS 암호화 모음과 OpenSSL에 상응하는 항목이 나와 있습니다.

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

가상 호스트 또는 Apigee 라우터에서 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 암호화 스위트를 구성하려면 OpenSSL 암호화 manpage에서 해당 OpenSSL 암호화 문자열을 식별해야 합니다. 암호화 스위트 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256의 OpenSSL 암호화 문자열은 ECDHE-RSA-AES128-GCM-SHA256.입니다. 따라서 가상 호스트 또는 Apigee 라우터에서 암호화 스위트를 구성할 때 OpenSSL 암호화 문자열 ECDHE-RSA-AES128-GCM-SHA256를 사용해야 합니다.

시작하기 전에

가상 호스트에서 암호화 스위트 구성

이 섹션에서는 조직 및 환경과 연결된 가상 호스트에서 암호화 스위트를 구성하는 방법을 설명합니다. 암호화 스위트는 가상 호스트에서 ssl_ciphers 속성을 통해 구성할 수 있습니다. 이 속성은 가상 호스트에서 지원하는 암호화 스위트 목록을 나타냅니다.

Apigee에서 지원하는 암호화 스위트 목록은 지원되는 암호화 스위트를 참고하세요.

다음 방법 중 하나를 사용하여 가상 호스트를 구성할 수 있습니다.

  • Edge UI 사용
  • Edge API 사용

Edge UI 사용

Edge UI를 사용하여 가상 호스트를 구성하려면 다음 단계를 따르세요.

  1. Edge UI에 로그인합니다.
  2. 관리 > 가상 호스트로 이동합니다.
  3. 이 변경사항을 적용할 특정 환경을 선택합니다.
  4. 암호화 스위트를 구성할 특정 가상 호스트를 선택합니다.
  5. 속성에서 OpenSSL 암호화 알고리즘 문자열의 콜론으로 구분된 목록으로 암호화 알고리즘 값을 업데이트합니다.

    예를 들어 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 암호화 스위트만 허용하려면 다음 표와 같이 OpenSSL 암호 맨페이지에서 해당 OpenSSL 암호 문자열을 확인합니다.

    암호화 스위트 OpenSSL 암호화 문자열
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 DHE-RSA-AES128-GCM-SHA256
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256

    다음 그림과 같이 콜론으로 구분된 OpenSSL 암호 문자열을 추가합니다.

    암호 예

  6. 변경사항을 저장합니다.

Edge API 사용

Edge API를 사용하여 가상 호스트에서 암호화 스위트를 구성하려면 다음 단계를 따르세요.

  1. 아래와 같이 가상 호스트 가져오기 API를 사용하여 현재 가상 호스트 구성을 가져옵니다.

    퍼블릭 클라우드 사용자:

    curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}

    Private Cloud 사용자:

    curl -v -X GET http://{management_server_IP}:8080/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}
    {
      "hostAliases": [
        "api.myCompany,com"
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
  2. 적절한 OpenSSL 암호 문자열을 사용하여 properties 아래의 기존 가상 호스트 구성 JSON 페이로드에 ssl_ciphers 속성을 추가합니다.

    예를 들어 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 암호화 스위트만 허용하려면 다음 표와 같이 OpenSSL 암호 맨페이지에서 해당 OpenSSL 암호 문자열을 확인합니다.

    암호화 스위트 OpenSSL 암호화 문자열
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 DHE-RSA-AES128-GCM-SHA256
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256

    다음 properties 코드 블록을 추가합니다.

    업데이트된 가상 호스트 구성의 예:

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "ssl_ciphers",
            "value": "DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
  3. 업데이트된 가상 호스트 구성을 파일에 저장합니다. 예를 들면 virtualhost-payload.json입니다.
  4. 다음과 같이 가상 호스트 업데이트 API를 사용하여 변경사항으로 virtualhost 구성을 업데이트합니다.

    퍼블릭 클라우드 사용자:

    curl -v -X POST Content-Type: application/json
    https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u {username}

    Private Cloud 사용자:

    curl -v -X POST Content-Type: application/json
    http://{management_server_IP}:8080/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u {username}

지원되는 암호화 스위트

Apigee는 다음 암호화 스위트를 지원합니다.

ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-RSA-AES256-SHA
DHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES256-SHA256
DHE-RSA-AES256-SHA
DHE-RSA-CAMELLIA256-SHA
AES256-GCM-SHA384
AES256-SHA256  
AES256-SHA
CAMELLIA256-SHA
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES128-SHA
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES128-SHA256
DHE-RSA-AES128-SHA
DHE-RSA-CAMELLIA128-SHA
AES128-GCM-SHA256
AES128-SHA256   
AES128-SHA 
CAMELLIA128-SHA

가상 호스트에서 암호화 스위트 확인

이 섹션에서는 Edge API를 사용하여 가상 호스트에서 암호화 스위트가 성공적으로 수정되었는지 확인하는 방법을 설명합니다.

  1. 가상 호스트 가져오기 API를 실행하여 아래와 같이 virtualhost 구성을 가져옵니다.

    퍼블릭 클라우드 사용자:

    curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}

    Private Cloud 사용자:

    curl -v -X GET http://{management_server_IP}:8080/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}
  2. ssl_ciphers 속성이 새 값으로 설정되었는지 확인합니다.

    업데이트된 가상 호스트 구성의 예:

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "ssl_ciphers",
            "value": "DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }

    위의 예에서 ssl_ciphers이 새 값으로 설정되었습니다.

  3. ssl_ciphers의 이전 값이 계속 표시되면 가상 호스트에서 암호화 스위트 구성에 설명된 단계를 모두 올바르게 따랐는지 확인합니다. 단계를 누락한 경우 모든 단계를 다시 올바르게 반복하세요.
  4. 그래도 가상 호스트에 암호화 스위트를 업데이트하거나 추가할 수 없는 경우 Apigee Edge 지원팀에 문의하세요.

라우터에서 암호화 스위트 구성

이 섹션에서는 라우터에서 암호화 스위트를 구성하는 방법을 설명합니다. 암호화 스위트는 콜론으로 구분된 허용된 암호화 스위트를 나타내는 라우터 속성 conf_load_balancing_load.balancing.driver.server.ssl.ciphers를 통해 구성할 수 있습니다.

라우터에서 암호화 스위트를 구성하려면 다음 단계를 따르세요.

  1. 라우터 머신에서 편집기로 다음 파일을 엽니다. 아직 없는 경우 만듭니다.

    /opt/apigee/customer/application/router.properties

    예를 들어 vi로 파일을 열려면 다음을 입력합니다.

    vi /opt/apigee/customer/application/router.properties
  2. properties 파일에 다음 형식의 줄을 추가하고 colon_separated_cipher_suites 값을 대체합니다.
    conf_load_balancing_load.balancing.driver.server.ssl.ciphers=colon_separated_cipher_suites

    예를 들어 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 암호화 스위트만 허용하려면 다음 표와 같이 OpenSSL 암호 맨페이지에서 해당 OpenSSL 암호 문자열을 확인합니다.

    암호화 스위트 OpenSSL 암호화 문자열
    TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 DHE-RSA-AES128-GCM-SHA256
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256

    그런 다음 다음 줄을 추가합니다.

    conf_load_balancing_load.balancing.driver.server.ssl.ciphers=DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
  3. 변경사항을 저장합니다.
  4. 이 속성 파일이 아래와 같이 apigee 사용자가 소유하는지 확인합니다.
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  5. 아래와 같이 라우터를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. 라우터가 두 대 이상인 경우 모든 라우터에서 위 단계를 반복합니다.

라우터에서 암호화 스위트 확인

이 섹션에서는 라우터에서 암호화 스위트가 성공적으로 수정되었는지 확인하는 방법을 설명합니다.

  1. 라우터에서 /opt/apigee 폴더의 Apigee 검색 유틸리티를 사용하여 conf_load_balancing_load.balancing.driver.server.ssl.ciphers 속성을 검색하고 다음과 같이 새 값으로 설정되었는지 확인합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers
  2. 새 암호화 스위트가 라우터에 성공적으로 설정되면 위의 명령어가 새 값을 표시합니다.

    다음은 암호화 스위트가 DHE-RSA-AES128-GCM-SHA256ECDHE-RSA-AES128-GCM-SHA256로 업데이트된 경우 위의 search 명령어의 샘플 결과입니다.

    Found key conf_load_balancing_load.balancing.driver.server.ssl.ciphers, with value, DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256, in /opt/apigee/customer//application/router.properties

    위의 예시 출력에서 conf_load_balancing_load.balancing.driver.server.ssl.ciphers 속성이 새 암호화 스위트 값으로 설정된 것을 확인할 수 있습니다. 이는 암호화 스위트가 라우터에서 OpenSSL 암호화 문자열 DHE-RSA-AES128-GCM-SHA25ECDHE-RSA-AES128-GCM-SHA256로 성공적으로 업데이트되었음을 나타냅니다.

  3. 여전히 암호화 스위트 conf_load_balancing_load.balancing.driver.server.ssl.ciphers의 이전 값이 표시되면 라우터에서 암호화 스위트 구성에 설명된 단계를 모두 올바르게 따랐는지 확인합니다. 단계를 누락한 경우 모든 단계를 다시 올바르게 반복하세요.
  4. 그래도 라우터에서 암호화 스위트를 수정할 수 없는 경우 Apigee Edge 지원팀에 문의하세요.