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