使用XCA自制CA证书并签发https证书

序言

本文目的是使公司内网部署的Web可以使用https的方式访问
现有部署的系统有用域名访问,有用IP访问,但都是用http的方式
所以打算在公司内网部署统一的CA证书,并可以自己签发对应的域名和IP证书
使得可以用https的方式访问各Web系统

工具下载

XCA下载地址
Github:https://github.com/chris2511/xca

第一步,创建XCA数据库,这样所有的XCA数据都保存在这个文件里面。

创建了数据库后,就默认打开了这个文件

接下来我们在“私钥”界面要创建一个密钥

在“证书”界面创建CA证书

在“主体”页签,修改个性化信息

在“扩展”页签,主要配置证书的类型与时间

在“密钥用法”主要配置证书的用途

点确定后,在证书界面就创建了一个CA证书

第二步:把CA证书导出,然后导入到其它内网的所有电脑,以后这个CA签发的所有证书就都会自动信任

导出CA证书为crt文件,如果是andorid等移动设备,可以选择导出为cer类型文件

把证书导入到Windows,服务器与客户端都要导入此CA证书
在开始“运行”里面输入mmc,打开windows管理控制台

在“证书-->受信用的根证书颁发机构-->证书”下面点右键,选择导入

其它电脑同样按此操作,也可以双击crt文件导入,
主要是导入的位置一定是要在”受信用的根证书颁发机构“下面

第三步,使用CA证书签发域名与IP证书

我们签发一个证书,同时支持
IP:10.76.99.18
泛域名:*.liuju.cc

先在”私钥“这里创建一个*.liuju.cc的私钥

在”证书“页签,创建签名证书,
使用原来创建的CA进行签名
模板选择TLS_Server

在”主体“页签,配置好对应数据,选择新创建的私钥

在”扩展“页签里配置好证书的属性
类型为”最终实体“,有效期,
最主要的是配置 X509v3 Subject Alternative Name
这个主要就是我们要签名干什么的,
如果是域名,我们就写DNS:域名,
如果是泛域名,我们也写DNS,通用的地方用
比如
.liuju.cc 这样这个证书所有的以liuju.cc的域名都可以用
比如 www.liuju.cc,blog.liuju.cc都可以用这一个证书
如果是IP的类型,就写IP地址
如果:IP:10.76.99.18

在”密钥用法“页签,我们选择对应的类型,点OK后创建成功

第四步,导出签名证书,并导入至使用的服务器上

导出的类型要选择PKCS #12 chain(*.pfx)类型,这样会把对应的加密私钥也一同导出
在对应服务器安装后,才会有对应的私钥
导出pfx文件的时候,会要求输入密码,因为有私钥,所以要用密码保护
在对应服务器导入的时候,要输入这个密码才能导入成功

把文件复制到对应服务器,
然后双击_.liuju.cc.pfx
会显示证书导入向导
按向导的提示下一步就可以

选择证书的存储位置,CA证书我们要选择是”受信任的根证书颁发机构“
但是签名证书,我们可以让向导选择”根据证书类型,自动选择证书存储“
如果是签名证书,自动选择一般就是会导入到”个人“下面

这样我们在IIS里就可以新增加绑定https
输入对应的主机名,如:test.liuju.cc
并选择才导入的证书
当然这个域名我还没有通过DNS服务器解析到服务器
我们可以先在windows里修改一下host做本地解析

当然实际可以到域名提供商那里把对应DNS解析正确,效果是一样的

这样我们在客户端访问的时候,就是正常https访问了

同样,我们那个签名证书不也同样设置了IP也可以用吗
我们可以这样设置IIS,把对应IP也绑定为https
如下图这样

这样我们同样在客户端电脑用https的方式访问这个IP地址也是正常的
如下图所示

我们也可以看到这个证书在客户端的信息

至此,我们在内网用自己制做的CA证书,并给内网服务器的泛域名和IP签发证书就已经成功完成了
如果后继要给其它应用签发证书的话,
就只要重复上面的第三步就可以了。并在服务器导入就可以了。
当然前提是服务器和客户端都要导入CA证书
后续签名的证书只用在服务器端导入,不用在客户端导入。
因为客户端已经信任了CA证书,那么所有此CA签发的证书都是可以信任的

posted @ 2024-05-15 16:50  Giant150  阅读(342)  评论(3编辑  收藏  举报