<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
TLS를 사용하도록 포털을 구성할 수 있습니다. 포털의 TLS 구성 절차 포털 배포 방법에 따라 다릅니다.
- 클라우드: 클라우드 기반 호스팅인 Pantheon 또는 Acquia에서 TLS 구성 제공합니다
- Apigee Edge for Private Cloud: 서버에서 온프레미스로 TLS 구성 Google Cloud 콘솔입니다
TLS 및 포털
다음 이미지는 포털에서 TLS를 사용하는 두 위치를 보여줍니다.
- 포털과 Edge Management API 간의 통신에 사용됩니다.
포털은 독립형 시스템으로 작동하지 않습니다. 대신 포털은 실제로 Edge에 저장되며, 여기서 Edge는 클라우드나 온프레미스에 비공개 클라우드 설치로 사용할 수 있습니다 필요한 경우 포털에서 HTTP 또는 HTTPS를 만듭니다. 에지 관리 API에 요청하여 정보를 검색하거나 정보를 전송합니다.
포털을 만들 때 첫 번째로 수행해야 하는 단계는 포털의 URL을 지정하는 것입니다. 에지 관리 API를 사용하는 것이 좋습니다 Edge Management API의 구성 방식에 따라 해당 URL은 TLS를 사용할 수 있습니다 만들기 개발자 포털을 참조하세요. - 개발자와 포털 간의 통신
개발자 서비스 포털을 사용하여 API를 배포할 때 개발자는 앱을 등록하고 API 키를 받을 수 있습니다. 로그인 사용자 인증 정보 및 API 키는 독점 정보를 포함해야 합니다. 이 HTTPS를 통해 전송해야 합니다.
이 시나리오에 대해 TLS를 구성하는 방법은 Cloud 또는 Private Cloud용 Apigee Edge입니다. 다음 섹션에서는 사용할 수 있습니다
포털 간 TLS 구성 에지 관리 API를
에지 관리 API의 구성에 따라 통신이 TLS를 사용합니다. Edge 관리 API가 TLS를 사용하도록 구성된 경우 포털은 HTTPS를 사용할 수 있습니다. 그렇지 않으면 포털이 HTTP를 통해 Edge와 통신합니다. 따라서 포털 개발자는 포털과 포트 간의 연결을 설정하기 위해 Edge가 어떻게 구성되어 있는지만 알면 됩니다. Edge.
Edge Management API에 대한 연결을 구성하는 데 사용하는 절차는 다음을 참조하세요. 개발자 만들기
Edge의 클라우드 기반 버전
포털이 Edge의 클라우드 기반 버전에 연결되는 경우 Edge의 URL Management API는 TLS를 사용하도록 Apigee에서 사전 구성됩니다. 포털을 구성할 때 https://api.enterprise.apigee.com/v1을 사용하는 에지 관리 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를 구성하는 방법은 Cloud 또는 Private Cloud용 Apigee Edge입니다.
클라우드 기반 포털
판테온
Pantheon은 Pantheon 글로벌 CDN과 Let's Encrypt를 통해 플랫폼의 모든 사이트에 자동화된 무료 HTTPS를 제공합니다. Pantheon 글로벌 CDN의 HTTPS도 참조하세요.
Acquia
Acquia를 사용하여 TLS/SSL을 사용 설정하려면 SSL 사용 설정을 참고하세요.비공개용 에지 Cloud 포털
Apigee에서 권장하는 모든 프라이빗 클라우드 설치 시 포털이 Cloud 부하 분산기를 실행할 수 있습니다
따라서 온프레미스 설치의 경우 TLS를 구성하는 옵션에는 두 가지가 있습니다.
- 부하 분산기에서 TLS 구성: 부하 분산기에 TLS를 구성합니다. 포털이 아니라 자체 사이트 등에서 읽을 수 있습니다. 따라서 TLS를 구성하는 데 사용하는 절차는 부하 분산기에 따라 달라집니다 자세한 내용은 부하 분산기 문서를 참조하세요. 확인할 수 있습니다
- 포털 자체에서 TLS 구성: 필요한 경우 포털을 호스팅하는 웹 서버. 다음을 참조하세요. 포털을 사용하도록 구성 HTTPS를 참조하세요.
포털을 프로덕션에 배포하려면 먼저 자체 TLS 인증서를 가져와야 합니다. 환경입니다
구성 추가 TLS 설정
sites/default/settings.local.php (클라우드)를 또는 sites/default/settings.php (비공개 Cloud) 파일을 사용하여 포털의 TLS 구성을 변경합니다.
파일을 수정할 때 ini_set() 함수의 인스턴스를 추가하여 속성을 설정합니다. 이 함수에 대한 자세한 내용은 http://php.net/manual/en/function.ini-set.php를 참조하세요.
sites/default/settings.local.php (클라우드)에서 다음 속성을 설정할 수 있습니다. 또는 sites/default/settings.php (비공개 Cloud) 파일 형식을 사용합니다.
- cookie_httponly:
(권장) HTTP 프로토콜을 통해서만 쿠키가 액세스할 수 있도록 지정합니다. 설정
속성:
ini_set('session.cookie_httponly', true); - session.cookie_secure
- (선택사항) 보안 연결을 통해서만 쿠키를 전송할 수 있도록 지정합니다. 그러나
이는 모든 콘텐츠가 HTTPS를 통해 제공되어야 함을 의미합니다. 이 설정을 사용하면 사이트에서
HTTP를 통해 작동합니다 이 속성을 다음과 같이 설정합니다.
ini_set('session.cookie_secure', true); - gc_maxlifetime
및 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://를 통해 메시지를 데이터 외부의 서버로 전달하는 경우에는 메시지가 암호화되지 않았기 때문에 허점이기 때문입니다.
개발자 포털이 TLS 종료를 사용하는 부하 분산기 뒤에 있고 https://를 통해 모든 트래픽이 제공되도록 하려면 웹사이트 페이지가 https:// 링크만 포함 개발자 포털 sites/default/settings.local.php (클라우드)에 다음 코드를 추가해야 합니다. 또는 sites/default/settings.php (비공개 Cloud) 파일에서만 사용할 수 있습니다. 부하 분산기는 애플리케이션의 콘텐츠를 자동으로 변환하지 않기 때문에 HTML 페이지의 경우 이 코드는 클라이언트에 전달되는 모든 링크가 https://로 시작하도록 합니다.
부하 분산기로 TLS를 구성하려면 sites/default/settings.local.php (클라우드)에 다음 줄을 추가합니다. 또는 sites/default/settings.php (비공개 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://drupal.org/node/425990
- https://drupal.org/node/313145
- http://drupal.stackexchange.com/questions/102091/drupal-behind-a-ssl-offloading-reverse-proxy-is-this-config-correct
포털 트래픽을 HTTPS로 리디렉션
sites/default/settings.local.php (클라우드)를 업데이트하여 모든 포털 트래픽을 HTTPS로 리디렉션할 수 있습니다. 또는 sites/default/settings.php (비공개 Cloud) 파일에서만 사용할 수 있습니다. 필요한 업데이트는 동일한 네트워크에서 HTTPS로 리디렉션하는지 여부에 따라 여러 개의 호스트 이름을 사용할 수 있습니다
HTTPS로 리디렉션 동일한 호스트 이름에서
다음 코드를 sites/default/settings.local.php (클라우드)에 추가합니다. 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; } }