Để tăng cường tính bảo mật khi truyền dữ liệu trên đường truyền, Microsoft SQL server hỗ trợ giao thức TLS/SSL sử dụng certificate để mã hoá thông tin khi truyền nhận dữ liệu giữa Server và Client/Application để tăng cường bảo mật cho dữ liệu.
Để bật tính năng mã hóa cho kết nối SQL server, bạn có thễ sử dụng SSL Certificate bản thương mại, từ CA Server hoặc self-signed certificate. Điều kiện về SSL Certificate có thể sử dụng cho việc mã hóa kết nối SQL server như sau:
- Enhanced Key Usage: là Server Authentication 1.3.6.1.5.5.7.3.1
- Valid expiration date: Certificate vẩn còn hạn sử dụng.
- Subject Name: được cấp với server name của SQL server.
- Certificate được import và chứa trong trong certlm.msc của server cài đặt SQL Server
Mô hình thực hiện như sau:
- Domain: hoanghiepktv.com
- SQL Server: 2022-SRV02.hoanghiepktv.com
Để thực hiện việc enable SSL/TLS cho SQL server bạn thực hiện theo các bước sau:
Bước 1: Tạo SSL Certificate cho SQL server, trong bài này chúng ta tạo self-signed certificate với
- -DnsName: 2022-srv02.hoanghiepktv.com.
- -FriendlyName: SQL Server SelfSignedCertificate
Bước 2: Cấp quyền Manage Private Keys cho tài khoản đang log on service của SQL Server.
Thông thường, mặc định tài khoản log on service của SQL Server là NT Service\MSSQLSERVER. Để biết chính xác bạn SQL server của bạn đang dùng tài khoản nào, bạn có thể kiểm tra trong Sql Server Configuration Manager như sau:
Truy cập vào Certificates -Local Computer, bạn thực hiện cấp quyền cho tài khoản log on service của SQL server như sau:
Trong cửa sổ Select Users and Groups, bạn nhập vào username của tài khoản log on service của SQL server ( trong bài này sử dụng tài khoản mặc định khi cài đặt là NT Service\MSSQLSERVER) và Check Names.
- Lưu ý: Tài khoản log on service của SQL server có thể là tải khoản của Domian Controller, lúc này bạn phải chọn Locations là Domain nơi chứa tài khoản.
Bước 3: Bật tính năng SSL/TLS cho SQL server:
Để bật tính năng mã hóa SSL/TLS cho SQL server, bạn truy cập vào Sql Server Configuration Manager và tiến hành thực hiện theo các bước sau:
Chọn Certificate có FriendlyName là SQL Server SelfSignedCertificate như đã tạo ở bước 1:
Để bắt buộc tất cả kết nối từ client đến server phải sử dụng tính năng mã hóa, bạn chọn mục Force Encryption là Yes:
Bước 4: Export self-signed certificate trên SQL server và Import self-signed certificate vào Trusted Root Certificate Authorities của server chứa application cần kết nối database của SQL server hoặc trên máy Client kết nối SQL server để truy vấn dữ liệu.
Bước 5: Kết nối SQL server từ Client trên SQL Server Management Studio (SSMS):
Sau khi bật tính năng Enforce Encryption, bạn truy cập SQL sever sẽ bị lỗi nếu không chọn Encrypt Connection:
Bạn tiến hành kết nối SQL serer bằng SSMS như sau:
Do trong bài này chúng ta dùng Self-Signed Certificate, nên khi kết nối chúng ta phải chọn Trust server cetificate.