y88 đánh bài - Đăng ký chứng chỉ SSL miễn phí bằng CertBot

bongda88 trực tuyến

Kích hoạt chứng chỉ SSL miễn phí cho Asp.Net Core

Ghi lại một cách đơn giản các bước đăng ký chứng chỉ SSL miễn phí cho blog của mình, để thuận tiện tham khảo khi cần thiết. Hiện nay có rất nhiều lựa chọn về chứng chỉ SSL miễn phí, nhưng tôi chọn Let’s Encrypt - một nhà cung cấp lâu năm và đáng tin cậy. Trong bài viết này, tôi sẽ trình bày chi tiết quá trình xin chứng chỉ SSL trên máy tính Windows tại nhà và triển khai nó vào ứng dụng Asp.Net Core. Để thực hiện, tôi sử dụng ACME client được Let’s Encrypt khuyến nghị là CertBot.

  1. Tải về và cài đặt CertBot (phiên bản win-amd64). Nếu bạn không tìm thấy phiên bản Windows trong release mới nhất trên GitHub, hãy tìm ở các phiên bản cũ, ví dụ như v2.9.0.
  2. Sau khi cài đặt xong, mở CMD với quyền quản trị viên.
  3. Ví dụ dưới đây là cho việc đăng ký chứng chỉ SSL cho một tên miền duy nhất. Quy trình cho tên miền con cũng tương tự, nhưng bạn sẽ cần tạo thêm 1 hoặc nhiều bản ghi DNS TXT hơn tùy theo số lượng tên miền trong chứng chỉ.
1
2
3
4
5
certbot certonly --manual --preferred-challenges=dns -d knay.net
Với tên miền con:
certbot certonly --manual --preferred-challenges=dns -d knay.net -d "*.knay.net"

COPY
  1. Theo dõi hướng dẫn từng bước trên màn hình. Điều quan trọng nhất là xác nhận quyền sở hữu tên miền. Nên chọn phương pháp xác minh qua DNS. Hãy thêm một bản ghi TXT theo yêu cầu, sau đó chờ cho đến khi bản ghi DNS được cập nhật hoàn toàn trước khi tiếp tục nhấn Enter để chuyển sang bước tiếp theo.
1
2
3
4
Kiểm tra bản ghi TXT DNS bằng Dig, ví dụ:


COPY
  1. Sau khi hoàn tất, CertBot sẽ tạo ra bốn tệp tin: cert.pem, chain.pem, privkey.pemfullchain.pem.
  2. Chứng chỉ SSL miễn phí có hiệu lực trong 90 ngày. Bạn chỉ cần lặp lại lệnh trên trước thời điểm hết hạn để gia hạn.

!Hình ảnh minh họa

Cấu hình Nginx (chuyển tiếp sang Docker cục bộ)

Dưới đây là cấu hình mẫu Nginx để chuyển hướng truy cập HTTP sang HTTPS và gửi yêu cầu tới dịch vụ đang chạy trên Docker:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
  listen 80;
  server_name knay.net www.knay.net;
  return 301 
}
server {
  listen 443 ssl;
  server_name knay.net www.knay.net;
  # Cấu hình chứng chỉ SSL
  ssl_certificate /certfilespath/fullchain.pem;
  ssl_certificate_key /certfilespath/privkey.pem;
  # root /www_path;
  # index index.html index.htm;

  location / {
    # index index.html index.htm;
    proxy_pass 
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

COPY

Bật SSL trong Asp.Net Core

Trong trường hợp sử dụng Asp.Net Core cùng Kestrel Server, bạn cần thực hiện một số thay đổi trong file Program.cs. Vì CertBot tạo ra các tệp PEM, nếu trực tiếp sử dụng chúng mà không chuyển đổi định dạng thì có thể gây lỗi. Do đó, ta cần chuyển đổi sang định dạng X509.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// Thiết lập đường dẫn lưu trữ chứng chỉ SSL
builder.Services.Configure<KestrelServerOptions>(options =>
{
  options.Listen(IPAddress.Any, 80);
  options.Listen(IPAddress.Any, 443, listenOptions =>
  {
    var certFilePath = Path.Combine(AppContext.BaseDirectory, "SOMEDIR", "fullchain.pem");
    var keyFilePath = Path.Combine(AppContext.BaseDirectory, "SOMEDIR", "privkey.pem");
    var certPem = File.ReadAllText(certFilePath);
    var keyPem = File.ReadAllText(keyFilePath);
    var x509 = X509Certificate2.CreateFromPem(certPem, keyPem);
    listenOptions.UseHttps(x509);
  });
});

COPY

Chuyển hướng mọi yêu cầu HTTP thành HTTPS:

1
2
3
4
var app = builder.Build();
app.UseHttpsRedirection();

COPY

Nếu bạn đang sử dụng chức năng nén dữ liệu HTTP, đừng quên bật chế độ hỗ trợ HTTPS:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
builder.Services.AddResponseCompression(options =>
{
  options.EnableForHttps = true;
  options.Providers.Add<BrotliCompressionProvider>();
  options.Providers.Add<GzipCompressionProvider>();
  options.MimeTypes = ResponseCompressionDefaults.MimeTypes;
});
builder.Services.Configure<BrotliCompressionProviderOptions>(options =>
{
  options.Level = CompressionLevel.Fastest;
});
builder.Services.Configure<GzipCompressionProviderOptions>(options =>
{
  options.Level = CompressionLevel.SmallestSize;
});

COPY

Tuyên bố: Trang web này tuân thủ giấy phép Creative Commons Attribution-NonCommercial-ShareAlike 4.0. Mọi sao chép đều phải ghi rõ nguồn từ Knay.Net ™
0 bình luận
Hủy trả lời

Built with Hugo
Theme Stack thiết kế bởi Jimmy