需要測試sql server 2012 SSL加密連線
GOOGLE了幾篇文章後進行測試
1.如何啟用SQL Server的SSL加密
2.Setting up SSL encryption for SQL Server using certificates – Issues, tips & tricks
3.How to enable SSL encryption for an instance of SQL Server by using Microsoft Management Console
4.
如何設定 SQL Server 2008 接受 SSL 加密連接 (需設定憑證)
先到微軟網站下載
makecert.exe
然後在DOS下執行
makecert -r -pe -n "CN=bev"
-b 01/01/2013 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr
localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic
Provider" -sy 12
第一次建立時,搞不清CN要填什麼,大部份都說要填符合
FQND(Fully Qualified Domain Name)的電腦名稱,但我的機器又未加入網域,所以第一次我就自已給了一個隨便符合FQND的名稱。
建立完後憑證後,再依KB的
How to Configure the MMC Snap-in 設定進入憑證主控台在個人憑證下就可以看到憑證了
過程中,我是先使用 -sr
currentuser 建立憑證,但進入主控台後,我在個人>>憑證目錄下看不到自已建立的憑證??
所以後來改用了-sr
localMachine 就可看到所建立的憑證... (後來發現,看不到是因為用MMC進入主控台時是以目前帳號進入,而不是以本機電腦方式)
接著進入SQL Server Configuration Manager,在SQL Server網路組態>>SQL2012通訊協定內容,查看憑證頁籤下的下拉選單看不到任何的憑證???
再依著第三篇微軟KDB的Troubleshooting 步驟,先將個人憑證匯出後再匯入到受信任的根憑證授權單位下。
(匯出時我是選擇匯出私密金鑰,故會要求輸入一組密碼後,將憑證存成.pfx,故匯入時需要輸入相同密碼)
重啟sql server services,用SSMS開啟連結並以加密方式連結,就OK了.
不過我一直有個疑問,主機強制加密Force protocol encryption設為是時,代表伺服器強制SSL
但我試了一下,Client就算沒有勾選加密連線,一樣還是可以連接資料庫?
Client端還是可以不走SSL來連線?? WHY?
寫了一個測試網頁利用SSL連線,connection string 如下
<add name="test" connectionString="Data Source=testsvr;Initial Catalog=test;Persist Security Info=True;User ID=sa;password=sa;
Encrypt=yes;TrustServerCertificate=True" providerName="System.Data.SqlClient" />
記得,本機要先把SSL憑證註冊到根目錄下。