网上现有的多数教程和文章都是基于openssl命令行工具来生成证书的,但是这种方式比较繁琐,而且容易出错,且不方便多人同时管理,所以本胖决定了使用简便直观的跨平台图形化工具–XCA来管理证书。
XCA支持Windows、Linux、MacOS多种平台,用的是Qt开发的,所以各平台上界面都是一致的,而且支持多语言,本胖使用的是中文版。内置了数据库的支持,可使用MySQL/MariaDB、PostgreSQL、Open Database Connectivity (ODBC)、SQLite等多种数据库,默认的单文件模式其实用的是SQLite数据库,所以不需要额外安装数据库,自己用的话也非常方便。在多人协作的情况下,可以使用大家都能够访问到的MySQL/MariaDB或PostgreSQL来实现多人共享证书库,这样就可以实现多人同时管理证书。
XCA下载地址为 https://hohnstaedt.de/xca/index.php/download
,根据操作系统下载对应的版本即可。
Windows版本有 msi
和 zip
两种,msi是安装包,zip是带portable
字样的压缩包,zip包为便携绿色版、免安装。
本胖使用的是Mac,MacOS用户也可以使用Homebrew来安装,命令如下:
# 旧的
brew cask install xca
# 新的
brew install --cask xca
菜单栏 File
-> Language
-> Chinese(Chinese)
,如下图所示:
切换后软件界面就变成中文的了,如下图所示:
根据需求选择单文件模式还是远程数据库模式,单文件模式的话,证书库就是一个Sqlite3.x
文件,所有的证书都存储在这个文件里面,这种模式适合个人使用,而且不需要安装数据库,非常方便。远程数据库模式的话,证书库就是一个数据库,所有的证书都存储在这个数据库里面,这种模式适合多人协作,但是需要安装数据库,供所有使用者来连接使用,比较麻烦。
文件
-> 新建数据库
或 打开数据库
文件
-> 打开远程数据库
,如下图所示:
本胖以使用MySQL为例,点击 打开远程数据库
,如下图:
数据库配置如果没问题的话,会弹出一个对话框,让你设置证书库
的密码,如下图所示:
该密码在后面的每一次打开都需要输入,所以一定要记住,否则后面就无法打开证书库了。
后续生成证书的时候,都是以根证书为基础来生成的,所以先生成根证书。
每一个证书需要对应一个私钥,所以先生成一个根证书用的私钥,然后再生成根证书。
切换到私钥
选项卡,点击创建密钥
,如下图所示:
在内部名称中给它起个名字,本胖这里起名为ca-private
,密钥长度选择2048
,密钥类型选择RSA
,点击确定
,如下图所示:
创建成功后会在列表中看到刚才创建的私钥,如下图所示:
切换到证书
选项卡,点击创建证书
,如下图所示:
在 来源
选项卡,使用模版创建新证书,选择CA
,如下图所示:
在 主体
选项卡,填写证书的基本信息,内部名称为证书的名称,本胖这里填写了MyCA
,其他信息分别为:
CN
GX
Nanning
WeiPang
,可以理解为公司名称
WeiPang
,可以理解为部门名称
WeiPang
[email protected]
如下图所示:
在 扩展
选项卡,填写证书的扩展信息,如下图所示:
类型选择CA
,时间跨度填入你想要的证书有效期,本胖这里填写了20
,单位为年
,然后点应用
按钮,左边的有效期会跟着变动。
在密钥用法
选项卡,勾选Critical
,我们后续的实战实例只需用到TLS Web
和Code Signing
,但为了试验,可以全部选中。
各种类型的密钥用法的含义如下:
X509v3 Key Usage(密钥用途):
X509v3 Extended Key Usage(扩展密钥用途):
Netscape Cert Type(Netscape证书类型):
设置完后,点击右下角的OK
按钮,创建成功后,如下图所示:
选中刚生成的证书,右边菜单栏点击导出
,选择保存路径即可。
Windows中可以双击打开导出的证书进行查看,MacOS中可以使用空格键来预览证书,如下图所示:
MacOS下的:
Windows中可以双击打开导出的证书,然后点击安装证书
-> 当前用户
-> 将所有的证书都放入下列存储
-> 浏览
-> 受信任的根证书颁发机构
-> 下一步
-> 完成
-> 是(Y)
,
如下图所示:
导入完成后,再次打开证书,可以看到本来提示此CA 根日录证书不受信任。要启用信任,请将该证书安装到"受信任的根证书顾发机构“存储区。
的地方,变成了这个证书的目的如下
,如下图所示:
双击证书文件,会弹出一个对话框,要求验证指纹或者密码,进入钥匙串。验证成功后,进入钥匙串主界面,选择【证书】,如下图:
可以看到刚才导入的证书,并显示为此根证书不被信任
。
双击打开证书,如下图:
点击信任
,展开选项后,在使用此证书时
选择始终信任
,如下图:
打叉关掉窗口后,会再一次要求校验指纹或密码,输入后,回到钥匙串界面,可以看到证书状态已经改变,如下图: