Nguon: Microsoft Learn · .NET 8.0

YARP HTTPS & TLS

Nguồn: YARP HTTPS & TLS

HTTPS (HTTP qua các kết nối được mã hóa TLS) là cách tiêu chuẩn để thực hiện các HTTP request trên Internet vì lý do bảo mật, tính toàn vẹn và quyền riêng tư. Có một số cân nhắc về HTTPS/TLS cần tính đến khi sử dụng reverse proxy như YARP.

TLS Termination (Kết thúc TLS)

YARP là một level 7 HTTP proxy (proxy HTTP tầng 7), có nghĩa là các kết nối HTTPS/TLS đến được proxy giải mã hoàn toàn để nó có thể xử lý và chuyển tiếp các HTTP request. Điều này thường được gọi là TLS Termination. Các kết nối đi đến các destination có thể được mã hóa hoặc không, tùy thuộc vào cấu hình được cung cấp.

TLS tunneling (CONNECT) (Đường hầm TLS)

TLS tunneling sử dụng phương thức CONNECT là một tính năng được sử dụng để proxy các request mà không giải mã chúng. Điều này không được hỗ trợ bởi YARP và không có kế hoạch thêm nó.

Cấu hình các kết nối đến

YARP có thể chạy trên tất cả các ASP.NET Core server và việc cấu hình HTTPS/TLS cho các kết nối đến là đặc thù của server. Kiểm tra tài liệu cho Kestrel, IIS, và Http.Sys để biết chi tiết cấu hình.

Advanced TLS filters với Kestrel (Bộ lọc TLS nâng cao)

Kestrel hỗ trợ chặn các kết nối đến trước khi bắt tay TLS. YARP bao gồm API TlsFrameHelper có thể phân tích bắt tay TLS thô và cho phép bạn thu thập telemetry tùy chỉnh hoặc từ chối kết nối sớm. Các API này không thể sửa đổi bắt tay TLS hoặc giải mã luồng dữ liệu. Xem ví dụ này.

Cấu hình các kết nối đi

Để bật mã hóa TLS khi giao tiếp với một destination, hãy chỉ định địa chỉ destination là https như "https://destinationHost". Xem tài liệu cấu hình để biết các ví dụ.

Tên host được chỉ định trong địa chỉ destination sẽ được sử dụng cho bắt tay TLS theo mặc định, bao gồm SNI (Server Name Indication) và xác thực chứng chỉ server. Nếu việc proxy original host header được bật, giá trị đó sẽ được sử dụng cho bắt tay TLS thay thế. Nếu cần sử dụng giá trị host tùy chỉnh thì hãy sử dụng transform RequestHeader để đặt host header.

Các kết nối đi đến các destination được xử lý bởi HttpClient/SocketsHttpHandler. Một instance và cài đặt khác nhau có thể được cấu hình cho mỗi cluster. Một số cài đặt có sẵn trong mô hình cấu hình, trong khi những cài đặt khác chỉ có thể được cấu hình bằng code. Xem tài liệu HttpClient để biết chi tiết.

Các chứng chỉ server đích cần được tin tưởng bởi proxy hoặc cần áp dụng xác thực tùy chỉnh thông qua cấu hình HttpClient.