Error 40532 坑,趕緊紀錄一下!
新增或更新憑證的語法
$RootFriendlyName = "Azure Vpn Root 2025"
$ClinetFriendlyName = "Azure Vpn Child 2025"
$params = @{
Type = 'Custom'
Subject = 'CN=RootSubject'
KeySpec = 'Signature'
KeyExportPolicy = 'Exportable'
KeyUsage = 'CertSign'
KeyUsageProperty = 'Sign'
KeyLength = 2048
HashAlgorithm = 'sha256'
NotAfter = (Get-Date).AddMonths(24)
CertStoreLocation = 'Cert:\CurrentUser\My'
FriendlyName = $RootFriendlyName
}
$cert = New-SelfSignedCertificate @params
$params = @{
Type = 'Custom'
Subject = 'CN=P2SChildCert'
DnsName = 'P2SChildCert'
KeySpec = 'Signature'
KeyExportPolicy = 'Exportable'
KeyLength = 2048
HashAlgorithm = 'sha256'
NotAfter = (Get-Date).AddMonths(18)
CertStoreLocation = 'Cert:\CurrentUser\My'
Signer = $cert
TextExtension = @('2.5.29.37={text}1.3.6.1.5.5.7.3.2')
FriendlyName = $ClinetFriendlyName
}
New-SelfSignedCertificate @params
certmgr.msc
2022/4/27 坑
開發時會遇到連線失敗,主體名稱不正確之類的訊息
結論:到 host 檔新增 DNS 或於開發時信任伺服器端憑證
TrustServerCertificate=true
Server=10.10.0.2;Database=test;user id=test;password=test;TrustServerCertificate=true;
說明:
應該是因為原本憑證是發給 database.windows.net
但是我們這邊用的是用 IP 導致憑證驗證失敗
所以在地端開發時直接信任伺服器端憑證
發佈到 Azure App Service 時
如果是直接連 TestDbServerName.database.windows.net
就不需要設定 TrustServerCertificate=true
2021/8/31 坑
VPN 連線後 SQL Server 發生「無法產生 SSPI 內容」錯誤 | The Will Will Web (miniasp.com)
結論:到 host 檔新增 DNS 或於 SQL 登入帳號後面要加上 @伺服器名稱
例如原本 SQL Server = TestDbServerName.database.windows.net
登入帳號為 Admin
用 VPN 在 SSMS 的帳號欄位要輸入 Admin@TestDbServerName
否則會得到錯誤:40532
參照:在使用者名中明確提供伺服器名稱,用於Azure SQL DB、MySQL 和后格雷斯QL - 微軟技術社區 (microsoft.com)
Step 1:建立 Azure VPN Getway
這邊見的時候可能先看一下目前自己的內網 IP 網段是甚麼
在建立 Vnet 的時候網段要錯開
比如公司內網 10.0.0.x
手機分享網路 192.168.0.x
那建立 Vnet 的時候就不要用 10.0.x.x or 192.168.x.x
參照:使用 P2S VPN 連線至 VNet & 憑證驗證:入口網站 - Azure VPN Gateway | Microsoft Docs
Step 2:建立 SQL 私人端點
建完就有個內網 IP 稍微記一下等等連到資料庫的時候要用
參照:Tutorial: Connect to an Azure SQL server using an Azure Private Endpoint - Portal | Microsoft Docs
Step 3:安裝 VPN 並連線
就把 Step 1 的私人憑證匯入到每個要連線的電腦
然後把從 Azure 下載回來的 CA 可能也要匯入到信任的根憑證
再安裝 Azure 下載的 x64 VPN Clinet
就會在電腦右下網路裡面看到該 VPN
按連線理論上就可以成功了
Step 4:測試連線
設定完並連結 VPN 後可以在 PowerShell (電源殼?) 輸入以下命令測試連線
Test-NetConnection 10.0.0.4 -Port 1433
P.S. 這邊假定 SQL 私人端點分配的內網 IP 為 10.0.0.4 請依照實際分配位置輸入
注意:這邊一定要指定 1433 Port, ping 應該是關掉不會過的, 回想起來我因此卡了很久
Step 5:使用 SSMS 登入
輸入 SQL 私人端點分配的內網 IP 當作 SQL Server Host
然後將帳號後面加上 @SQL伺服器名稱 (參照開頭的結論部分)
密碼就一樣
理論上就可以不用開 WAN IP 白名單
也可以連到 Azure SQL
Note: