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

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

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

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

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

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

  • 클라이언트 애플리케이션과 Apigee 라우터 간의 암호화 스위트 불일치 방지
  • 보다 안전한 암호화 스위트를 사용하여 보안 취약점 해결 또는 보안 강화

암호화 스위트는 가상 호스트 또는 Apigee 라우터에서 구성할 수 있습니다. Apigee는 가상 호스트와 라우터에서 모두 OpenSSL 암호화 문자열 형식으로만 암호화 스위트를 허용합니다. OpenSSL 암호화 manpage는 관련 사양의 SSL 또는 TLS 암호화 묶음과 이에 상응하는 OpenSSL을 제공합니다.

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

가상 호스트 또는 Apigee 라우터에서 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 암호화 스위트를 구성하려면 OpenSSL 암호화 기본 페이지에서 해당 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. 속성에서 Ciphers 값을 콜론으로 구분된 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. 아래와 같이 Get virtual host 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. ssl_ciphers 속성을 적절한 OpenSSL 암호화 문자열을 사용하여 properties 아래의 기존 가상 호스트 구성 JSON 페이로드에 추가합니다.

    예를 들어 암호화 스위트 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. 아래와 같이 Get virtual host 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. 라우터가 2개 이상인 경우 모든 라우터에서 위 단계를 반복합니다.

라우터의 암호화 스위트 확인

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

  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 지원팀에 문의하세요.