替换GitBlit的证书为域证书

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自颁发的证书。

可以直接使用颁发给IIS服务的域证书,首先需要将IIS证书导出,一定要同时导出私钥:

比如这里的服务器名为TFS,保存导出的证书为tfs.pfx。

修改GitBlit配置文件gitblit.properties的server.storePassword,比如这里简单的设置为:

server.storePassword = 123

删除GitBlit目录下这些文件(其实并不是必须的,只是演示如何从头初始化这些文件):

data\serverKeyStore.jks

data\serverTrustStore.jks

data\ssh-dsa-hostkey.pem

data\ssh-rsa-hostkey.pem

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
时间: 2024-10-12 18:58:19

替换GitBlit的证书为域证书的相关文章

Dynamics CRM 2013 配置之 添加配置 域证书服务器 和 ADFS

配置完防火墙后,开始正式配置域证书服务器和 ADFS 启动 Windows Server 2012 R2 注:本文会适当把微软英文原话复制过来(英语来自微软MSDN官网),增加大家英文阅读能力. 选中      1. Active Directory Federation Services.(ADFS)           2. Active Directory 证书服务 结束.

Windows AD证书服务系列---证书的功能概述(1)

SSL安全技术可用于大部分的网站,它主要用来处理重要的安全数据.SSL在服务器和客户端之间建立了一条安全的加密连接,最常见的是WEB服务器和浏览器或者客户端计算机上的Email客户端之间的连接.SSL被公认为一种安全性协议,因为它为加密连接指定了加密算法和必要变量,使用SSL的安全连接的目的,就是为了使数据在服务器和客户端之间传递的时候受到保护,比如信用卡号,登入凭证,以及其他的一些重要数据. 想用SSL建立一个受保护的连接,就必须在服务器上安装证书,内部CA和公共CA都可以给SSL颁发证书.对

Windows AD证书服务系列---证书发布与吊销(1)

证书注册方式 在Windows2012中,我们可以使用多种方式为用户或计算机注册证书,证书的注册方式与所在的环境有关,例如,我们最希望通过自动注册来批量的将证书部署给大量的用户或计算机,然而在某种情况下,我们又需要通过手动注册将证书部署到专门的安全性主体. 下面描述了这几种方法的不同之处: 自动注册.使用自动注册,管理员需要为证书模板定义权限和配置.这些定义帮助申请者去自动的申请,获取和续签证书,它不需要与终端用户交互.此方法用于AD域的计算机,必须通过组策略来实现自动注册证书. 手动注册.手动

Windows AD证书服务系列---证书的使用范围(3)

将证书用于内容加密 虽然数字签名可以验证作者的身份以及确保文档内容的一致性,但是它不能用来保护内容本身,如果某人拦截了数字签名信息,这个人是可以读取文档信息的,但是他假如想修改内容的话,数据签名是可以检测到文档并非原作者所修改的,这个概念已经通过上一章的实验验证过了. 如果你想保护文档的内容不被非法用户读取,你就必须将文档进行加密,Windows操作系统能够支持基于文件的加密,这种技术被称为文件加密系统(EFS Encrypting File System),Outlook的邮件也是可以被加密的

#WEB安全基础 : HTTP协议 | 0x16 HTTPS:证书,证书,全是证书

现在想做点什么事都需要证书,要不就会让我们回忆起一个典故:滥竽充数 HTTPS使用了公开密钥加密,如何保证公开密钥就是真正的公开密钥呢?攻击者可能会替换公开密钥,这时候就需要验证,所以它采用了数字证书这种方法. 首先数字证书认证机构(CA)要被信任,然后服务器的管理员才敢去申请数字证书,下面是基本流程: 服务器把公开秘钥发给CA(数字证书认证机构),CA用自己的私有秘钥对服务器发来的公开密钥进行加密,颁发数字签名,在这之前CA的公开密钥已经植入到浏览器里了 然后,用户访问服务器时,用CA的公开密

为什么要申请ssl证书 ?ssl证书有什么作用?

什么是ssl证书?https是一种加密传输协议,网站使用https后可以避免敏感信息被第三方获取.https加密协议=SSL / TLS+http协议,也就是说,在传统的http协议上加上SSL证书就可以实现数据传输加密. SSL证书实际上就是CA机构对用户公钥的认证,内容包括电子签证机关的信息.公钥用户信息.公钥.权威机构的签字和有效期等.CA(数字证书认证,Certificate Authority)机构,是承担公钥合法性检验的第三方权威机构,负责指定政策.步骤来验证用户的身份,并对SSL证

手动为Android 4.x 手机添加自己的根证书(CA 证书)

首先看Android 4.x 系统的证书存放位置: AOSP Android系统中CA证书文件的位置在:/ system/etc/security/cacerts/一系列的以数字命名的.0文件 方法一: Android 4.0 已经支持用户安装根证书了,只需要将根证书放到sdcard根目录,然后到设置(Settings) – 安全(Security) – 从存储设备安装(Install from storage)就可以了,但是这样安装需要设置锁屏PIN或密码才可以. 但是,该操作需要每次打开手机

iOS开发关于真机—App发布证书和调试证书配置

发布证书.真机调试证书.测试证书.推送证书详细过程 更重要的是让你彻底明白为什么要这样配置证书 一:发布证书 遵旨:哪个开发者的哪台电脑要发布哪个app (这句话可以多读几遍) 通过上边的遵旨可以得出要发布app需要哪些文件,为什么配置过程中要上传或者生成那些文件,结论如下 申请开发者账号,即花费了99刀给apple的账号,这是你可以登录developer.apple.com这个网站了 证书签名请求文件(CSR:CertificateSigningRequest) 让你的电脑具备了发布app的功

使用CryptoAPI解析X509证书和P12证书

读入一个CER文件,CertCreateCertificateContext生成CERT_CONTEXT.CERT_CONTEXT这个数据结构中有一项CERT_INFO,CERT_INFO里面有一项SubjectPublicKeyInfo,  SubjectPublicKeyInfo是一段PUBLICKEY_INFO类型的数据段,里面保存的是算法的ID和DER编码的公钥.有了这段DER编码,我们就可以用其他工具(比如openssl)来解析公钥的各项参数.遗憾的是,CryptoAPI定义的接口却不