紀錄下之前在設置SQL Server使用SSL連線的方法,不然下次要用又要研究好久。
Step1. 自建憑證
使用Makecert.exe建立憑證(.pfx),指令如下:
makecert -r -pe -n "CN=SQL2016-DB1" -b 07/13/2017 -e 07/13/2037 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr currentuser -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
說明:makecert -r -pe -n "CN=[輸入您的DB電腦名稱]" -b [憑證起始日] -e [憑證到期日] => 只需要修改藍字部分即可
完成後將此憑證匯出成.pfx。
Step2. 匯入憑證
Windows [開始] > 尋找'cmd'後開啟cmd > 輸入mmc後開啟主控台 > 點上方功能列 [檔案] > [新增/移除嵌入式管理單元]
> 選憑證按新增 > 選電腦帳戶 > 下一步 > 完成
切換到目錄[憑證 (本機電腦)] -> [個人] -> [憑證]之中即可,右鍵 > [所有工作] > [匯入],將剛剛的.pfx憑證匯入。
Step3. 設定憑證權限
匯入完成後,需要將憑證私鑰加入權限:
先到DB組態管理查看登入身分:
選取剛匯好的憑證按右鍵 > [所有工作] > [管理私密金鑰] > 新增您的DB登入使用者 > 並允許控制、讀取權限。
Step4. 開啟加密連線
開啟SQL Server 組態管理員 > 選SQL 網路組態 > 通訊協定右鍵 > 內容 > Force Encryption(強制加密) 選Yes > 頁籤切換到憑證 > 選擇你產製的憑證
按下確認 > 重新啟動Server > 完成!
接著就是程式碼部分連線設定,(ASP.Net為例)我在Web.Config中設定connectionString加上參數Encrypt=YES;
<add name="ConnectionString" connectionString="Data Source=127.0.0.1;Persist Security Info=True;Password=xxxx;User ID=xxxx;Initial Catalog=xxx;Encrypt=YES;" providerName="System.Data.SqlClient"/>
這樣db SSL就設定完成了。