2023年5月9日 星期二

[研究]SQL Server 2022啟用資料庫引擎的加密連線

[研究]SQL Server 2022啟用資料庫引擎的加密連線

2023-05-08

資料庫傳輸連線加密,和 ASP.NET 的 Web.Config中的資料庫連線字串加密,是兩碼子事情。一個是針對「網路資料傳輸」,一個是針對「連線字串設定值」。

設定 SQL Server 資料庫引擎來加密連線
https://docs.microsoft.com/zh-tw/sql/database-engine/configure-windows/enable-encrypted-connections-to-the-database-engine?view=sql-server-ver15

用來為 SQL Server 建立自我簽署憑證的 PowerShell 指令碼 (建立3年的憑證)

下列程式碼片段可用來在執行 SQL Server 的電腦上建立自我簽署憑證。 該憑證符合獨立 SQL Server 執行個體的加密需求,並儲存在本機電腦的憑證存放區中 (PowerShell 必須以系統管理員身分啟動):

New-SelfSignedCertificate -Type SSLServerAuthentication -Subject "CN=$env:COMPUTERNAME" `

-DnsName "[System.Net.Dns]::GetHostByName($env:computerName)",'localhost' `

-KeyAlgorithm "RSA" -KeyLength 2048 -HashAlgorithm "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"


上面憑證期限設定36個月,實際測試1200 (100年)、12000 (1000年)都可成功,1200000 (1萬年) 失敗,猜測期限範圍如下:

日期範圍 1753 年 1 月 1 日到 9999 年 12 月 31 日
https://learn.microsoft.com/zh-tw/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-ver16

確認網路加密

若要確認您已設定好網路加密並有成功啟用,請執行下列 Transact-SQL 查詢:

USE [master]
GO
SELECT DISTINCT (encrypt_option)  
FROM sys.dm_exec_connections;

********************************************************************************

實際過程




















































********************************************************************************

ASP.NET 網站使用 SSL 加密連線存取 SQL Server 

客戶端Web.config連線字串加上;Encrypt=yes

<connectionStrings>
<add name="PlaygroundConnectionString" connectionString="Data Source=(local);
  Initial Catalog=Playground;Integrated Security=True; Encrypt=yes"
 providerName="System.Data.SqlClient" />
</connectionStrings> 

PS:如果 Web.Config 那邊變更後無法正常運作,Data Source 可能需要改成實際的主機名稱 or FQDN 名稱。

PS:如果 Data Source 原本是 IP,可能要在 hosts 檔案設定 名稱和IP對應,然後設定名稱。

(完)

相關

[研究]SQL Server 2022預設sa和administrator帳號權限檢視
https://shaurong.blogspot.com/2023/05/sql-server-2022saadministrator.html

[研究]SQL Server 2022啟用資料庫引擎的加密連線
https://shaurong.blogspot.com/2023/05/sql-server-2022.html

[研究] SQL Server 2016使用 SSL 加密連線
http://shaurong.blogspot.com/2017/09/sql-server-2016-ssl.html


沒有留言:

張貼留言