<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
Edge의 가상 호스트는 API 프록시가 노출되는 도메인과 포트를 정의하며 확장자는 앱이 API 프록시에 액세스하는 데 사용하는 URL입니다.
가상 호스트는 API 프록시가 HTTP 프로토콜을 사용하여 액세스되는지 여부도 정의합니다. TLS를 사용하는 암호화된 HTTPS 프로토콜에 의해 전송됩니다 HTTPS를 사용하도록 가상 호스트를 구성할 때 TLS를 사용하려면 Edge에 가상 호스트를 만들고 키 저장소를 사용하도록 가상 호스트를 구성합니다. 및 truststore입니다.
자세히 알아보기:
가상 호스트를 만드는 데 필요한 사항
가상 호스트를 만들기 전에 다음 정보가 있어야 합니다.
- 가상 호스트의 공개 도메인 이름입니다. 예를 들어,
공개용 이름은
api.myCompany.com
,myapi.myCompany.com
등입니다. 해당 정보 는 가상 호스트를 만들 때와 DNS 서버의 DNS 레코드를 생성할 때 가상 호스트입니다 -
단방향 TLS의 경우 키 저장소에 다음을 포함하는 키 저장소를 생성해야 합니다.
다음과 같습니다.
<ph type="x-smartling-placeholder">
- </ph>
- TLS 인증서 - 인증 기관 (CA)이 서명한 인증서 CA가 서명한 마지막 인증서가 있는 인증서 체인입니다.
- 비공개 키 - Edge는 최대 2,048비트의 키 크기를 지원합니다. 암호는 선택사항입니다.
- 양방향 TLS의 경우 키 저장소가 필요하고 인증서의 CA 체인(선택사항)을 제공합니다. 다른 환경에서도 CA에서 서명한 인증서인지 확인합니다.
키 저장소 및 Truststores를 참조하세요.
TLS용 가상 호스트 구성
가상 호스트를 만들려면 가상 호스트를 정의하는 XML 객체를 만듭니다.
다음 XML 객체는 <SSLInfo>
요소를 사용하여 가상
단방향 TLS 구성을 위한 호스트:
<VirtualHost name="myTLSVHost"> <HostAliases> <HostAlias>apiTLS.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9006</Port> <OCSPStapling>off</OCSPStapling> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://myTestKeystoreRef</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo> </VirtualHost>
이 예에서 <Enabled>
요소는 true로 설정됩니다.
단방향 TLS를 사용 설정하고 <KeyStore>
및 <KeyAlias>
요소가 키 저장소를 지정합니다.
TLS 연결에 사용되는 키입니다
양방향 TLS를 사용 설정하려면 <ClientAuthEnabled>
요소를
true
, 트러스트 저장소 지정
<TrustStore>
사용
요소가 포함됩니다. 트러스트 저장소는 클라이언트의 인증서와 선택적으로 인증서의 CA를 보관합니다.
있습니다.
가상 호스트에서 keystore 및 truststore 이름을 지정하는 방법 결정
위의 가상 호스트 예시에서는 reference를 사용하여 키 저장소를 지정했습니다. 가 reference는 키 저장소의 이름이 포함된 변수로, 키 저장소의 이름을 지정하는 것이 아니라 키 저장소 이름을 직접 입력합니다.
참조를 사용하면 참조 값을 변경하여 가상 호스트가 사용하는 키 저장소입니다. 일반적으로 현재 키 저장소의 인증서가 만료될 예정입니다. 다시 시작할 필요 없이 참조 값을 변경할 수 있습니다. 에지 라우터를 통해 연결할 수 있습니다
또는 가상 호스트에서 리터럴 키 저장소 이름을 사용할 수 있습니다. 그러나 가상 호스트를 수정하여 키 저장소 이름을 변경하려면 Edge Router를 다시 시작해야 합니다.
키 저장소 및 truststore 참조 사용 제한사항
키 저장소 및 키 저장소에 대한 참조를 사용할 때는 다음 제한사항을 고려해야 합니다. 트러스트 저장소:
- SNI를 지원하는 경우에만 가상 호스트에서 keystore 및 truststore 참조를 사용할 수 있습니다. Apigee Router에서 SSL을 종료하면 됩니다.
- Apigee 라우터 앞에 부하 분산기가 있고 이 네트워크에서 TLS를 종료하는 경우에는 부하 분산기의 경우 가상 머신에서 keystore 및 truststore 참조를 사용할 수 없음 호스팅합니다
keystore 및 truststore에 대한 참조를 사용하도록 기존 가상 호스트 수정
Apigee에서는 가상 호스트에서 키 저장소 및 트러스트 저장소를 사용할 것을 적극 권장합니다. 참조를 사용하면 가상 호스트에서 사용하는 키 저장소와 트러스트 저장소를 에지 라우터를 다시 시작해야 했습니다
가상 호스트가 현재 키 저장소 이름 또는 트러스트 저장소가 없으면 참조를 사용하도록 변환할 수 있습니다. 이렇게 하려면 다음을 사용하도록 가상 호스트를 업데이트하세요. 에지 라우터를 다시 시작합니다.
Edge 4.15.07 이하의 TLS 암호화 및 프로토콜 설정
Edge 버전 4.15.07 이하를 사용하는 경우 TLS 프로토콜 및 암호화를 설정합니다.
<Ciphers>
및 <Protocols>
하위 태그를 사용하여 가상 호스트에서
<SSLInfo>
태그 이러한 태그는
아래 표에 설명되어 있습니다.
예를 들면 다음과 같습니다.
<SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>myTestKeystore</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>myTestKeystore</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> <Ciphers> <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Cipher> <Cipher>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Cipher> </Ciphers> <Protocols> <Protocol>TLSv1.2</Protocol> </Protocols> </SSLInfo> </SSLInfo>
<Cipher>
태그는
암호화의 Java 및 JSSE 이름입니다. 예를 들어 Java 8의 경우 다음을 참조하세요.
http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites.
Edge 4.16.01에서 4.16.09로의 TLS 암호화 및 프로토콜 지정
Edge 4.16.01~4.16.09에서는 가상 호스트에 대한 기본 암호화 및 프로토콜을 설정함 라우터에 전역으로 전송됩니다. 그러면 이 기본값이 모든 가상 호스트에 적용됩니다.
토큰을 사용하여 기본 프로토콜 및 암호화를 지정합니다.
- 기본 프로토콜을 지정하려면
conf_load_balancing_load.balancing.driver.server.ssl.protocols
토큰을 사용하세요. - 라우터의 기본 암호화를 지정하려면
conf_load_balancing_load.balancing.driver.server.ssl.ciphers
토큰을 사용하세요.
conf_load_balancing_load.balancing.driver.server.ssl.protocols
토큰의 기본값
다음과 같습니다.
conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
이 설정은 라우터가 TLS 버전 1.0, 1.1, 1.2를 지원하도록 지정합니다. 쉼표로 구분된 값 목록을 토큰에 추가합니다.
conf_load_balancing_load.balancing.driver.server.ssl.ciphers
토큰의 기본값
다음과 같습니다.
conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES
이 설정은 다음을 지정합니다.
- 키 길이가 128비트 이상 (
HIGH
)이어야 합니다. - 인증이 없는 암호화 제외 (
!aNULL
) - MD5를 사용하여 암호화 스위트 제외 (
!MD5
) - DH를 사용하는 암호화 스위트 제외 (익명 DH, 임시 DH, 고정 DH 포함)
트리플 DES (
!DH+3DES
) - RSA 키 교환 및 삼중 DES를 사용하는 암호화 스위트 제외 (
!RSA+3DES
)
이 토큰에서 허용하는 구문 및 값에 대한 자세한 내용은 OpenSSL 암호화를 참조하세요. 이 토큰은 AES128-SHA256과 같은 OpenSSL 암호화 이름을 사용하며 Java/JSSE 암호화 이름(예: TLS_RSA_WITH_AES_128_CBC_SHA256)
라우터 토큰을 설정하려면 다음 단계를 따르세요.
/opt/apigee/customer/application/router.properties
수정 파일에서 참조됩니다. 해당 파일이 없으면 새로 만듭니다.conf_load_balancing_load.balancing.driver.server.ssl.ciphers
설정 토큰입니다. 예를 들어 사전 공유 키를 사용하여 TLSv1.2만 지정하고 암호화 스위트를 제외하려면 추가!PSK
:conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2 conf_load_balancing_load.balancing.driver.server.ssl.ciphers=HIGH:!aNULL:!MD5:!DH+3DES:!RSA+3DES:!PSK
router.properties
파일이 다음을 소유하는지 확인합니다. Apigee:chown apigee:apigee /opt/apigee/customer/application/router.properties
- Edge Router를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 토큰의 값을 확인합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers
설정 Edge 버전 4.17.01 이상의 TLS 가상 호스트 매개변수
Edge 버전 4.17.01 이상을 사용하는 경우
TLS 프로토콜 및 암호화와 같은 개별 가상 호스트의 <Properties>
하위 태그를 사용하여
<VirtualHost>
태그 사이에 있어야 합니다. 이러한 태그는 가상 호스트 속성 참조에 설명되어 있습니다.
예를 들면 다음과 같습니다.
<VirtualHost name="myTLSVHost"> <HostAliases> <HostAlias>apiTLS.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9006</Port> <OCSPStapling>off</OCSPStapling> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://myTestKeystoreRef</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo> <Properties> <Property name="proxy_read_timeout">50</Property> <Property name="keepalive_timeout">300</Property> <Property name="proxy_request_buffering">off</Property> <Property name="proxy_buffering">off</Property> <Property name="ssl_protocols">TLSv1.2 TLSv1.1</Property> <Property name="ssl_ciphers">HIGH:!aNULL:!MD5:!DH+3DES:!kEDH</Property> </Properties> </VirtualHost>
ssl_ciphers
토큰에서 허용하는 구문 및 값에 대한 자세한 내용은 OpenSSL 암호화를 참고하세요.
이 토큰은 AES128-SHA256과 같은 OpenSSL 암호화 이름을 사용하며
Java/JSSE 암호화 이름(예: TLS_RSA_WITH_AES_128_CBC_SHA256)
HTTPS를 사용하는 가상 호스트 만들기
이 예시에서는 참조를 사용하여 가상 호스트에 키 저장소를 지정합니다. 참조를 사용하면 라우터를 다시 시작하지 않고도 키 저장소를 변경할 수 있습니다.
가상 호스트를 만들려면 다음 절차를 따르세요.
- 다음을 사용하여 myTestKeystore라는 키 저장소 생성 및 구성 여기에 설명된 절차: 키 저장소 및 트러스트 저장소. 키 저장소가 별칭 이름을 사용하는지 확인하세요. 인증서와 비공개 키에 대한 myKeyAlias입니다.
-
다음 POST API 호출을 사용하여 참조 만들기 위에서 생성한 키 저장소에 대한 결과를 keystoreref로 지정합니다.
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="keystoreref"> <Refers>myTestKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
참조는 키 저장소의 이름과 참조 유형을
KeyStore
로 지정합니다.참조를 보려면 다음 GET API 호출을 사용하세요.
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
Create a Virtual Host API - 여기서
<ms-IP>
는 IP 주소입니다. 또는 도메인 이름을 선택합니다.올바른 키 저장소 참조와 키 별칭을 지정해야 합니다.
curl -X POST -H "Content-Type:application/xml" \ http://<ms-IP>:8080/v1/o/{org_name}/environments/{env_name}/virtualhosts \ -d '<VirtualHost name="newTLSTrustStore2"> <HostAliases> <HostAlias>apiTLS.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> <OCSPStapling>off</OCSPStapling> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo> </VirtualHost>' \ -u email:password
- 호스트 별칭과 일치하는 가상 호스트의 DNS 레코드를 만듭니다.
기존 API 프록시가 있는 경우 다음 인스턴스의
<HTTPConnection>
요소에 가상 호스트를 추가합니다. ProxyEndpoint를 선택합니다. 가상 호스트가 모든 새 API 프록시에 자동으로 추가됩니다.가상 호스트를 만든 후 API 프록시 업데이트를 참조하세요. 가상 호스트에 대한 정보
가상 호스트를 사용하도록 API 프록시를 업데이트하고 호스트에 DNS 레코드를 만든 후 아래와 같이 API 프록시에 액세스할 수 있습니다.
https://apiTLS.myCompany.com/v1/{project-base-path}/{resource-path}
예를 들면 다음과 같습니다.
https://apiTLS.myCompany.com/v1/weather/forecastrss?w=12797282
참조 만들기 및 수정 keystore 또는 truststore에
키 저장소 참조를 사용하도록 가상 호스트를 구성할 수도 있습니다(선택사항). truststore를 대신 사용하세요. 참조 사용의 장점은 다른 keystore 또는 truststore를 가리켜 라우터.
예를 들어 다음은 키 저장소에 대한 참조를 사용하는 가상 호스트입니다.
<VirtualHost name="myTLSVHost"> <HostAliases> <HostAlias>apiTLS.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9006</Port> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo> </VirtualHost>
다음 POST API 호출을 사용하여 keystoreref라는 참조를 만듭니다.
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \ -d '<ResourceReference name="keystoreref"> <Refers>myTestKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password
참조는 키 저장소의 이름과 유형을 지정합니다.
참조를 보려면 다음 GET API 호출을 사용하세요.
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password
다른 키 저장소를 가리키도록 나중에 참조를 변경하여 별칭의 이름을 동일하게 하려면 다음 PUT 호출을 사용합니다.
curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \ -d '<ResourceReference name="keystoreref"> <Refers>myNewKeystore</Refers> <ResourceType>KeyStore</ResourceType> </ResourceReference>' -u email:password