Sqlserver安全篇之_啟用TLS即配置SQL Server 數據庫引擎以加密連接

官方文檔
https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?view=sql-server-ver16
https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/manage-certificates?view=sql-server-ver15&preserve-view=true

TLS加密連接與TDE(Transparent data encryption)透明數據加密完全不一樣,雖然TDE也要證書,但是TDE是針對數據庫層面的也就是針對數據和日志文件,比如影響整個數據庫的備份恢復、快照、刪除、脫機、分離、轉換READ ONLY 狀態等,主要是DBA這種管理人員使用的。

TDE加密數據庫步驟
1、創建證書certSSRSTEST

create certificate certSSRSTEST with subject ='SSRSTEST database certificate data encription';

2、使用證書certSSRSTEST加密數據庫SSRSTEST

use SSRSTEST;
go
create database encryption key with algorithm = AES_128 encryption by server certificate certSSRSTEST
go
alter database SSRSTEST set encryption on
go

Sqlserver啟用TLS加密連接的步驟
1、SQL Server配置為使用證書
每個版本的Sqlserver啟動的時候都會生成一份self-signed certificate自簽名證書,也可以使用powershell腳本建立一個自簽名證書,也可以導入一個證書。再配置Sqlserver使用這些證書

在SQL Server 2019及更高版本中,證書管理已集成到SQL Server配置管理器中。這句話的理解是,從SQL Server 2019開始因為Sql Server Configuration Manager有了Import選項(Sql Server Configuration Manager–>SQL Server Network Configuration–>Right-click Protocols for MSSQLSERVER–>Properties–>Certificate–>Import),可以一次性導入證書并配置Sqlserver使用這些證書,而之前的版本沒有這個Import選項,所以從SQL Server 2019開始我們不再需要像之前的sqlserver版本一樣先通過certlm.msc或MMC把證書導入到操作系統再通過Sql Server Configuration Manager配置Sqlserver使用這些證書

SQL Server 2019之前的版本,需要2步,第一步導入證書,第二步配置Sqlserver使用這些證書

certlm.msc-->Certificates-Local Computer-->Personal-->Certificates-->All Tasks-->Import
Sql Server Configuration Manager-->SQL Server Network Configuration-->Right-click Protocols for MSSQLSERVER-->Properties-->Certificate-->Certificate:-->dropdown list-->choose Certificate-->Apply

SQL Server 2019版本開始,一次性導入證書并配置Sqlserver使用這些證書

Sql Server Configuration Manager-->SQL Server Network Configuration-->Right-click Protocols for MSSQLSERVER-->Properties-->Certificate-->Import

在這里插入圖片描述
在這里插入圖片描述

2、SQL Server配置強制加密

Sql Server Configuration Manager-->SQL Server Network Configuration-->Right-click Protocols for MSSQLSERVER-->Properties-->Flags-->Force Encryption-->Yes

Sqlserver配置了強制加密后,客戶端或在實例本機上使用SSMS連接該實例如果不勾選Trust server certificat這個選項的話會有報錯:A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)

視圖sys.dm_exec_connections的encrypt_option字段的值可以看到會話是否已經加密了

select session_id,encrypt_option,connect_time,client_net_address,local_net_address,net_transport,protocol_type,endpoint_id,auth_scheme from sys.dm_exec_connections

Sqlserver啟用TLS加密后,證書信息并沒有在sys.certificates表中找到

因為每個版本的Sqlserver啟動的時候都會生成一份self-signed certificate自簽名證書,Sqlserver服務器啟動后在錯誤日志里面會記錄一條信息A self-generated certificate was successfully loaded for encryption,這樣的話就算該Sqlserver沒有使用其他證書只要該Sqlserver配置了強制加密,客戶端比如SSMS連接到該Sqlserver時如果選擇了Encrypt connection和Trust server certificate,那么連接的會話就會被加密。

SQL Server uses a certificate from a trusted certification authority if available for encrypting login packets. If a trusted certificate isn’t installed, SQL Server generates a self-signed certificate (fallback certificate) during startup and use that self-signed certificate to encrypt the credentials. This self-signed certificate helps increase security, but it doesn’t protect against identity spoofing by the server. If the self-signed certificate is used, and the value of the ForceEncryption option is set to Yes, all data transmitted across a network between SQL Server and the client application is encrypted using the self-signed certificate.
SQL Server 使用來自受信任的證書頒發機構(如果可用)的證書來加密登錄數據包。 如果未安裝受信任的證書,SQL Server 將在啟動期間生成自簽名證書(回退證書),并使用該自簽名證書來加密憑據。 此自簽名證書有助于提高安全性,但它不會防范通過服務器進行的身份欺騙。 如果使用了自簽名證書,并且“ForceEncryption”選項的值設置為“是”,將使用自簽名證書對通過網絡在 SQL Server 和客戶端應用程序之間傳輸的所有數據進行加密。
–備注:以上那句話"但它不會防范通過服務器進行的身份欺騙",不是說在實例的本機上使用SSMS可以直接連接該實例,因為如果實例啟用強制加密連接后,就算在該實例的本機上使用SSMS連接該實例如果不勾選Trust server certificate這個選項的話一樣會有報錯:A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)

創建self-signed certificate自簽名證書的powershell腳本,以下腳本執行后,在certlm.msc或MMC或Sql Server Configuration Manager里面都能直接查看到,說明證書創建好了的話就代表導入到了操作系統中

# Define parameters
$certificateParams = @{Type = "SSLServerAuthentication"Subject = "CN=$env:COMPUTERNAME"DnsName = @("$($env:COMPUTERNAME)", $([System.Net.Dns]::GetHostEntry('').HostName), 'localhost')KeyAlgorithm = "RSA"KeyLength = 2048HashAlgorithm = "SHA256"TextExtension = "2.5.29.37={text}1.3.6.1.5.5.7.3.1"NotAfter = (Get-Date).AddMonths(36)KeySpec = "KeyExchange"Provider = "Microsoft RSA SChannel Cryptographic Provider"CertStoreLocation = "cert:\LocalMachine\My"
}# Call the cmdlet
New-SelfSignedCertificate @certificateParams

查看證書
certlm.msc–>Certificates-Local Computer–>Personal–>Certificates

Sql Server Configuration Manager–>SQL Server Network Configuration–>Right-click Protocols for MSSQLSERVER–>Properties–>Certificate–>Certificate:–>dropdown list

導出證書
certlm.msc–>Certificates-Local Computer–>Personal–>Certificates–>Right-click Certificatename–>All Tasks–>Export

導入證書
Sql Server Configuration Manager–SQL Server Network Configuration–Right-click Protocols for MSSQLSERVER–Properties–Certificate–>Import

certlm.msc–>Certificates-Local Computer–>Personal–>Certificates–>All Tasks–>Import

certlm.msc等同于MMC–>File–>Add/Remove Snap-in–>Certificates–>Add–>Computer account–>Next–>Finish–>OK

Sqlserver導入self-signed certificate自簽名證書報錯
Sql Server Configuration Manager–>SQL Server Network Configuration–>Right-click Protocols for MSSQLSERVER–>Properties–>Certificate–>Import

Errors or Warnings for certificate:C:\Users\lukes\Desktop\privatekey.pfx
The selected certificate is a self signed certificate. Proceeding with this certificate isn't advised
Error:The selected certificate name does not match FQDN of this hostname. This property is required by SQL Server Certificate name: DBTEST1 Computer name: DBTEST1.lukes.com 

Sqlserver導入一個外部的域名的證書
Sql Server Configuration Manager–>SQL Server Network Configuration–>Right-click Protocols for MSSQLSERVER–>Properties–>Certificate–>Import,導入一個證書G:\Share\TLS\star.pan.com.pem的時候出現問題,本機的域名是daidbrestore1.dai.com,導入的的證書的dns是*.pan.com

Errors or Warnings for certificate:G:\Share\TLS\star.pan.com.pem
-----------------------
Error:The selected certificate name does not match FQDN of this hostname. This property is required by SQL Server Certificate name: *.pan.com Computer name: daidb1.dai.com 
Error:The selected certificate  does not have the KeySpec Exchange property. This property is required by SQL Server to import a certificate. 
Import error: 0x2, Windows Native Error: 0x80092004

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896882.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896882.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896882.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多鏡頭視頻生成、機器人抓取、擴散模型個性化 | Big Model weekly第58期

點擊藍字 關注我們 AI TIME歡迎每一位AI愛好者的加入! 01 GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot 本文介紹了一種名為GLM-4-Voice的智能且類人化的端到端語音聊天機器人。它支持中文和英文,能夠進行實時語音對話&a…

基于 Rust 與 GBT32960 規范的編解碼層

根據架構設計,實現編解碼層的代碼設計 Cargo.toml 加入二進制序列化支持 # 序列化支持 ... bincode "1.3" # 添加二進制序列化支持 bytes-utils "0.1" # 添加字節處理工具 開始編碼 錯誤處理(error.rs&#x…

MOM成功實施分享(七)電力電容制造MOM工藝分析與解決方案(第一部分)

聲明:文章僅用于交流學習,不用于商業項目實施,圖片來源于網絡,如有侵犯權利,請聯系作者及時刪除。 本方案旨在對電力電容(PEC和PQM型號)制造工藝深度分析,結合管理要求設計MOM相關功…

FPGA開發,使用Deepseek V3還是R1(1):應用場景

以下都是Deepseek生成的答案 FPGA開發,使用Deepseek V3還是R1(1):應用場景 FPGA開發,使用Deepseek V3還是R1(2):V3和R1的區別 FPGA開發,使用Deepseek V3還是R1&#x…

JavaWeb后端基礎(3)

原打算把Mysql操作數據庫的一些知識寫進去,但是感覺沒必要,要是現在會的都是簡單的增刪改查,所以,這一篇,我直接從java操作數據庫開始寫,所以這一篇大致就是記一下JDBC、MyBatis、以及SpringBoot的配置文件…

Pytorch實現之SRGAN+CBAM的結構設計

簡介 簡介:在SRGAN的殘差連接中加入了CBAM注意力機制,同時設計了四類損失來訓練。 論文題目:Super-resolution Generative Adversarial Networks Based on Attention Model(基于注意力模型的超分辨率生成對抗網絡) 會議:2020 IEEE第六屆計算機與通信國際會議 摘要:基…

移動端國際化翻譯同步解決方案-V3

1.前言 因為軟件出海,從在上上家公司就開始做翻譯系統,到目前為止已經出了兩個比較大的版本了,各個版本解決的痛點如下: V1版本: 主要針對的是AndroidiOS翻譯不一致和翻譯內容管理麻煩的問題,通過這個工具…

2.css簡介

什么是css: CSS (Cascading Style Sheets,層疊樣式表),是一種用來為結構化文檔(如 HTML 文檔或 XML 應用)添加樣式(字體、間距和顏色等)的計算機語言,CSS 文件擴展名為 .…

機器人學習模擬框架 robosuite (3) 機器人控制代碼示例

Robosuite框架是一個用于機器人模擬和控制的強大工具,支持多種類型的機器人。 官方文檔:Overview — robosuite 1.5 documentation 開源地址:https://github.com/ARISE-Initiative/robosuite 目錄 1、通過鍵盤或SpaceMouse遠程控制機器人…

可終身授權的外國工具,不限次數使用!PDF轉CAD的軟件

最近有不少朋友問我有沒有好用的CAD轉換工具,今天就來給大家分享兩款超實用的小軟件,希望能幫到大家。 第一款軟件是一款國外開發的,它專門用來把PDF文件轉換成CAD格式,特別方便。 這款軟件的操作非常簡單,打開后無需安…

Ubuntu系統上部署Node.js項目的完整流程

以下是在Ubuntu系統上部署Node.js項目的完整流程,分為系統初始化、環境配置、項目部署三個部分: 一、系統初始化 & 環境準備 bash # 1. 更新系統軟件包 sudo apt update && sudo apt upgrade -y# 2. 安裝基礎工具 sudo apt install -y buil…

Android內存優化指南:從數據結構到5R法則的全面策略

目錄 一、APP 內存限制 二、內存的三大問題 2.1、內存抖動(Memory Churn) 2.1.1 頻繁創建短生命周期對象 2.1.2 系統API或第三方庫的不合理使用 2.1.3 Handler使用不當 2.2、內存泄漏(Memory Leak) 2.2.1 靜態變量持有Activity或Context引用 2.2.2 未取消的回調或…

ffmpeg源碼編譯支持cuda

1.安裝cuda CUDA Toolkit 11.3 Downloads | NVIDIA Developer 在選擇組件的時候,將CUDA中的Nsight VSE和Visual Studio Integration取消勾選 不然會安裝失敗 2.編譯ffmpeg 把cuda編譯宏定義開啟,再編譯avcodec 3.編譯livavutil報錯struct "Cuda…

Git強制覆蓋分支:將任意分支完全恢復為main分支內容

Git強制覆蓋分支:將任意分支完全恢復為main分支內容 場景背景完整操作步驟一、前置準備二、操作流程步驟 1:更新本地 main 分支步驟 2:強制重置目標分支步驟 3:強制推送至遠程倉庫 三、操作示意圖 關鍵風險提示(必讀&a…

【Java反序列化測試】

Java反序列化測試 1. 識別反序列化入口點2. 構造探測Payload3. 發送Payload并觀察結果4. 繞過可能的防護5. 自動化工具注意事項總結 Java反序列化測試: 1. 識別反序列化入口點 常見入口: HTTP請求參數(如POST數據、Cookie、Headers&#xff…

golang的io

https://www.bilibili.com/list/BV1gx4y1r7xb 1. 原生io包 io包是Go語言標準庫中底層的I/O接口層,定義了通用的讀寫規則和錯誤處理邏輯。每次讀寫都是直接調用底層系統 I/O,每次讀取1字節,系統調用次數多。適用于小數據量、實時性要求高。io…

【北京迅為】iTOP-RK3568OpenHarmony系統南向驅動開發-第4章 UART基礎知識

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工藝,搭載一顆四核Cortex-A55處理器和Mali G52 2EE 圖形處理器。RK3568 支持4K 解碼和 1080P 編碼,支持SATA/PCIE/USB3.0 外圍接口。RK3568內置獨立NPU,可用于輕量級人工…

【計算機網絡入門】初學計算機網絡(十)(重要)

目錄 1. 網絡層的作用 2. IPV4 2.1 IP 數據報格式 2.2 IP地址分類方案 2.3 數據的轉發 2.4 特殊用途的IP地址 3. 子網劃分和子網掩碼 3.1 子網劃分 3.2 子網掩碼 1. 網絡層的作用 按照教學五層模型,應用層、傳輸層、網絡層、數據鏈路層、物理層&#xff…

機器學習(五)

一,多類(Multiclass) 多類是指輸出不止有兩個輸出標簽,想要對多個種類進行分類。 Softmax回歸算法: Softmax回歸算法是Logistic回歸在多類問題上的推廣,和線性回歸一樣,將輸入的特征與權重進行…

基于 Vue 和 SSM 的前后端分離項目實戰:登錄與注冊功能實現

文章目錄 前言項目概述前端部分(Vue)1. 項目初始化2. 頁面布局Login.vueRegister.vue 3. 路由配置4. 主組件 后端部分(SSM)1. 項目結構2. 數據庫設計3. MyBatis 配置4. DAO 層5. Service 層6. Controller 層7. 配置文件8. Spring …