2013年3月27日 星期三

SQL2012 SSL加密連線

需要測試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憑證註冊到根目錄下。

沒有留言:

張貼留言

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...