ASP.NET Core: Bảo mật tên DNS tùy chỉnh bằng liên kết TLS/SSL trong App Service Azure
Bài viết này hướng dẫn bạn cách bảo mật miền tùy chỉnh trong ứng dụng App Service hoặc ứng dụng chức năng bằng cách tạo ràng buộc chứng chỉ. Khi hoàn tất, bạn có thể truy cập ứng dụng App Service tại điểm cuối https://
cuối cho tên DNS tùy chỉnh của mình (ví dụ: https://www.contoso.com
).
Điều kiện tiên quyết
- Nâng cấp ứng dụng App Service của bạn lên một trong các mức giá được hỗ trợ: Basic, Standard, Premium.
- Ánh xạ tên miền tới ứng dụng của bạn hoặc mua và định cấu hình tên miền đó trong Azure.
I. Thêm ràng buộc
Trong cổng Azure:
1. Từ menu bên trái, chọn App Services > <app-name>.
2. Từ điều hướng bên trái của ứng dụng, hãy chọn Custom domains
3. Bên cạnh miền tùy chỉnh, hãy chọn Add binding
4. Nếu ứng dụng của bạn đã có chứng chỉ cho miền tùy chỉnh đã chọn, bạn có thể chọn chứng chỉ đó trong Certificate. Nếu không, bạn phải thêm chứng chỉ bằng cách sử dụng một trong các lựa chọn trong Source.
- Create App Service Managed Certificate - Cho phép App Service tạo chứng chỉ được quản lý cho miền đã chọn của bạn. Tùy chọn này là đơn giản nhất. Để biết thêm thông tin, hãy xem Tạo chứng chỉ được quản lý miễn phí.
- Import App Service Certificate - Trong App Service Certificate, hãy chọn chứng chỉ App Service bạn đã mua cho miền đã chọn của mình.
- Upload certificate (.pfx) - Thực hiện theo quy trình tại Tải lên chứng chỉ riêng để tải lên chứng chỉ PFX từ máy cục bộ của bạn và chỉ định mật khẩu chứng chỉ.
- Import from Key Vault - Chọn Select key vault certificate và chọn chứng chỉ trong hộp thoại.
5. Trong TLS/SSL type, hãy chọn giữa SNI SSL và IP based SSL.
- SNI SSL: Có thể thêm nhiều ràng buộc SNI SSL. Tùy chọn này cho phép nhiều chứng chỉ TLS/SSL bảo mật nhiều miền trên cùng một địa chỉ IP. Hầu hết các trình duyệt hiện đại (bao gồm Edge, Chrome, Firefox và Opera) đều hỗ trợ SNI (để biết thêm thông tin, hãy xem Chỉ định tên máy chủ).
- IP based SSL: Chỉ có thể thêm một ràng buộc IP SSL. Tùy chọn này chỉ cho phép một chứng chỉ TLS/SSL để bảo mật địa chỉ IP public chuyên dụng. Sau khi bạn định cấu hình liên kết, hãy làm theo các bước trong 2. Ánh xạ lại các bản ghi cho SSL dựa trên IP.
IP SSL chỉ được hỗ trợ ở cấp Standard trở lên.
6. Khi thêm chứng chỉ mới, hãy xác thực chứng chỉ mới bằng cách chọn Validate.
7. Chọn Add.
Sau khi thao tác hoàn tất, trạng thái TLS/SSL của miền tùy chỉnh được thay đổi thành Secure.
Ghi chú
Trạng thái Secure trong Custom domain có nghĩa là nó được bảo mật bằng chứng chỉ, nhưng App Service không kiểm tra xem chứng chỉ đó là tự ký hay hết hạn, chẳng hạn, điều này cũng có thể khiến trình duyệt hiển thị lỗi hoặc cảnh báo.
II. Bản ghi ánh xạ lại cho IP based SSL
Bước này chỉ cần thiết cho IP based SSL. Đối với liên kết SSL SNI, hãy bỏ qua phần Kiểm tra HTTPS cho miền tùy chỉnh của bạn.
Có hai thay đổi bạn cần thực hiện, có thể là:
- Theo mặc định, ứng dụng của bạn sử dụng địa chỉ IP public được chia sẻ. Khi bạn liên kết chứng chỉ với IP SSL, Dịch vụ ứng dụng sẽ tạo một địa chỉ IP mới, dành riêng cho ứng dụng của bạn. Nếu bạn đã ánh xạ bản ghi A vào ứng dụng của mình, hãy cập nhật sổ đăng ký miền của bạn bằng địa chỉ IP mới, chuyên dụng này.
Trang miền tùy chỉnh của ứng dụng của bạn được cập nhật với địa chỉ IP mới, chuyên dụng. Sao chép địa chỉ IP này, sau đó ánh xạ lại bản ghi A sang địa chỉ IP mới này.
- Nếu bạn có SNI SSL liên kết với
<app-name>.azurewebsites.net
, thay vào đó hãy ánh xạ lại bất kỳ ánh xạ CNAME nào để trỏ tớisni.<app-name>.azurewebsites.net
(thêm tiền tốsni
).
III. Kiểm tra HTTPS
Trong các trình duyệt khác nhau, duyệt đến https://<your.custom.domain>
để xác minh rằng nó phục vụ ứng dụng của bạn.
Mã ứng dụng của bạn có thể kiểm tra giao thức thông qua tiêu đề "x-appservice-proto". Tiêu đề có giá trị http
hoặc https
.
Ghi chú
Nếu ứng dụng của bạn cung cấp cho bạn lỗi xác thực chứng chỉ, thì có thể bạn đang sử dụng chứng chỉ tự ký.
Nếu không phải như vậy, bạn có thể đã bỏ qua các chứng chỉ trung gian khi xuất chứng chỉ của mình sang tệp PFX.
Các câu hỏi thường gặp
- Làm cách nào để đảm bảo rằng địa chỉ IP của ứng dụng không thay đổi khi tôi thay đổi liên kết chứng chỉ?
- Tôi có thể tắt chuyển hướng bắt buộc từ HTTP sang HTTPS không?
- Làm cách nào để thay đổi phiên bản TLS tối thiểu cho ứng dụng?
- Làm cách nào để xử lý việc chấm dứt TLS trong App Service?
Làm cách nào để đảm bảo rằng địa chỉ IP của ứng dụng không thay đổi khi tôi thay đổi liên kết chứng chỉ?
Địa chỉ IP gửi đến của bạn có thể thay đổi khi bạn xóa một liên kết, ngay cả khi liên kết đó là IP SSL. Điều này đặc biệt quan trọng khi bạn gia hạn chứng chỉ đã có trong ràng buộc IP SSL. Để tránh thay đổi địa chỉ IP của ứng dụng, hãy làm theo các bước sau theo thứ tự:
- Tải lên chứng chỉ mới.
- Liên kết chứng chỉ mới với miền tùy chỉnh mà bạn muốn mà không xóa chứng chỉ cũ. Hành động này thay thế liên kết thay vì xóa liên kết cũ.
- Xóa chứng chỉ cũ.
Tôi có thể tắt chuyển hướng bắt buộc từ HTTP sang HTTPS không?
Theo mặc định, App Service buộc chuyển hướng từ yêu cầu HTTP sang HTTPS. Để tắt hành vi này, hãy xem Định cấu hình cài đặt chung.
Làm cách nào để thay đổi phiên bản TLS tối thiểu cho ứng dụng?
Ứng dụng của bạn cho phép TLS 1.2 theo mặc định, đây là mức TLS được đề xuất theo tiêu chuẩn ngành, chẳng hạn như PCI DSS. Để thực thi các phiên bản TLS khác nhau, hãy xem Định cấu hình cài đặt chung.
Làm cách nào để xử lý việc chấm dứt TLS trong App Service?
Trong App Service, việc chấm dứt TLS xảy ra tại bộ cân bằng tải mạng, vì vậy, tất cả các yêu cầu HTTPS đều đến ứng dụng của bạn dưới dạng yêu cầu HTTP không được mã hóa. Nếu logic ứng dụng của bạn cần kiểm tra xem yêu cầu của người dùng có được mã hóa hay không, hãy kiểm tra header X-Forwarded-Proto
.
Hướng dẫn cấu hình dành riêng cho ngôn ngữ, chẳng hạn như hướng dẫn cấu hình Linux Node.js, chỉ cho bạn cách phát hiện phiên HTTPS trong mã ứng dụng của bạn.
Tự động hóa với các tập lệnh
Azure CLI
Liên kết chứng chỉ TLS/SSL tùy chỉnh với ứng dụng web
PowerShell
$fqdn="<Replace with your custom domain name>" $pfxPath="<Replace with path to your .PFX file>" $pfxPassword="<Replace with your .PFX password>" $webappname="mywebapp$(Get-Random)" $location="West Europe" # Create a resource group. New-AzResourceGroup -Name $webappname -Location $location # Create an App Service plan in Free tier. New-AzAppServicePlan -Name $webappname -Location $location ` -ResourceGroupName $webappname -Tier Free # Create a web app. $webapp = New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname ` -ResourceGroupName $webappname Write-Host "Sign in to your domain provider's website and configure the following records:" Write-Host "A CNAME record that maps $fqdn to $webappname.azurewebsites.net" Write-Host "A TXT record that maps asuid.$fqdn to the domain verification ID $($webapp.CustomDomainVerificationId)" Read-Host "Press [Enter] key when ready ..." # Before continuing, go to your DNS configuration UI for your custom domain and follow the # instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the # hostname "www" and point it your web app's default domain name. # Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates) Set-AzAppServicePlan -Name $webappname -ResourceGroupName $webappname ` -Tier Basic # Add a custom domain name to the web app. Set-AzWebApp -Name $webappname -ResourceGroupName $webappname ` -HostNames @($fqdn,"$webappname.azurewebsites.net") # Upload and bind the SSL certificate to the web app. New-AzWebAppSSLBinding -WebAppName $webappname -ResourceGroupName $webappname -Name $fqdn ` -CertificateFilePath $pfxPath -CertificatePassword $pfxPassword -SslState SniEnabled
Thêm tài nguyên
- Sử dụng chứng chỉ TLS/SSL trong mã của bạn trong App Service Azure
- Câu hỏi thường gặp: Chứng chỉ dịch vụ ứng dụng