<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
TLS를 사용하도록 포털을 구성할 수 있습니다. 포털의 TLS 구성 절차는 포털 배포 방법에 따라 다릅니다.
- 클라우드: 클라우드 기반 포털 호스팅 서비스인 Pantheon 또는 Acquia에서 TLS를 구성합니다.
- Apigee Edge for Private Cloud: 포털을 호스팅하는 서버에서 온프레미스로 TLS를 구성합니다.
TLS 및 포털
다음 이미지는 포털에서 TLS를 사용하는 두 위치를 보여줍니다.
- 포털과 Edge Management API 간의 통신에 사용됩니다.
포털은 독립형 시스템으로 작동하지 않습니다. 포털에서 사용하는 정보의 대부분은 실제로 Edge에 저장되며, Edge는 프라이빗 클라우드 설치로 클라우드나 온프레미스에 배포될 수 있습니다. 필요한 경우 포털에서는 Edge 관리 API에 HTTP 또는 HTTPS 요청을 전송하여 정보를 가져오거나 정보를 전송합니다.
포털을 만들 때 가장 먼저 수행해야 하는 단계는 Edge Management API의 URL을 지정하는 것입니다. Edge 관리 API의 구성 방식에 따라 해당 URL에서 TLS를 사용할 수 있습니다. 자세한 내용은 개발자 포털 빌드 시작하기를 참고하세요. - 개발자와 포털 간의 통신
개발자 서비스 포털을 사용하여 API를 배포하면 개발자가 포털에 로그인하여 앱을 등록하고 API 키를 받습니다. 로그인 사용자 인증 정보와 API 키는 보안을 위해 HTTPS를 통해 전송하고자 하는 독점 정보입니다. 이러한 유형의 독점 정보는 HTTPS를 통해 전송되어야 합니다.
이 시나리오에 맞게 TLS를 구성하는 방법은 클라우드 또는 프라이빗 클라우드용 Apigee Edge 포털을 배포한 방법에 따라 다릅니다. 다음 섹션에서는 두 시나리오를 모두 설명합니다.
포털과 Edge Management API 간에 TLS 구성
에지 관리 API의 구성에 따라 통신에 TLS를 사용할 수 있는지 여부가 결정됩니다. Edge 관리 API가 TLS를 사용하도록 구성된 경우 포털은 HTTPS를 사용할 수 있습니다. 그렇지 않으면 포털이 HTTP를 통해 Edge와 통신합니다. 따라서 포털 개발자는 Edge가 포털과 Edge 간의 연결을 설정하는 방식만 알면 됩니다.
Edge 관리 API에 대한 연결을 구성하는 데 사용하는 절차는 개발자 포털 빌드 시작하기를 참고하세요.
Edge의 클라우드 기반 버전
포털이 Edge의 클라우드 기반 버전에 연결되면 Apigee에서 Edge 관리 API의 URL이 TLS를 사용하도록 사전 구성됩니다. 포털을 구성할 때 URL https://api.enterprise.apigee.com/v1을 사용하여 Edge 관리 API에 액세스합니다.
Edge의 Private Cloud 설치
Edge의 프라이빗 클라우드 설치의 경우 Edge 관리 API의 URL은
형식입니다.
http://EdgePrivateCloudIp:8080/v1?
또는:
https://EdgePrivateCloudIp:TLSport/v1
여기서 EdgePrivateCloudIp는 에지 관리 서버 서버의 IP 주소이고 TLSport는 Edge management API의 TLS 포트입니다. 예를 들어 포트 번호는 Edge 구성에 따라 8443 또는 8080일 수도 있습니다.
개발자와 포털 간 TLS 구성
개발자와 포털 간에 TLS를 구성하는 방법은 포털을 배포한 방법(클라우드 또는 프라이빗 클라우드용 Apigee Edge)에 따라 다릅니다.
클라우드 기반 포털
판테온
Pantheon은 Pantheon 글로벌 CDN과 Let's Encrypt를 통해 플랫폼의 모든 사이트에 자동화된 무료 HTTPS를 제공합니다. Pantheon 글로벌 CDN의 HTTPS도 참조하세요.
Acquia
Acquia를 사용하여 TLS/SSL을 사용 설정하려면 SSL 사용 설정을 참고하세요.Private Cloud 포털용 Edge
Apigee에서 권장하는 모든 프라이빗 클라우드 설치에는 아래와 같이 포털이 부하 분산기 뒤에 있어야 합니다.
따라서 온프레미스 설치의 경우 TLS를 구성하는 옵션에는 두 가지가 있습니다.
- 부하 분산기에서 TLS 구성: 포털이 아닌 부하 분산기 자체에서 TLS를 구성합니다. 따라서 TLS를 구성하는 데 사용하는 절차는 부하 분산기에 따라 다릅니다. 자세한 내용은 부하 분산기 문서를 참조하세요.
- 포털 자체에서 TLS 구성: 필요한 경우 포털을 호스팅하는 웹 서버에서 TLS를 구성할 수 있습니다. 기본적으로 Apigee는 Apache 웹 서버를 설치합니다. Apache용 TLS 구성에 대한 자세한 내용은 HTTP Secure (HTTPS) 사용 설정하기 를 참고하세요.
포털을 프로덕션 환경에 배포하려면 먼저 자체 TLS 인증서를 가져와야 합니다.
추가 TLS 설정 구성
sites/default/settings.local.php (cloud) 또는 sites/default/settings.php (Private Cloud) 파일을 수정하여 포털의 TLS 구성을 변경할 수 있습니다.
파일을 수정할 때 ini_set() 함수의 인스턴스를 추가하여 속성을 설정합니다. 이 함수에 대한 자세한 내용은 ini_set를 참조하세요.
sites/default/settings.local.php (cloud) 또는 sites/default/settings.php (Private Cloud) 파일에서 다음 속성을 설정할 수 있습니다.
- cookie_httponly: (권장) HTTP 프로토콜을 통해서만 쿠키를 액세스할 수 있도록 지정합니다. 이 속성을 다음과 같이 설정합니다.
ini_set('session.cookie_httponly', true); - session.cookie_secure - (선택사항) 보안 연결을 통해서만 쿠키를 전송할 수 있도록 지정합니다. 하지만 이는 모든 콘텐츠가 HTTPS를 통해 제공되어야 함을 의미합니다. 이 설정을 사용하면 사이트가 HTTP를 통해 작동하지 않습니다. 이 속성을 다음과 같이 설정합니다.
ini_set('session.cookie_secure', true); - gc_maslifetime 및 cookie_lifetime: (선택사항) gc_lifeteime은 데이터가 삭제될 수 있는 시간(초)을 지정하고 cookie_lifetime은 쿠키의 전체 기간(초)을 지정합니다. 속성을 다음과 같이 설정합니다.
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
개발자 포털과 클라이언트 간의 TLS 설정에 대한 자세한 내용은 Pantheon 문서 사이트에서 안전한 HTTPS 통신을 위한 SSL 사용 설정을 참조하세요.
부하 분산기로 TLS 구성
성능 향상을 위해 부하 분산기는 TLS 종료를 수행하도록 구성되기도 합니다. TLS 종료를 사용하면 부하 분산기가 https://를 통해 전송된 메시지를 복호화하고 메시지를 http://를 통해 백엔드 서버로 전달합니다. 이렇게 하면 백엔드 서버에서 https:// 메시지 자체를 복호화하는 오버헤드가 줄어듭니다.
부하 분산기가 암호화되지 않은 http 메시지를 동일한 데이터 센터의 서버로 전달하는 경우에는 보안 문제가 발생하지 않습니다. 하지만 부하 분산기가 http://를 통해 Apigee 개발자 포털과 같은 데이터 센터 외부의 서버로 메시지를 전달하는 경우, 메시지가 암호화되지 않아 보안상의 허점이 생깁니다.
개발자 포털이 TLS 종료를 사용하는 부하 분산기 뒤에 있고 https://를 통해 모든 트래픽을 제공하려는 경우, 웹사이트 페이지에 https:// 링크만 포함해야 하며 개발자 포털 sites/default/settings.local.php (클라우드) 또는 sites/default/settings.php (프라이빗 클라우드) 파일에 다음 코드를 추가해야 합니다. 부하 분산기는 HTML 페이지의 콘텐츠를 자동으로 변환하지 않으므로 코드는 클라이언트로 전달되는 모든 링크가 https://로 시작되도록 합니다.
부하 분산기로 TLS를 구성하려면 sites/default/settings.local.php (cloud) 또는 sites/default/settings.php (Private Cloud) 파일에 다음 줄을 추가합니다.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; // Set HTTPS URL of portal $base_url = 'https://developers.myCo.com'; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_ FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_ FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { header('HTTP/1.0 301 Moved Permanently'); // You could optionally substitute a canonical server name for $_SERVER['HTTP_HOST'] here. header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } }
자세한 내용은 다음을 참고하세요.
포털 트래픽을 HTTPS로 리디렉션
sites/default/settings.local.php (cloud) 또는 sites/default/settings.php (Private Cloud) 파일을 업데이트하여 모든 포털 트래픽을 HTTPS로 리디렉션할 수 있습니다. 필요한 업데이트는 동일한 호스트 이름에서 HTTPS로 리디렉션하는지, 아니면 여러 호스트 이름으로 리디렉션하는지에 따라 다릅니다.
동일한 호스트 이름에서 HTTPS로 리디렉션
다음 코드를 sites/default/settings.local.php (cloud) 또는 sites/default/settings.php (Private Cloud) 파일에 추가하여 모든 포털 트래픽에서 동일한 호스트 이름 (예: *.devportal.apigee.io)을 HTTPS로 리디렉션합니다.
이 시나리오에서는 개발자가 포털(live-example.devportal.apigee.io)을 방문하지만 devportal.example.com에 대해 업로드된 인증서에 액세스해야 하는 경우 요청이 실패합니다.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { header('HTTP/1.0 301 Moved Permanently'); header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } }
여러 호스트 이름에서 HTTPS로 리디렉션
다음 코드를 sites/default/settings.local.php 파일 (클라우드) 또는 sites/default/settings.php 파일 (Private Cloud)에 추가하여 모든 포털 트래픽을 여러 호스트 이름의 HTTPS로 리디렉션합니다.
// Only check for SSL if we are not using PHP from the command line. if (PHP_SAPI != 'cli') { // Assume we can't detect SSL unless proven otherwise. $can_detect_ssl = FALSE; // Assume we are not forcing a redirect until proven otherwise. $force_redirect = FALSE; if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $can_detect_ssl = TRUE; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') { $_SERVER['HTTPS'] = 'on'; } if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') { // We will force a redirect because HTTPS is required. $force_redirect = TRUE; } // This works on Pantheon only; the constant is undefined elsewhere. switch (PANTHEON_ENVIRONMENT) { case 'dev': $canonical_hostname = 'dev.devportal.example.com'; break; case 'test': $canonical_hostname = 'test.devportal.example.com'; break; case 'live': $canonical_hostname = 'devportal.example.com'; break; default: $canonical_hostname = strtolower($_SERVER['HTTP_HOST']); break; } if ($canonical_hostname != strtolower($_SERVER['HTTP_HOST'])) { // We will force a redirect because hostname is not canonical. $force_redirect = TRUE; } if ($force_redirect) { header('HTTP/1.0 301 Moved Permanently'); header('Location: https://' . $canonical_hostname . $_SERVER['REQUEST_URI']); exit; } }