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

自建私有化证书颁发机构(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版本有 msizip 两种,msi是安装包,zip是带portable字样的压缩包,zip包为便携绿色版、免安装。

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

# 旧的
brew cask install xca
# 新的
brew install --cask xca

XCA的基础使用

切换中文界面

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

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

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

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

新建证书库

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

  • 单机个人使用的话:菜单栏 文件 -> 新建数据库打开数据库
  • 多人协作的话:菜单栏 文件 -> 打开远程数据库

,如下图所示:

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

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

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

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

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

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

生成根证书

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

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

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

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

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

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

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

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

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

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

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

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

  • countryName:国家名称,本胖这里填写了CN
  • stateOrProvinceName:省份名称,本胖这里填写了GX
  • localityName:城市名称,本胖这里填写了Nanning
  • organizationName:组织名称,本胖这里填写了WeiPang,可以理解为公司名称
  • organizationalUnitName:组织单位名称,本胖这里填写了WeiPang,可以理解为部门名称
  • commonName:通用名称,本胖这里填写了WeiPang
  • emailAddress:邮箱地址,本胖这里填写了[email protected]

如下图所示:

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

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

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

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

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

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

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

  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按钮,创建成功后,如下图所示:

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

导出根证书

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

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

MacOS下的:

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

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

把根证书导入到系统中

Windows 导入根证书

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

如下图所示:

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

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

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

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

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

MacOS 导入根证书

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

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

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

双击打开证书,如下图:

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

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

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

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

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

你可能感兴趣的:(数字证书,密码学,安全)