自建私有化证书颁发机构(Certificate Authority,CA)实战之 《0x00 环境的准备》

## 前言

网上现有的多数教程和文章都是基于openssl命令行工具来生成证书的,但是这种方式比较繁琐,而且容易出错,且不方便多人同时管理,所以本胖决定了使用简便直观的跨平台图形化工具--XCA来管理证书。

XCA支持Windows、Linux、MacOS多种平台,用的是Qt开发的,所以各平台上界面都是一致的,而且支持多语言,本胖使用的是中文版。内置了数据库的支持,可使用MySQL/MariaDB、PostgreSQL、Open Database Connectivity (ODBC)、SQLite等多种数据库,默认的单文件模式其实用的是SQLite数据库,所以不需要额外安装数据库,自己用的话也非常方便。在多人协作的情况下,可以使用大家都能够访问到的MySQL/MariaDB或PostgreSQL来实现多人共享证书库,这样就可以实现多人同时管理证书。


## XCA的安装

XCA下载地址为 `https://hohnstaedt.de/xca/index.php/download` ,根据操作系统下载对应的版本即可。

Windows版本有 `msi` 和 `zip` 两种,msi是安装包,zip是带`portable`字样的压缩包,zip包为便携绿色版、免安装。

本胖使用的是Mac,MacOS用户也可以使用Homebrew来安装,命令如下:

```bash

# 旧的

brew cask install xca

# 新的

brew install --cask xca

```

## XCA的基础使用

### 切换中文界面

菜单栏 `File` -> `Language` -> `Chinese(Chinese)`,如下图所示:

切换后软件界面就变成中文的了,如下图所示:

### 新建证书库

根据需求选择单文件模式还是远程数据库模式,单文件模式的话,证书库就是一个`Sqlite3.x` 文件,所有的证书都存储在这个文件里面,这种模式适合个人使用,而且不需要安装数据库,非常方便。远程数据库模式的话,证书库就是一个数据库,所有的证书都存储在这个数据库里面,这种模式适合多人协作,但是需要安装数据库,供所有使用者来连接使用,比较麻烦。

- 单机个人使用的话:菜单栏 `文件` -> `新建数据库` 或 `打开数据库`

- 多人协作的话:菜单栏 `文件` -> `打开远程数据库`

,如下图所示:

本胖以使用MySQL为例,点击 `打开远程数据库` ,如下图:

数据库配置如果没问题的话,会弹出一个对话框,让你设置`证书库`的密码,如下图所示:

该密码在后面的每一次打开都需要输入,所以一定要记住,否则后面就无法打开证书库了。

### 生成根证书

后续生成证书的时候,都是以根证书为基础来生成的,所以先生成根证书。

每一个证书需要对应一个私钥,所以先生成一个根证书用的私钥,然后再生成根证书。

切换到`私钥`选项卡,点击`创建密钥`,如下图所示:

在内部名称中给它起个名字,本胖这里起名为`ca-private`,密钥长度选择`2048`,密钥类型选择`RSA`,点击`确定`,如下图所示:

创建成功后会在列表中看到刚才创建的私钥,如下图所示:

切换到`证书`选项卡,点击`创建证书`,如下图所示:

在 `来源`选项卡,使用模版创建新证书,选择`CA`,如下图所示:

在 `主体`选项卡,填写证书的基本信息,内部名称为证书的名称,本胖这里填写了`MyCA`,其他信息分别为:

- countryName:国家名称,本胖这里填写了`CN`

- stateOrProvinceName:省份名称,本胖这里填写了`GX`

- localityName:城市名称,本胖这里填写了`Nanning`

- organizationName:组织名称,本胖这里填写了`WeiPang`,可以理解为`公司名称`

- organizationalUnitName:组织单位名称,本胖这里填写了`WeiPang`,可以理解为`部门名称`

- commonName:通用名称,本胖这里填写了`WeiPang`

- emailAddress:邮箱地址,本胖这里填写了`object.new@qq.com`

如下图所示:

在 `扩展`选项卡,填写证书的扩展信息,如下图所示:

类型选择`CA`,时间跨度填入你想要的证书有效期,本胖这里填写了`20`,单位为`年`,然后点`应用`按钮,左边的有效期会跟着变动。

在`密钥用法`选项卡,勾选`Critical`,我们后续的实战实例只需用到`TLS Web`和`Code Signing`,但为了试验,可以全部选中。

各种类型的密钥用法的含义如下:

1. X509v3 Key Usage(密钥用途):

- Digital Signature:数字签名

- Non Repudiation:不可否认性

- Key Encipherment:密钥加密

- Data Encipherment:数据加密

- Key Agreement:密钥协商

- Certificate Sign:证书签名

- CRL Sign:撤销列表签名

- Encipher Only:仅加密

- Decipher Only:仅解密

- 该字段指定了该证书可以用于哪些目的,例如数字签名、数据加密等。

2. X509v3 Extended Key Usage(扩展密钥用途):

- TLS Web Server Authentication:TLS Web服务器身份验证

- TLS Web Client Authentication:TLS Web客户端身份验证

- Code Signing:代码签名

- E-mail Protection:电子邮件保护

- Time Stamping:时间戳

- Microsoft Individual Code Signing:Microsoft个人代码签名

- Microsoft Commercial Code Signing:Microsoft商业代码签名

- Microsoft Trust List Signing:Microsoft信任列表签名

- Microsoft Server Gated Crypto:Microsoft服务器门控加密

- Microsoft Encrypted File System:Microsoft加密文件系统

- Netscape Server Gated Crypto:Netscape服务器门控加密

- Microsoft EFS File Recovery:Microsoft EFS文件恢复

- IPSec End System, IPSec Tunnel, IPSec User, IP security end entity:

IPSec终端系统、IPSec隧道、IPSec用户、IP安全终端实体认证等。

(IPSec是一种用于保护网络通信的协议)

- Microsoft Smartcard Login:Microsoft智能卡登录

- OCSP Signing: OCSP签名(在线证书状态协议)

- EAP over PPP, EAP over Lan: PPP和LAN上的EAP(扩展认证协议)认证。

- Signing KDC Response: KDC响应签名(密钥分发中心)

- PKINIT Client Auth: PKINIT客户端认证

- SSH Client: SSH客户端

- Adobe PDF Signing: Adobe PDF签名

- Microsoft Office Signing: Microsoft Office签名

- Microsoft BitLocker Drive Encryption, Microsoft BitLocker Data Recovery Agent:

Microsoft BitLocker驱动器加密、Microsoft BitLocker数据恢复代理。

(BitLocker是一种磁盘加密工具)

3. Netscape Cert Type(Netscape证书类型):

- SSL Client:SSL客户端

- SSL Server:SSL服务器

- S/MIME:S/MIME(安全多用途Internet邮件扩展)

- Object Signing:对象签名

- SSL CA:SSL证书颁发机构

- S/MIME CA:S/MIME证书颁发机构

- Object Signing CA:对象签名证书颁发机构

设置完后,点击右下角的`OK`按钮,创建成功后,如下图所示:

### 导出根证书

选中刚生成的证书,右边菜单栏点击`导出`,选择保存路径即可。

Windows中可以双击打开导出的证书进行查看,MacOS中可以使用空格键来预览证书,如下图所示:

MacOS下的:

### 把根证书导入到系统中

#### Windows 导入根证书

Windows中可以双击打开导出的证书,然后点击`安装证书`-> `当前用户` -> `将所有的证书都放入下列存储` -> `浏览` -> `受信任的根证书颁发机构` -> `下一步` -> `完成` -> `是(Y)`,

如下图所示:

导入完成后,再次打开证书,可以看到本来提示`此CA 根日录证书不受信任。要启用信任,请将该证书安装到"受信任的根证书顾发机构“存储区。`的地方,变成了`这个证书的目的如下`,如下图所示:

#### MacOS 导入根证书

双击证书文件,会弹出一个对话框,要求验证指纹或者密码,进入钥匙串。验证成功后,进入钥匙串主界面,选择【证书】,如下图:

可以看到刚才导入的证书,并显示为`此根证书不被信任`。

双击打开证书,如下图:

点击`信任`,展开选项后,在`使用此证书时`选择`始终信任`,如下图:

打叉关掉窗口后,会再一次要求校验指纹或密码,输入后,回到钥匙串界面,可以看到证书状态已经改变,如下图:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容