Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và liên kết chứng chỉ TLS / SSL Let’s Encrypt miễn phí cho một trang web trên máy chủ web IIS chạy trên Windows Server 2019/2016/2012 R2.

Nội dung:

  • Let’s Encrypt và ACME Clients dành cho Windows
  • WACS Clint để cài đặt Chứng chỉ TLS Let’s Encrypt trong IIS trên Windows Server
  • Chuyển hướng từ HTTP sang HTTPS bằng cách sử dụng IIS URL Rewrite
  • Sử dụng Chứng chỉ Let’s Encrypt với RDS Gateway &Web Access

Let’s Encrypt và ACME Clients dành cho Windows

Chứng chỉ TLS / SSL của một trang web cho phép bảo vệ dữ liệu người dùng được truyền qua mạng công cộng chống lại kẻ trung gian ( MITM ) tấn công và cung cấp tính toàn vẹn của dữ liệu. Trung tâm chứng nhận tổ chức phi lợi nhuận Let’s Encrypt cho phép bạn tự động phát hành chứng chỉ TLS mã hóa X.509 miễn phí cho mã hóa HTTPS bằng cách sử dụng API. Chỉ các chứng chỉ xác thực miền hết hạn sau 90 ngày mới được cấp (giới hạn 50 chứng chỉ cho một miền mỗi tuần). Nhưng bạn có thể tự động gia hạn chứng chỉ SSL cho trang web của mình bằng cách lập lịch đơn giản.

Giao diện API Let’s Encrypt để tự động cấp chứng chỉ được gọi là Môi trường quản lý chứng chỉ tự động ( ACME ) API. Có 3 cách triển khai ứng dụng khách ACME API phổ biến nhất cho hệ thống Windows:

  1. Windows ACME Simple (WACS) là công cụ nhắc lệnh để tương tác phát hành chứng chỉ SSL và liên kết nó với một trang cụ thể trên máy chủ web IIS của bạn;
  2. Powershell ACMESharp mô-đun - là thư viện PowerShell với một số lệnh ghép ngắn để tương tác với máy chủ Let’s Encrypt qua ACME API;
  3. Chứng nhận là một công cụ đồ họa của Windows để quản lý tương tác chứng chỉ SSL bằng API ACME.

WACS Hãy đăng ký để cài đặt Chứng chỉ TLS Let’s Encrypt trong IIS trên Windows Server

Cách dễ nhất để nhận chứng chỉ SSL từ Let’s Encrypt là sử dụng công cụ bảng điều khiển Windows ACME Simple ( WACS ) (trước đây dự án này có tên là LetsEncrypt-Win-Simple ). Đây là một trình hướng dẫn đơn giản cho phép bạn chọn một trong các trang web chạy trên IIS, tự động phát hành và liên kết chứng chỉ SSL với nó.

Giả sử, bạn có một trang web IIS đang chạy trên Windows Server 2016. Nhiệm vụ của bạn là chuyển trang web sang chế độ HTTPS bằng cách cài đặt chứng chỉ SSL miễn phí từ Let’s Encrypt.

Tải xuống bản phát hành mới nhất của ứng dụng WACS từ GitHub https://github.com/PKISharp/win-acme/releases (trong trường hợp của tôi, đây là phiên bản v2.0.10 - tên tệp là win-acme.v2 .0.10.444.zip ).

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Giải nén kho lưu trữ zip vào thư mục sau trên máy chủ nơi IIS được cài đặt:c:\inetpub\letsencrypt

Bạn phải cài đặt .NET Framework 4.7.2 trở lên để sử dụng Win-Acme (Làm cách nào để kiểm tra phiên bản .NET Framework của bạn đã được cài đặt?).

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Mở dấu nhắc lệnh nâng cao, đi tới thư mục c:\ inetpub \ letsencrypt và chạy wacs.exe . Điều này sẽ khởi chạy tạo chứng chỉ Let’s Encrypt tương tác và liên kết với trình hướng dẫn trang web IIS. Để nhanh chóng tạo chứng chỉ mới, hãy chọn N: - Tạo chứng chỉ mới (đơn giản cho IIS) .

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Tiếp theo, bạn cần chọn loại chứng chỉ. Trong ví dụ của chúng tôi, không cần sử dụng chứng chỉ có bí danh (nhiều SAN - Tên Thay thế Chủ đề), vì vậy chỉ cần chọn một mục 1. Liên kết đơn của một trang web IIS . Nếu bạn cần chứng chỉ Ký tự đại diện, hãy chọn tùy chọn 3 .

Sau đó, tiện ích sẽ hiển thị danh sách các trang web đang chạy trên IIS và nhắc bạn chọn một trang web để cấp chứng chỉ.

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Chỉ định địa chỉ email của bạn mà thông báo về các vấn đề gia hạn chứng chỉ cũng như các thông báo và lạm dụng quan trọng khác sẽ được gửi đến (bạn có thể chỉ định nhiều địa chỉ email được phân tách bằng dấu phẩy). Nó vẫn phải đồng ý với các điều khoản sử dụng và Windows ACME Simple sẽ kết nối với máy chủ Let’s Encrypt và cố gắng tự động tạo chứng chỉ SSL mới cho trang web của bạn.

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Quá trình tạo và cài đặt chứng chỉ SSL Let’s Encrypt cho IIS hoàn toàn tự động.

Theo mặc định, xác thực miền được thực hiện trong xác thực http-01 (Tự đăng) chế độ. Để làm điều này, bạn phải có bản ghi DNS miền trỏ đến máy chủ web của bạn. Khi chạy WACS ở chế độ thủ công (tùy chọn đầy đủ), bạn có thể chọn loại xác thực - 4 [http-01] Tạo ứng dụng tạm thời trong IIS (được khuyến nghị) . Trong trường hợp này, một ứng dụng nhỏ sẽ được tạo trên máy chủ web IIS, qua đó máy chủ Let’s Encrypt sẽ có thể thực hiện xác thực miền.

Lưu ý . Trong quá trình xác thực TLS / HTTP, trang web của bạn phải có thể truy cập được từ Internet bằng tên DNS đầy đủ của nó qua các giao thức HTTP (80 / TCP) và HTTPS (443 / TCP).

Công cụ WACS lưu khóa cá nhân của chứng chỉ (* .pem), chính chứng chỉ và một số tệp khác trong C:\ Users \% username% \ AppData \ Roaming \ letsencrypt-win-simple . Sau đó, nó sẽ cài đặt chứng chỉ SSL Let’s Encrypt được tạo ở chế độ nền và liên kết nó với trang IIS của bạn. Nếu có chứng chỉ SSL được cài đặt trên trang web (ví dụ:chứng chỉ tự ký), chứng chỉ này sẽ được thay thế bằng chứng chỉ mới.

Trong Trình quản lý IIS, hãy mở Liên kết trang web cài đặt cho trang web của bạn và xác minh rằng nó sử dụng chứng chỉ do Let’s Encrypt Authority X3 cấp .

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Chứng chỉ này sẽ xuất hiện dưới dạng đáng tin cậy trên máy tính của bạn nếu bạn đã cập nhật Tổ chức phát hành chứng chỉ gốc đáng tin cậy của Windows.

Bạn có thể tìm chứng chỉ Let’s Encrypt IIS trong kho chứng chỉ máy tính trong Lưu trữ web -> Chứng chỉ .

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Windows ACME Simple tạo một công việc mới trong Bộ lập lịch tác vụ Windows (win-acme-renew (acme-v02.api.letsencrypt.org) ) để tự động gia hạn chứng chỉ. Nhiệm vụ bắt đầu hàng ngày và việc gia hạn chứng chỉ được thực hiện sau 60 ngày. Tác vụ này chạy lệnh:

C:\inetpub\letsencrypt\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org"

Bạn có thể sử dụng lệnh tương tự để cập nhật chứng chỉ Let’s Encrypt theo cách thủ công.

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Chuyển hướng từ HTTP sang HTTPS bằng cách sử dụng IIS URL Rewrite

Để chuyển hướng tất cả lưu lượng HTTP đến đến URL trang web HTTPS, hãy cài đặt Mô-đun ghi lại URL của Microsoft (https://www.iis.net/downloads/microsoft/url-rewrite) và đảm bảo rằng tùy chọn Yêu cầu SSL bị tắt trong cài đặt trang web. Bây giờ, hãy định cấu hình chuyển hướng trong web.config với các quy tắc viết lại:

<system.webServer>
<rewrite>
<rules>
<rule name=”HTTP to HTTPS Redirect” enabled=”true” stopProcessing=”true”>
<match url=”(.*)” />
<conditions>
<add input=”{HTTPS}” pattern=”off” ignoreCase=”true” />
</conditions>
<action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}” appendQueryString=”true” redirectType=”Permanent” />
</rule>
</rules>
</rewrite>
</system.webServer>

Bạn cũng có thể định cấu hình chuyển hướng lưu lượng truy cập bằng cách sử dụng tiện ích Viết lại URL thông qua Giao diện người quản lý IIS. Chọn Trang web -> tên trang web của bạn -> Viết lại URL .

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Tạo quy tắc mới Thêm quy tắc -> Quy tắc trống .

Chỉ định tên quy tắc và thay đổi các giá trị tham số sau:

  • URL được yêu cầu :Khớp với mẫu
  • Sử dụng :Biểu thức chính quy
  • Mẫu :(. *)

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Trong Điều kiện , thay đổi Nhóm lôgic :Khớp tất cả và nhấp vào Thêm . Chỉ định các cài đặt sau:

  • Đầu vào điều kiện: {HTTPS}
  • Kiểm tra xem chuỗi đầu vào: Khớp với mẫu
  • Mẫu: ^ TẮT $

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Bây giờ trong khối Hành động, hãy chọn:

  • Loại Hành động: Chuyển hướng
  • URL chuyển hướng :https:// {HTTP_HOST} / {R:1}
  • Loại chuyển hướng :Vĩnh viễn (301)

Mở trình duyệt và cố gắng mở trang web của bạn bằng địa chỉ HTTP; bạn sẽ được tự động chuyển hướng đến URL HTTPS.

Sử dụng chứng chỉ Let’s Encrypt với RDS Gateway &Web Access

Nếu bạn sử dụng RDS Gateway hoặc RDS Web Access để kết nối người dùng bên ngoài với mạng công ty, bạn có thể sử dụng chứng chỉ SSL đáng tin cậy từ Let’s Encrypt thay vì chứng chỉ tự ký. Xem xét cách cài đặt chính xác chứng chỉ Let’s Encrypt để bảo mật Dịch vụ Máy tính Từ xa trên Windows Server.

Nếu vai trò RDSH cũng được cài đặt trên máy chủ Remote Desktop Gateway, bạn phải ngăn người dùng không phải quản trị viên truy cập vào thư mục chứa các tệp WACS (trong ví dụ của tôi là c:\ inetpub \ letsencrypt) cũng như chứng chỉ và khóa Let's mã hóa ( C:\ ProgramData \ win-acme) được lưu trữ.

Sau đó, chạy wacs.exe trên máy chủ RD Gateway, như được mô tả ở trên. Chọn trang IIS mong muốn (thường là Trang web mặc định . Let’s Encrypt sẽ cấp cho bạn một chứng chỉ mới và liên kết nó với trang web IIS và tác vụ gia hạn chứng chỉ tự động sẽ xuất hiện trong Task Scheduler.

Bạn có thể xuất thủ công chứng chỉ này và liên kết nó với các dịch vụ RDS được yêu cầu thông qua liên kết SSL. Nhưng bạn sẽ phải thực hiện các bước này theo cách thủ công sau mỗi 60 ngày khi chứng chỉ Let’s Encrypt được gia hạn.

Chúng tôi có thể sử dụng tập lệnh PowerShell để tự động liên kết chứng chỉ SSL với Cổng RDS sau khi cập nhật chứng chỉ Let’s Encrypt.

Có một tập lệnh PowerShell sẵn sàng trong win-acme dự án - ImportRDGateway.ps1 ( https://github.com/PKISharp/win-acme/tree/master/dist/Scripts ), cho phép bạn cài đặt chứng chỉ SSL đã chọn cho Dịch vụ Máy tính Từ xa. Hạn chế chính của tập lệnh này là bạn phải chỉ định thủ công dấu vết của chứng chỉ mới:

ImportRDGateway.ps1 <certThumbprint>

Để tự động nhận bản gốc chứng chỉ từ trang web IIS được chỉ định, hãy sử dụng tập lệnh đã sửa đổi ImportRDGateway_Cert_From_IIS.ps1 (dựa trên ImportRDGateway.ps1).

Bạn có thể chạy tập lệnh này theo cách thủ công:

powershell -File ImportRDGateway_Cert_From_IIS.ps1

Nếu Cổng RDS của bạn chạy trên “Trang web mặc định” IIS với chỉ mục 0, bạn có thể sử dụng tập lệnh mà không cần thay đổi.

Để nhận ID trang web trên IIS, hãy mở bảng điều khiển PowerShell và chạy:

Import-Module WebAdministration
Get-ChildItem IIS:Sites|ft -AutoSize

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS Cột ID hiển thị chỉ mục của trang web của bạn, trừ đi một chỉ mục. Chỉ mục kết quả phải được chỉ định thay vì 0 trong dòng 27 của tập lệnh PowerShell:

$NewCertThumbprint = (Get-ChildItem IIS:SSLBindings)[0].Thumbprint

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Bây giờ, hãy mở win-acme-Rene tác vụ của bộ lập lịch và trên Tác vụ tab thêm một tác vụ mới chạy tập lệnh ImportRDGateway_Cert_From_IIS.ps1 sau khi cập nhật chứng chỉ SSL.

Để không thay đổi chính sách thực thi PowerShell, bạn có thể chạy tập lệnh bằng lệnh:

PowerShell.exe -ExecutionPolicy Bypass -File c:\inetpub\letsencrypt\ImportRDGateway_Cert_From_IIS.ps1

Cài đặt Chứng chỉ TLS / SSL Let’s Encrypt miễn phí trên Máy chủ Web IIS / RDS

Bây giờ tập lệnh để ràng buộc chứng chỉ SSL với RDS sẽ được thực thi ngay sau khi chứng chỉ Let’s Encrypt được gia hạn. Trong trường hợp này, dịch vụ RD Gateway sẽ tự động được khởi động lại bằng lệnh:

Restart-Service TSGateway

[aler] Khi dịch vụ TSGateway khởi động lại, tất cả các phiên người dùng hiện tại sẽ bị ngắt kết nối, vì vậy, bạn nên thay đổi tần suất khởi chạy tác vụ gia hạn chứng chỉ 60 ngày một lần. [/ alert]