Giới thiệu về TLS/SSL

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ảo mật tầng truyền tải (TLS), tiền thân là Lớp cổng bảo mật (SSL), là công nghệ bảo mật tiêu chuẩn để thiết lập đường liên kết đã mã hoá giữa máy chủ web và ứng dụng web, chẳng hạn như trình duyệt hoặc ứng dụng. Đường liên kết được mã hoá đảm bảo mọi dữ liệu truyền giữa máy chủ và ứng dụng vẫn ở chế độ riêng tư. Để sử dụng TLS, ứng dụng sẽ gửi một yêu cầu bảo mật tới máy chủ bằng cách sử dụng giao thức HTTPS đã mã hoá, thay vì giao thức HTTP chưa mã hoá.

Edge hỗ trợ TLS một chiều và TLS hai chiều trong cả hoạt động triển khai trên đám mây và tại cơ sở hạ tầng riêng (đối với các phiên bản TLS được hỗ trợ, hãy xem phần Phần mềm được hỗ trợ và phiên bản được hỗ trợ). TLS một chiều cho phép ứng dụng TLS xác minh danh tính của máy chủ TLS. Ví dụ: một ứng dụng chạy trên điện thoại Android (máy khách) có thể xác minh danh tính của Edge API (máy chủ).

Apigee cũng hỗ trợ một phương thức xác thực mạnh mẽ hơn bằng cách sử dụng TLS (Bảo mật tầng truyền tải) hoặc ứng dụng khách. Bạn thường triển khai TLS hai chiều để tăng cường bảo mật hai đầu và bảo vệ dữ liệu của mình khỏi các cuộc tấn công từ ứng dụng, chẳng hạn như giả mạo ứng dụng khách hoặc các cuộc tấn công xen giữa. Trong TLS hai chiều, ứng dụng xác minh danh tính của máy chủ, sau đó máy chủ xác minh danh tính của ứng dụng.

Thuật ngữ TLS

Bạn nên nắm rõ các thuật ngữ và khái niệm quan trọng sau đây trước khi định cấu hình TLS:

Thuật ngữ

Định nghĩa

Canada

Tổ chức phát hành chứng chỉ. Một pháp nhân đáng tin cậy, chẳng hạn như SScan hoặc VeriSign, dùng để phát hành các chứng chỉ và xác thực tính xác thực của một chứng chỉ. Một loại chứng chỉ, được gọi là chứng chỉ tự ký, không yêu cầu CA.

Chuỗi chứng chỉ

Thông thường, bạn sẽ không có chứng chỉ được ký bằng khoá riêng tư gốc của CA. Thay vào đó, bạn có chứng chỉ của mình cùng với một hoặc nhiều chứng chỉ trung gian tạo thành một chuỗi. Chứng chỉ trung gian cuối cùng trong chuỗi thường được ký bằng khoá riêng tư gốc của CA.

Nhân viên hỗ trợ khách hàng

Yêu cầu ký chứng chỉ. CSR là một tệp được tạo trên máy chủ TLS dựa trên khoá riêng tư. CSR chứa khoá công khai và các thông tin khác như tên, vị trí và tên miền của tổ chức. CA ký CSR để tạo chứng chỉ TLS. Bạn thường tạo CSR khi chứng chỉ đã hết hạn và muốn gia hạn chứng chỉ đó.

Hàm DER

Quy tắc mã hoá phân biệt. Định dạng DER là dạng nhị phân của chứng chỉ thay vì định dạng ASCII PEM. Tệp này đôi khi có đuôi tệp là .der nhưng thường có đuôi tệp là .cer. Cách duy nhất để phân biệt tệp DER .cer và tệp PEM .cer là mở tệp trong trình chỉnh sửa văn bản và tìm câu lệnh BEGINEND. Tất cả các loại chứng chỉ và khoá riêng tư đều có thể được mã hoá theo định dạng DER. DER thường được sử dụng với các nền tảng Java.

Bí danh khoá

Bí danh khoá xác định duy nhất một mục trong kho khoá (chứng chỉ TLS và khoá riêng tư tương ứng) trong kho khoá.

Trong Apigee Edge, KeyAlias được gọi là alias khi bạn tải chứng chỉ/khoá lên kho khoá bằng giao diện người dùng hoặc API.

Kho khoá

Kho khoá là một kho lưu trữ chứa một hoặc nhiều chứng chỉ TLS và một khoá riêng tư tương ứng dùng để nhận dạng thực thể trong quá trình bắt tay TLS giữa Ứng dụng và Máy chủ.

Ở kết nối hướng bắc, Bộ định tuyến hoạt động như máy chủ và chứng chỉ của máy chủ được lưu trữ trong kho khoá của Apigee Edge.

Trên kết nối phía ngoài, Bộ xử lý thông báo đóng vai trò là máy khách và máy chủ phụ trợ đóng vai trò là máy chủ. Chứng chỉ ứng dụng và khoá riêng tư của chứng chỉ đó được lưu trữ trong kho khoá của Apigee Edge.

P7B

Định dạng PKCS #7 hoặc P7B thường được lưu trữ ở định dạng Base64 ASCII và có đuôi tệp là .p7b hoặc .p7c. Chứng chỉ P7B chứa các câu lệnh -----BEGIN PKCS7----------END PKCS7-----. Tệp P7B chỉ chứa các chứng chỉ và chứng chỉ chuỗi, không chứa khoá riêng tư.

PEM

Định dạng Thư được tăng cường bảo vệ quyền riêng tư (PEM) là định dạng ASCII dựa trên văn bản, là định dạng mã hoá Base64 của định dạng Quy tắc mã hoá phân biệt nhị phân (DER). Bạn có thể mở chứng chỉ PEM trong bất kỳ Trình chỉnh sửa văn bản nào và nội dung chứng chỉ thực tế được phân tách giữa các câu lệnh -----BEGIN CERTIFICATE----------END CERTIFICATE-----.

Tệp này tuân thủ định dạng X.509 để lưu trữ chứng chỉ, chuỗi chứng chỉ hoặc khoá riêng tư. Nếu chứng chỉ hoặc khoá riêng tư của bạn không được xác định bằng tệp PEM, bạn có thể chuyển đổi chứng chỉ hoặc khoá đó thành tệp PEM bằng các tiện ích như OpenSSL.

PKCS #12/PFX Định dạng PKCS #12 hoặc PFX là định dạng nhị phân để lưu trữ chứng chỉ máy chủ, mọi chứng chỉ trung gian và khoá riêng tư trong một tệp có thể mã hoá. Tệp Pfx thường có đuôi như .pfx và .p12. Tệp Pf thường được dùng trên máy Windows để nhập và xuất các chứng chỉ cũng như khoá riêng tư.

Khoá riêng tư

Được dùng trên máy chủ TLS để giải mã dữ liệu. Chỉ máy chủ TLS mới có khoá riêng tư. Khoá riêng tư này không được chia sẻ với các ứng dụng TLS.

Khoá công khai

Dùng để mã hoá dữ liệu được gửi từ một ứng dụng TLS đến một máy chủ TLS. Khoá công khai được đưa vào chứng chỉ. Tất cả ứng dụng TLS đều có một bản sao khoá công khai của máy chủ.

Tài liệu tham khảo Tệp đối chiếu cung cấp cấp độ gián tiếp cho kho khoá; do đó, các thay đổi về kho khoá không yêu cầu cập nhật máy chủ ảo, miễn là cùng một tệp tham chiếu và bí danh khoá được duy trì. Việc này giúp bạn tự thực hiện những thay đổi này và giảm bớt các phần phụ thuộc thông qua Nhóm hỗ trợ Apigee.

Chứng chỉ tự ký

Chứng chỉ không do một CA đáng tin cậy ký. Nhà phát hành và chủ thể giống hệt nhau; họ được ký bằng khoá riêng tư khớp với khoá công khai mà chúng chứa.

SNI

Chỉ báo tên máy chủ. Cho phép phân phát nhiều mục tiêu HTTPS từ cùng một địa chỉ IP và cổng mà không yêu cầu các mục tiêu đó sử dụng cùng một chứng chỉ.

Chứng chỉ TLS

Tệp kỹ thuật số xác định một thực thể trong một giao dịch TLS. Một chứng chỉ hoặc cert có thể được dùng để xác định máy chủ TLS và ứng dụng TLS, tuỳ thuộc vào cấu hình TLS.

Truststore

Chứa các chứng chỉ đáng tin cậy trên một ứng dụng TLS dùng để xác thực chứng chỉ của máy chủ TLS được cung cấp cho ứng dụng. Những chứng chỉ này thường là chứng chỉ tự ký hoặc chứng chỉ không do một CA đáng tin cậy ký.

Trên kết nối hướng bắc, chứng chỉ của ứng dụng khách được lưu trữ trong kho lưu trữ tin cậy của Apigee Edge. Bạn chỉ bắt buộc phải thực hiện việc này nếu đã định cấu hình TLS hai chiều giữa ứng dụng và Apigee.

Ở kết nối phía ngoài, chứng chỉ của máy chủ phụ trợ được lưu trữ trong kho lưu trữ tin cậy của Apigee Edge. Đây là yêu cầu bắt buộc nếu bạn muốn xác minh chứng chỉ của phần phụ trợ trong Apigee Edge theo phương thức giao tiếp một chiều hoặc hai chiều giữa Apigee Edge và máy chủ phụ trợ.

Apigee Edge không có đối tượng kho lưu trữ tin cậy riêng biệt. Do đó, kho tin cậy được tạo dưới dạng một đối tượng kho khoá, nhưng được tham chiếu dưới dạng kho khoá tin cậy ở bất cứ nơi nào cửa hàng đó được sử dụng (ví dụ: trong máy chủ lưu trữ ảo, điểm cuối mục tiêu, máy chủ đích, v.v.).

Người tổ chức ảo

Máy chủ ảo đại diện cho điểm cuối của API Apigee cho các ứng dụng khách. Đây là một thực thể hỗ trợ lưu trữ nhiều tên miền (có cách xử lý riêng cho từng tên) trên một máy chủ duy nhất (hoặc nhóm máy chủ). Điều này cho phép một máy chủ chia sẻ các tài nguyên (chẳng hạn như chu kỳ của bộ nhớ và bộ xử lý) mà không yêu cầu mọi dịch vụ được cung cấp phải dùng cùng một tên máy chủ.

Máy chủ ảo có thể phân phát lưu lượng truy cập HTTP hoặc HTTPS (được bật SSL).

Máy chủ ảo có hỗ trợ SSL có thể được định cấu hình ở chế độ TLS một chiều hoặc hai chiều. Ứng dụng này được định cấu hình như sau:

  • Một hoặc nhiều hostalias (tên DNS của điểm cuối API).
  • Cổng
  • Kho khoá
  • Bí danh khoá để xác định duy nhất một trong các chứng chỉ máy chủ trong kho khoá.
  • Không bắt buộc là một kho lưu trữ tin cậy (trong TLS hai chiều, trong đó tính năng xác thực ứng dụng được bật).

TLS/SSL một chiều

Hình sau đây minh hoạ hoạt động dùng tay TLS/SSL để xác thực một chiều giữa ứng dụng TLS và máy chủ TLS:

Trong cấu hình TLS một chiều, quá trình bắt tay diễn ra như sau:

  • Ứng dụng gửi yêu cầu phiên đến máy chủ.
  • Máy chủ phản hồi bằng một chứng chỉ, trong đó có chứa khoá công khai của chứng chỉ đó. Chứng chỉ này đến từ kho khoá của máy chủ, cũng chứa khoá riêng tư của máy chủ. Khoá riêng tư không bao giờ được gửi cho ứng dụng.
  • Đối với chứng chỉ đã ký, ứng dụng sử dụng một kho lưu trữ tin cậy chứa các chứng chỉ máy chủ và khoá công khai để xác thực rằng chuỗi chứng chỉ này đã được một Tổ chức phát hành chứng chỉ (CA) đáng tin cậy ký.
  • Máy khách và máy chủ trao đổi thêm một số thông báo để xác thực khoá.
  • Máy khách bắt đầu quá trình chuyển dữ liệu TLS với máy chủ.

Hình sau đây minh hoạ quá trình bắt tay TLS/SSL bằng một kho lưu trữ tin cậy tuỳ chọn trên ứng dụng:

Nếu máy chủ TLS dùng một chứng chỉ tự ký hoặc một chứng chỉ chưa do một CA đáng tin cậy ký, thì bạn sẽ tạo một kho lưu trữ tin cậy trên máy khách. Ứng dụng sẽ điền sẵn vào kho tin cậy của mình các chứng chỉ máy chủ và khoá công khai mà ứng dụng tin tưởng. Khi ứng dụng nhận được một chứng chỉ, chứng chỉ đến sẽ được xác thực dựa trên các chứng chỉ trong kho tin cậy của chứng chỉ đó.

Trong TLS một chiều, Edge có thể là máy chủ hoặc ứng dụng như sau:

  • Edge trong vai trò máy chủ TLS

    Edge là máy chủ lưu trữ điểm cuối TLS, trong đó điểm cuối TLS tương ứng với một proxy API được triển khai cho một máy chủ ảo. Ứng dụng khách là một ứng dụng đang cố gắng truy cập proxy API. Trong trường hợp này, Edge có kho khoá chứa chứng chỉ và khoá riêng tư.

  • Edge trong vai trò ứng dụng TLS

    Edge đóng vai trò là ứng dụng truy cập vào dịch vụ phụ trợ. Trong trường hợp này, dịch vụ phụ trợ tương ứng với máy chủ lưu trữ điểm cuối TLS. Do đó, máy chủ phụ trợ có một kho khoá chứa chứng chỉ và khoá riêng tư.

TLS hai chiều

Hình dưới đây minh hoạ cơ chế xử lý TLS/SSL trong quá trình xác thực TLS hai chiều giữa ứng dụng và máy chủ:

Trong TLS hai chiều, quá trình bắt tay diễn ra như sau:

  • Cả máy khách và máy chủ đều có kho khoá riêng. Kho khoá của ứng dụng chứa chứng chỉ và khoá riêng tư, còn kho khoá của máy chủ chứa chứng chỉ và khoá riêng tư.
  • Máy chủ TLS hiển thị chứng chỉ cho ứng dụng TLS để tự xác thực. Sau đó, ứng dụng sẽ xác minh danh tính của máy chủ trước khi gửi chứng chỉ đến máy chủ.
  • Ứng dụng TLS hiển thị chứng chỉ cho máy chủ TLS để tự xác thực với máy chủ.

Hình sau đây minh hoạ quá trình bắt tay TLS thông qua một kho lưu trữ tin cậy không bắt buộc:

Trong trường hợp này, quá trình bắt tay sẽ diễn ra như sau:

  • Nếu máy chủ TLS dùng một chứng chỉ tự ký hoặc một chứng chỉ không do một CA đáng tin cậy ký, thì bạn sẽ tạo một kho lưu trữ tin cậy trên ứng dụng. Ứng dụng có một bản sao của chứng chỉ của máy chủ trong kho lưu trữ tin cậy. Trong quá trình trao đổi tay qua TLS, ứng dụng so sánh chứng chỉ trong kho tin cậy của mình với chứng chỉ được gửi từ máy chủ để xác minh danh tính của máy chủ.
  • Nếu ứng dụng TLS dùng một chứng chỉ tự ký hoặc một chứng chỉ không do một CA đáng tin cậy ký, thì bạn sẽ tạo một kho tin cậy trên máy chủ.Máy chủ có bản sao của chứng chỉ của ứng dụng trong kho lưu trữ tin cậy. Trong quá trình tiếp tay qua TLS, máy chủ so sánh chứng chỉ trong kho lưu trữ tin cậy với chứng chỉ được gửi từ ứng dụng khách để xác minh danh tính của ứng dụng.

Ứng dụng hoặc máy chủ hoặc cả hai đều có thể sử dụng kho lưu trữ tin cậy.

Trong TLS hai chiều, Edge có thể là máy chủ hoặc ứng dụng như sau:

  • Edge trong vai trò máy chủ

    Edge là máy chủ lưu trữ điểm cuối TLS, trong đó điểm cuối TLS tương ứng với một proxy API. Ứng dụng khách là một ứng dụng đang cố gắng truy cập proxy API. Trong trường hợp này, Edge có một kho khoá chứa chứng chỉ và khoá riêng tư, đồng thời cần có một kho lưu trữ tin cậy chứa chứng chỉ và chuỗi CA của ứng dụng.

  • Edge trong vai trò khách hàng

    Edge đóng vai trò là ứng dụng khách truy cập vào dịch vụ phụ trợ. Trong trường hợp này, dịch vụ phụ trợ tương ứng với máy chủ lưu trữ điểm cuối TLS. Do đó, máy chủ phụ trợ có một kho khoá chứa chứng chỉ và khoá riêng tư.

    Edge cũng phải xác định một kho khoá chứa chứng chỉ cần thiết để tự xác thực với dịch vụ phụ trợ và có thể chọn một kho tin cậy chứa chứng chỉ từ máy chủ phụ trợ nếu máy chủ sử dụng chứng chỉ tự ký hoặc chứng chỉ chưa được ký bởi một CA đáng tin cậy.

Điều quan trọng cần nhớ là Edge đủ linh hoạt để hỗ trợ TLS hai chiều, bất kể bạn quyết định định cấu hình như thế nào.

Hỗ trợ SNI

Edge hỗ trợ sử dụng Chỉ báo tên máy chủ (SNI) từ proxy API đến Edge, trong đó Edge đóng vai trò là máy chủ TLS, và từ Edge đóng vai trò là máy chủ TLS, trong đó Edge đóng vai trò là ứng dụng TLS, trong cả quá trình cài đặt trên Đám mây và đám mây riêng tư.

Với SNI, là một phần mở rộng của TLS/SSL, nhiều mục tiêu HTTPS có thể được phân phát qua cùng một địa chỉ IP và cổng mà không yêu cầu các mục tiêu đó sử dụng cùng một chứng chỉ.

Để biết thông tin về cách bật SNI để cài đặt tại chỗ, hãy xem phần Sử dụng SNI với Edge.

Về hướng bắc và nam

Trong Apigee, hướng bắc là điểm cuối API mà các ứng dụng khách dùng để gọi Proxy API. Thông thường, Bộ định tuyến là điểm truy cập trong Apigee Edge và xử lý các yêu cầu gửi đến cho Apigee Edge. Do đó, trong Apigee, điểm cuối dùng để giao tiếp giữa ứng dụng khách và Apigee Edge (Bộ định tuyến) được gọi là hướng bắc.

Trong Apigee, hướng nam là điểm cuối mục tiêu mà Apigee dùng để giao tiếp với máy chủ phụ trợ. Do đó, trong Apigee, điểm cuối dùng để giao tiếp giữa Apigee Edge (Trình xử lý tin nhắn) và máy chủ phụ trợ được gọi là hướng nam. Trình xử lý tin nhắn là một thành phần của Apigee Edge, giúp gửi các yêu cầu API đến các máy chủ mục tiêu phụ trợ.

Hình ảnh sau đây minh hoạ các đường kết nối về hướng bắc và nam của Apigee:

Dòng chảy về hướng Bắc và hướng Nam. Ứng dụng khách cho Bộ định tuyến có hướng bắc. Sau đó đến Trình xử lý thư. Bộ xử lý thông báo cho Máy chủ phụ trợ hướng về phía nam.