Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Bạn có thể định cấu hình cổng thông tin để sử dụng TLS. Quy trình cấu hình TLS cho cổng thông tin tuỳ thuộc vào cách bạn đã triển khai cổng:
- Đám mây: Định cấu hình TLS từ Pantheon hoặc Acquia, dịch vụ lưu trữ trên đám mây cho cổng.
- Apigee Edge cho Đám mây riêng tư: Định cấu hình TLS tại chỗ trên máy chủ lưu trữ cổng thông tin.
TLS và cổng
Hình ảnh sau đây hiển thị hai nơi cổng sử dụng TLS:
- Để giao tiếp giữa cổng thông tin và API quản lý Edge.
Cổng thông tin không hoạt động dưới dạng hệ thống độc lập. Thay vào đó, phần lớn thông tin được sử dụng bởi cổng thông tin thực sự được lưu trữ trên Edge, nơi Edge có thể được triển khai trên đám mây hoặc cơ sở hạ tầng riêng dưới dạng dịch vụ cài đặt Private Cloud. Khi cần, cổng thông tin sẽ tạo HTTP hoặc HTTPS yêu cầu API quản lý Edge để truy xuất thông tin hoặc gửi thông tin.
Khi tạo cổng thông tin, một trong những bước đầu tiên bạn phải thực hiện là chỉ định URL của API Quản lý Edge. Tuỳ thuộc vào cách định cấu hình API Quản lý Edge, URL đó có thể sử dụng TLS. Xem bài viết Tạo cổng thông tin dành cho nhà phát triển để tìm hiểu thêm. - Để giao tiếp giữa nhà phát triển và cổng thông tin.
Khi bạn sử dụng cổng Dịch vụ dành cho nhà phát triển để triển khai API, nhà phát triển của bạn sẽ đăng nhập vào cổng thông tin để đăng ký ứng dụng và nhận khoá API. Thông tin đăng nhập và khoá API mà bạn muốn gửi qua HTTPS để đảm bảo tính bảo mật của chúng. Chiến dịch này loại thông tin độc quyền nào sẽ được gửi qua HTTPS.
Cách bạn định cấu hình TLS cho trường hợp này phụ thuộc vào cách bạn đã triển khai cổng thông tin: Cloud hoặc Apigee Edge cho Private Cloud. Các phần sau đây mô tả cả hai trường hợp.
Định cấu hình TLS giữa cổng thông tin và API Quản lý Edge
Cấu hình của API quản lý Edge xác định liệu hoạt động giao tiếp có thể sử dụng hay không TLS (Bảo mật tầng truyền tải). Nếu API quản lý Edge được định cấu hình để sử dụng TLS, thì cổng có thể sử dụng HTTPS. Nếu không, cổng sẽ giao tiếp với Edge qua HTTP. Do đó, là nhà phát triển cổng thông tin, bạn chỉ cần biết cách định cấu hình Edge để đặt kết nối giữa cổng thông tin và Cạnh.
Để biết quy trình mà bạn sử dụng để định cấu hình kết nối với API quản lý Edge, hãy xem Tạo nhà phát triển cổng thông tin.
Phiên bản Edge dựa trên đám mây
Nếu cổng thông tin của bạn kết nối với phiên bản Edge dựa trên đám mây, thì URL của ứng dụng Edge Management API được Apigee định cấu hình sẵn để sử dụng TLS. Khi định cấu hình cổng thông tin, bạn truy cập vào API Quản lý Edge bằng cách sử dụng URL https://api.enterprise.apigee.com/v1.
Cài đặt Edge trên đám mây riêng tư
Đối với việc cài đặt Edge trên Đám mây riêng tư, URL của API quản lý Edge nằm trong
biểu mẫu:
http://EdgePrivateCloudIp:8080/v1
hoặc:
https://EdgePrivateCloudIp:TLSport/v1
trong đó EdgePrivateCloudIp là địa chỉ IP của giải pháp Quản lý Edge Máy chủ máy chủ và TLSport là cổng TLS cho API quản lý Edge. Ví dụ: số cổng có thể là 8443 hoặc thậm chí là 8080 dựa trên cấu hình Edge.
Định cấu hình TLS giữa nhà phát triển và cổng
Cách bạn định cấu hình TLS giữa các nhà phát triển và cổng tuỳ thuộc vào cách bạn triển khai cổng thông tin: Cloud hoặc Apigee Edge cho Private Cloud.
Cổng thông tin trên đám mây
Patheon
Pantheon cung cấp HTTPS tự động miễn phí cho mọi trang web trên nền tảng của mình thông qua Pantheon Global CDN và sử dụng Let's Encrypt. Xem thêm HTTPS trên CDN toàn cầu của Pantheon.
Acquia
Để bật TLS/SSL bằng Acquia, hãy xem Bật SSL.Edge dành cho riêng tư Cổng dịch vụ đám mây
Tất cả lượt cài đặt Đám mây riêng tư được đề xuất của Apigee bắt buộc phải có cổng phía sau một trình cân bằng tải, như minh hoạ dưới đây:
Do đó, đối với các bản cài đặt tại chỗ, bạn có hai tuỳ chọn để định cấu hình TLS:
- Định cấu hình TLS trên trình cân bằng tải: Định cấu hình TLS trên trình cân bằng tải chứ không phải trên cổng thông tin. Do đó, quy trình mà bạn sử dụng để định cấu hình TLS phụ thuộc vào trình cân bằng tải. Hãy xem tài liệu về trình cân bằng tải để biết thêm thông tin của bạn.
- Định cấu hình TLS trên chính cổng thông tin: Nếu cần, bạn có thể định cấu hình TLS trên máy chủ web lưu trữ cổng thông tin. Xem Định cấu hình cổng thông tin để sử dụng HTTPS để biết thêm thông tin.
Bạn phải lấy chứng chỉ TLS của riêng mình thì mới có thể triển khai cổng thông tin cho phiên bản phát hành công khai môi trường.
Đang định cấu hình chế độ cài đặt TLS bổ sung
Bạn có thể chỉnh sửa sites/default/settings.local.php (đám mây) hoặc sites/default/settings.php (Riêng tư Cloud) để thay đổi cấu hình TLS đối với cổng thông tin.
Khi chỉnh sửa tệp, hãy thêm các bản sao của hàm ini_set() để đặt thuộc tính. Để biết thêm thông tin về hàm này, hãy xem: http://php.net/manual/en/function.ini-set.php.
Bạn có thể đặt các thuộc tính sau trong sites/default/settings.local.php (đám mây) hoặc sites/default/settings.php (Riêng tư Cloud):
- cookie_httponly:
(Nên dùng) Chỉ định cookie đó là có thể truy cập chỉ qua giao thức HTTP. Thiết lập
thuộc tính dưới dạng:
ini_set('session.cookie_httponly', true); - session.cookie_secure
– (Không bắt buộc) Chỉ định rằng chỉ có thể gửi cookie qua kết nối an toàn. Tuy nhiên, việc này
có nghĩa là tất cả nội dung phải được phân phát qua HTTPS. Nếu bạn bật chế độ cài đặt này, trang web sẽ không
hoạt động qua HTTP. Đặt thuộc tính này là:
ini_set('session.cookie_secure', true); - gc_maxlifetime
và cookie_lifetime:
(Không bắt buộc) gc_lifeteime
chỉ định số giây mà sau đó dữ liệu có thể được làm sạch, và
cookie_lifetime chỉ định
vòng đời của cookie tính bằng giây. Đặt các thuộc tính này là:
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
Để biết thêm thông tin về cách thiết lập TLS giữa cổng thông tin dành cho nhà phát triển và ứng dụng, hãy xem Bật SSL để giao tiếp HTTPS bảo mật trên trang web tài liệu Pantheon.
Đang định cấu hình TLS với trình cân bằng tải
Để có hiệu suất tốt hơn, đôi khi trình cân bằng tải được định cấu hình để thực hiện việc chấm dứt TLS. Khi chấm dứt TLS, trình cân bằng tải sẽ giải mã thông báo được gửi qua https:// và chuyển tiếp những thông báo đó đến phần phụ trợ máy chủ qua http://. Như vậy sẽ tiết kiệm được máy chủ phụ trợ mất chi phí tự giải mã thông báo https://.
Nếu trình cân bằng tải chuyển tiếp thông báo http chưa mã hoá đến các máy chủ trong cùng một trung tâm dữ liệu, bảo mật không phải là vấn đề. Tuy nhiên, nếu trình cân bằng tải chuyển tiếp thông báo qua http:// đến máy chủ bên ngoài dữ liệu chẳng hạn như cổng thông tin dành cho nhà phát triển Apigee của bạn, các tin nhắn này không được mã hoá nên sẽ mở ra lỗ hổng bảo mật.
Nếu cổng thông tin dành cho nhà phát triển của bạn hỗ trợ các trình cân bằng tải đang sử dụng tính năng chấm dứt TLS, và bạn muốn phân phát tất cả lưu lượng truy cập trên https://, các trang trên trang web sẽ cần chỉ chứa các đường liên kết https:// và bạn sẽ cần thêm mã sau vào cổng thông tin dành cho nhà phát triển của mình sites/default/settings.local.php (đám mây) hoặc sites/default/settings.php (Riêng tư Cloud). Bởi vì trình cân bằng tải không tự động chuyển đổi nội dung của Các trang HTML, mã đảm bảo rằng tất cả các đường liên kết được chuyển đến ứng dụng đều bắt đầu bằng https://.
Để định cấu hình TLS bằng trình cân bằng tải, hãy thêm các dòng sau vào sites/default/settings.local.php (đám mây) hoặc sites/default/settings.php (Riêng tư 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; } }
Để biết thêm thông tin, hãy xem các bài viết sau:
- 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
Chuyển hướng lưu lượng truy cập cổng thông tin sang HTTPS
Bạn có thể chuyển hướng tất cả lưu lượng truy cập cổng thông tin sang HTTPS bằng cách cập nhật sites/default/settings.local.php (đám mây) của mình hoặc sites/default/settings.php (Riêng tư Cloud). Các bản cập nhật bắt buộc sẽ khác nhau tuỳ thuộc vào việc bạn có đang chuyển hướng đến HTTPS trên cùng một giao thức hay không hoặc nhiều tên máy chủ.
Đang chuyển hướng tới HTTPS trên cùng một tên máy chủ
Thêm mã sau vào sites/default/settings.local.php (cloud) của bạn hoặc sites/default/settings.php (Đám mây riêng tư) thành chuyển hướng đến tất cả lưu lượng truy cập cổng thông tin sang HTTPS trên cùng một tên máy chủ (ví dụ: *.devportal.apigee.io).
Trong trường hợp này, nếu nhà phát triển truy cập cổng thông tin của bạn tại live-example.devportal.apigee.io, nhưng cần truy cập vào chứng chỉ đã được tải lên cho devportal.example.com, thì yêu cầu này sẽ không thành công.
// 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; } }
Đang chuyển hướng tới HTTPS trên nhiều tên máy chủ
Thêm mã sau vào tệp sites/default/settings.local.php của bạn (đám mây) hoặc tệp sites/default/settings.php (Đám mây riêng tư) thành chuyển hướng đến tất cả lưu lượng truy cập cổng thông tin sang HTTPS trên nhiều tên máy chủ.
// 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; } }