Sử dụng Trusted Certificate cho Website với máy chủ IIS

Khi phát triển hệ thống với ASP.Core thì MS đã hỗ trợ một development certificate trên máy của developer, nên khi chạy localhost thì các bạn không lo gì về HTTPS trên máy. Chỉ cần run lệnh:

dotnet dev-certs https --trust

Như vậy là đã thành công, tuy nhiên để triển khai trên IIS thì các bạn lại phải  tạo ra một certificate rồi đưa nó vào thành Trusted Certificate thì mới áp dụng được cho các domain custom trên IIS. Bài viết này mình sẽ hướng dẫn các bạn làm việc đó từng bước.

Chú ý: Bài viết này không bao gồm các bước cài đặt và cấu hình IIS cũng như triển khai hệ thống mà chỉ tập trung vào phần add certificate

Bước 1: Tạo mới custom domain và đặt trong file host

Vào file hosts ở vị trí C:\windows\System32\drivers\etc sau đó mở ở chế độ Administrator và điền domain custom của bạn, ở đây ví dụ là sample-app.local binding với địa chỉ IP 127.0.0.1 là IP đại diện cho máy hiện tại.

Bước 2: Tạo mới website và binding cổng 80 với domain đó như bình thường

Bước này tạo website và binding với domain như bình thường, mở IIS từ thanh Start hoặc gõ inetmgr trên cửa sổ run rồi Enter:

Bước 3: Tạo mới certificate và export ra file PFX

Để tạo ra một certificate mới bạn dùng câu lệnh sau trên PowerShell:

$domain= "sample-app.local" 
$password= "@OurPassword1" | ConvertTo-SecureString -AsPlainText -Force 
New-SelfSignedCertificate -NotBefore (Get-Date) -NotAfter (Get-Date).AddYears(1) -Subject $domain -KeyAlgorithm "RSA" -KeyLength 2048 -HashAlgorithm "SHA256" -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsage KeyEncipherment -FriendlyName $domain -TextExtension @("2.5.29.19={critical}{text}","2.5.29.37={critical}{text}1.3.6.1.5.5.7.3.1","2.5.29.17={critical}{text}DNS=$domain")

Ở đây các bạn cần chỉnh biến domain của mình thành giá trị $domain và mật khẩu ở biến $password (mật khẩu này cần khi import vào IIS)  các bạn mong muốn . Sau khi chạy xong thì kết quả sẽ như sau:

Một certificate sẽ được tạo ra trong thư mục CurrentUser\My trên tài khoản của bạn. Để xem bạn có thể gõ lệnh: cd Cert:\CurrentUser\My sau đó gõ lệnh dir để hiển thị các file trong thư mục:

Tiếp theo là cần Export Certificate này ra 1 file PFX:

$domain= "sample-app.local" 
$certificate = Get-ChildItem -Path Cert:\CurrentUser\My\ | Where-Object {$_.Subject -match $domain} 
$password= "@OurPassword1" | ConvertTo-SecureString -AsPlainText -Force

Export-PfxCertificate -Cert $certificate -FilePath $env:USERPROFILE\Documents\$domain.pfx -Password $password

Bước này sẽ export ra file sample-app.local.pfx và xuất ra thư mục Documents của user hiện tại. Trong trường hợp bạn chạy lệnh tạo cert nhiều lần nó sẽ tạo ra nhiều file trùng domain nên câu lệnh này sẽ lỗi, bạn cần vào mmc để xoá đi. Cài này sẽ hướng dẫn trong bước 4.

Vậy là vào phần My Documents chúng ta thu được file sample-app.local.pfx:

 

Bước 4: Add certificate vào Trusted Certificate

Để add vào Trusted Certificate trên máy tức là thêm vào danh sách các Certificate có thể tin tưởng. Bạn vào Start tìm kiếm mmc hoặc gõ mmc trên cửa sổ Run:

 

Tiếp theo vào File menu chọn Add/Remove Snap-in...

 

Chọn Certificates bên trái và nhấn Add:

Chọn My Current User trên popup:

Sau đó sẽ hiển thị ra Certificates trên cửa sổ Add or Remove Snap-in cột bên phải:

Tiếp theo nhấn OK:

Sau khi xong các bạn sẽ thấy menu trái sẽ có mục chi tiết của Certificates cho Current User, ở đây chú ý đến 2 mục là Personal Trusted Root Certification Authorities. Vào mục Personal --> Certificates bạn sẽ thấy danh sách các Certificates đã được tạo trong thư mục Current User qua lệnh PowerShell:

Hãy xem Certificate tên là sample-app.local chưa được trusted bằng cách Double click vào nó:

 

Để add vào trusted các bạn chuột phải vào Certificate tên là sample-app.local rồi bấm Copy, sau đó chuột phải vào thư mục Certificates trên Trusted Root Certification Authorities và bấm Paste:

 

Vậy là đã add được Certificate mới vào thư mục Trusted, giờ các bạn có thể chuột phải vào nó để xem kết quả:

 

Bước 5: Import certificate vào IIS

Để import cert vào IIS các bạn vào Home của IIS và chọn Server Certificates:

 

Sau đó chọn Import bên phải:

 

Tiếp theo là chọn file pfx tương ứng và gõ Password chính là password dùng để tạo cert: "@OurPassword1". Cuối cùng chọn Web Hosting:

 

Sau khi điền xong chọn OK

 

 

Bước 6: Binding certificate với website

Sau khi xong bước 5 chúng ta bắt đầu Binding certificate vào website:

Click OK

 

Bước 7: Config allow SSL trong IIS

Cấu hình cho phép chạy SSL trên website của IIS, vào website chọn SSL Settings:

Hiển thị ra cửa sổ SSL Settings:

 

Check vào Accept và click Apply. Và đây là kết quả:

 

 

 


Tác giả: Bạch Ngọc Toàn

Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.

Lên trên