GitBlit(當前版本1.6.2,http://gitblit.org/) 是一個Git版本控制的服務端,使用java編寫,功能上足夠知足基本的版本控制要求,並且部署很簡單方便,好比windows上能夠使用Gitblit GO,解壓縮後運行gitblit.cmd就能夠使用。GitBlit支持HTTPS和SSH讀寫,Visual studio 2013自帶Git客戶端的支持,可是不能使用SSH,使用HTTPS時又要求SSL證書必須是可信的,在域環境下能夠使用域CA頒發的服務器證書,這就須要使用域證書來替換GitBlit自頒發的證書。java
能夠直接使用頒發給IIS服務的域證書,首先須要將IIS證書導出,必定要同時導出私鑰:git
好比這裏的服務器名爲TFS,保存導出的證書爲tfs.pfx。windows
修改GitBlit配置文件gitblit.properties的server.storePassword,好比這裏簡單的設置爲:服務器
server.storePassword = 123
刪除GitBlit目錄下這些文件(其實並非必須的,只是演示如何從頭初始化這些文件):ssh
data\serverKeyStore.jks工具
data\serverTrustStore.jks測試
data\ssh-dsa-hostkey.pem.net
data\ssh-rsa-hostkey.pem3d
data\certs\ca.cer版本控制
data\certs\caKeyStore.p12
data\certs\caRevocationList.crl
運行authority.cmd,會提示輸入「證書默認設置」,肯定後提示輸入keystore密碼,輸入前面的「123」,程序會建立serverKeyStore.jks、serverTrustStore.jks等文件,使用工具欄上的「建立服務器SSL證書」按鈕建立證書:
這時輸入服務器的主機名稱,同時選中「使用此證書提供https支持」,肯定完成後關閉Certificate authority。
使用Portecle工具來修改證書Keystore,能夠從http://portecle.sourceforge.net下載,使用Portecle打開tfs.pfx,選擇密鑰對後導出:
導出的文件命名爲TFS_CA.p12,接着使用Portecle打開serverKeyStore.jks,導入保存在TFS_CA.p12中的密鑰對:
導入時須要輸入密鑰對的Alias,輸入tfs,會提示是否覆蓋原有的tfs記錄,選擇「是」,再次提示輸入密鑰對記錄的密碼,一樣輸入「123」(必須和keystore的密碼相同),保存後關閉Portecle。
最後還須要修改gitblit.properties的server.certificateAlias,程序以及設置爲TFS,可是測試發現必須爲小寫:
server.certificateAlias = tfs
注意gitblit.properties文件末尾(authority.cmd添加的)可能有重複的server.certificateAlias設置,必定要刪除。
運行gitblit.cmd啓動gitblit,啓動過程當中會自動生成ssh-dsa-hostkey.pem和ssh-rsa-hostkey.pem,默認https端口8443,檢查證書成功替換爲域證書。
在使用git命令clone經過https訪問時仍然可能會報錯「Unable to clone Git repository due to self signed certificate」,須要禁止客戶端的SSL驗證:
git config --global http.sslVerify false