Nguon: Microsoft Learn · .NET 8.0

YARP Let's Encrypt

Nguồn: YARP Let's Encrypt

Gói NuGet LettuceEncrypt được đề cập trong bài viết này đã bị lưu trữ (archived) và không còn được hỗ trợ, do đó không khuyến nghị sử dụng gói này.

Giới thiệu

YARP có thể hỗ trợ tổ chức chứng chỉ (certificate authority) Let's Encrypt bằng cách sử dụng API của một dự án ASP.NET Core khác, LettuceEncrypt. Nó cho phép bạn thiết lập TLS (Transport Layer Security - bảo mật tầng truyền tải) giữa client và YARP với cấu hình tối thiểu.

Yêu cầu

Thêm dependency của gói LettuceEncrypt:

xml
<PackageReference Include="LettuceEncrypt" Version="1.1.2" />

Cấu hình

Có các tùy chọn bắt buộc cho LettuceEncrypt cần được thiết lập. Xem ví dụ appsettings.json:

json
{
  "Urls": "http://*:80;https://*:443",

  "Logging": { ... },

  "ReverseProxy": {
    "Routes": { ... },
    "Clusters": { ... }
  },

  "LettuceEncrypt": {
    // Đặt giá trị này để tự động chấp nhận các điều khoản dịch vụ của tổ chức
    // chứng chỉ của bạn.
    // Nếu bạn không đặt điều này trong cấu hình, bạn sẽ cần nhấn "y" mỗi khi
    // ứng dụng khởi động
    "AcceptTermsOfService": true,

    // Bạn phải chỉ định ít nhất một tên miền
    "DomainNames": [ "example.com" ],

    // Bạn phải chỉ định địa chỉ email để đăng ký với tổ chức chứng chỉ
    "EmailAddress": "it-admin@example.com"
  }
}

Cập nhật Services (Dịch vụ)

csharp
services.AddLettuceEncrypt();

Xem thêm các tùy chọn khác (ví dụ: lưu chứng chỉ) trong phần ví dụ của README dự án LettuceEncrypt.

Kestrel Endpoints (Điểm cuối Kestrel)

Nếu dự án của bạn đang sử dụng rõ ràng các tùy chọn Kestrel để cấu hình địa chỉ IP, cổng, hoặc cài đặt HTTPS, hãy gọi UseLettuceEncrypt:

Ví dụ:

csharp
var builder = WebApplication.CreateBuilder(args);

builder.WebHost.ConfigureKestrel(kestrel =>
{
    kestrel.ListenAnyIP(443, portOptions =>
    {
        portOptions.UseHttps(h =>
        {
            h.UseLettuceEncrypt(kestrel.ApplicationServices);
        });
    });
});