[Server] Cài đặt free SSL/TLS Certificates từ Let's Encrypt trong IIS trên Windows Server

9/10/2020 4:54 PM | Kiến thức

Chứng chỉ SSL của một trang web cho phép bảo vệ dữ liệu của người dùng, giúp chống lại các cuộc tấn công man-in-the-middle (MITM) và cung cấp tính toàn vẹn dữ liệu. Trong bài viết này, chúng ta sẽ cùng cài đặt chứng chỉ SSL miễn phí của Let’s Encrypt vào một trang IIS chạy trên Windows Server

Sự khác biệt giữa HTTP và HTTPS?

Các trang web sử dụng HTTP gửi dữ liệu được nhập trong các trường biểu mẫu từ trình duyệt của bạn qua internet đến trang web đích bằng văn bản thuần túy. Điều này có nghĩa là bất kỳ ai giám sát mạng của bạn đều có thể đọc dữ liệu của bạn trong khi mạng đang truyền.

Khi sử dụng HTTPS, dữ liệu được gửi đến trang web từ trình duyệt của bạn sẽ được mã hóa. Những người nghe trộm trên mạng của bạn đã thắng được có thể đọc thông tin mà bạn đã gửi từ trình duyệt của bạn trên đường đến trang web. Điều này cực kỳ quan trọng khi nhập dữ liệu nhạy cảm như tên người dùng và mật khẩu.

Internet đang dần chuyển sang HTTPS. Trong nỗ lực tăng tốc thuật toán công cụ tìm kiếm này đang bắt đầu xếp hạng các trang web HTTPS cao hơn trong kết quả tìm kiếm. Google Chrome hiện làm nổi bật các trang web HTTP một cách rõ ràng là không bảo mật, vì vậy, nó đáng để thay đổi để giúp người dùng của bạn yên tâm.

Cách bật HTTPS trên IIS

Trong hướng dẫn này, tôi sẽ thực hiện các bước đơn giản liên quan đến việc lấy và cài đặt Let’s Encrypt SSL/TLS hợp lệ trên các trang web được lưu trữ trên IIS trong Windows Server. Tôi sẽ sử dụng trang web mặc định đi kèm với IIS làm ví dụ, nhưng các bước này áp dụng cho bất kỳ trang web, ứng dụng web hoặc API web nào khác.

Trước khi chúng tôi bắt đầu, có một vài điều cần lưu ý:

Let’s Encrypt chỉ cung cấp chứng chỉ DV (xác thực tên miền).
Chứng chỉ SSL / TLS chỉ tồn tại trong 90 ngày, nhưng sẽ được tự động gia hạn trước đó.
Có giới hạn số lượng chứng chỉ bạn có thể tạo mỗi tuần.

1. Cài đặt SSL

Hiện nay hầu hết các trang web đều đã hỗ trợ SSL (Secure Socket Layer). Nó mã hóa dữ liệu truyền đi giữa máy chủ web và trình duyệt và làm tăng tính bảo mật cho website. Ngoài ra, việc sử dụng SSL certificate (chứng chỉ SSL) là cần thiết bởi hiện tại Google đã ưu tiên xếp hạng website dựa theo giao thức https (HTTP + SSL), những website mà chỉ sử dụng giao thức http sẽ bị coi là “unsafe” (không an toàn).

Let’s Encrypt là nhà cung cấp chứng chỉ SSL miễn phí, tự động, hoạt động vì lợi ích của cộng đồng. Nó được quản lý bởi Internet Security Research Group (ISRG). Chi tiết bạn có thể tham khảo tại link: https://letsencrypt.org . Nó cho phép mọi người tự động nhận chứng chỉ SSL / TLS miễn phí thông qua API của họ. Mỗi chứng chỉ được xác nhận có thời hạn 90 ngày, vì thế khi gần hết hạn chúng ta phải tiếp tục gia hạn, điều đó cũng chẳng vấn đề gì vì chúng ta có thể auto việc đó với script đơn giản.

Phương pháp đơn giản nhất là sử dụng LetsEncrypt-Win-Simple: https://github.com/PKISharp/win-acme.   Các bạn vào mục releaes và tải win-acme.v1.9.12.1.zip về và giải nén để cùng thư mục C:\inetpub\letsencrypt chẳng hạn. Tiếp đó bạn chạy CMD với quyền Administrator, dir vào thư mục vừa giải nén c:\inetpub\letsencrypt và chạy lệnh letsencrypt.exe

cd c:\inetpub\letsencrypt<br>

letsencrypt.exe

Bấm N và Enter ( Create new certificate )

Say đó chọn 1 và Enter ( Sing le binding of an IIS site /0

Chương trình sẽ list ra danh sách các tên miền có trên web của bạn, nếu nó chỉ hiển thị subdomain hoặc tên miền web chính của bạn không có thì bạn cứ đánh thằng địa chỉ website của bạn ra, vd: baoanjsc.com.vn và enter. Chương trình sẽ chạy 1 lúc là ok.

Kiểm tra lại thông tin trên IIS sẽ thấy site được tự động thêm port 443 và đã add SSL cetificate, như vậy là ok rồi nhé. Chú ý là sau 90 ngày thì chứng chỉ này sẽ hết hạn, bạn phải renew ở bước trên chọn S ( Renew specific ). Các bạn có thể sử dụng Windows Task Scheduler để tự động gia hạn theo thời gian trước 90 ngày. Hy vọng là sẽ sử dụng được miễn phí lâu dài nhé.

Bây giờ khi bạn điều hướng đến phiên bản HTTPS của URL, nó sẽ hiển thị dưới dạng an toàn trong Chrome.

Nhấp qua để xem chứng chỉ.

Để chuyển hướng tất cả lưu lượng truy cập HTTP đến phiên bản HTTPS, bạn có thể cài đặt Modun Rewrite URL của Microsoft và định cấu hình các chuyển hướng. Nó vượt quá phạm vi của hướng dẫn này nhưng xem ở đây để biết thêm thông tin.

2. Cấu hình Redirect HTTP => HTTPS

Mở IIS Manager

- Chọn website để cấu hình chuyển hướng
- Trong bảng “Features View”, nhấp đúp vào URL Rewrite

- Chọn “Add Rules…”

- Chọn “Blank rule” và nhấn “OK”.

- Nhập “Redirect to HTTPS” vào ô "Name"

Nhấn vào nút V tại thanh “Match URL”

Trong khung “Match URL” được thả xuống, tiến hành cài đặt các bước bên dưới

Requested URL: Matches the Pattern
Using: Regular Expressions
Pattern: (.*)

Tiếp đến là cài đặt thông số cho thanh “Conditions”, nhấn vào “Add…”

Nhập thông số như bên dưới

Condition Input: {HTTPS}
Check if input string: Matches the Pattern
Pattern: ^OFF$

Nhấn “OK”

Kết quả cài đặt sẽ được hiển thị như hình dưới

Bỏ qua phần “Server Variables”.

Ở thanh “Action”. Cài đặt thông số như sau:

Action Type: Redirect
Redirect URLhttps://{HTTP_HOST}/{R:1}
Redirect Type: See Other (303)

Nhấn “Apply” và chọn tiếp “Back to Rules”

Kết quả cài đặt chuyển hướng thành công sẽ như hình bên dưới

Kiểm tra bằng trình duyệt của bạn.

Nếu bạn xem file web.config file bạn sẽ thấy đoạn lệnh mới sẽ được thêm vào.

Như vậy là chúng ta đã tạo xong chứng chỉ SSL cho website trên IIS rồi. Chúc các bạn thành công!

Các bài viết liên quan: 

Cách dựng 1 website bằng iis.

Redirect Http to Https trên IIS

Cấu hình nhiều domain redirect về một domain chính bằng IIS

Tin tức khác