打造甲方私有的多级CA证书中心(下)

作者:Sender  来源:WaveCN.com  发布日期:2022-11-15  最后修改日期:2022-11-15

我们这个甲方私有的多级CA证书中心,经过前两期的过程实际已经建立起来:

打造甲方私有的多级CA证书中心(上)

打造甲方私有的多级CA证书中心(中)

article banner

笔者:国际认证信息系统审计师、软考系统分析师

所以本期是关于EASY-RSA的一些比较少提及的操作,简要介绍一下。

笔者:国际认证信息系统审计师、软考系统分析师

0、SCP如何使用

这个完全是题外话,因为有人留言问scp如何用,这里简单写一下,就是:

scp 本地文件名 远端用户名@远端服务器地址或DNS名称:远端服务器上的完整路径

比如

scp /tmp/a.txt user@remote_ip:/tmp
1、生成Diffie-Hellman(DH)参数

在完成证书中心的初始化之后,任何实体都可以创建DH参数,并提供给需要DH参数的场合使用。DH参数通常只用于TLS服务器。

私有CA证书中心可以生成DH参数文件,也可以在服务器上进行生成,这样可以减少文档传递过程的复杂性。

DH参数的生成方法是:

./easyrsa gen-dh

输入命令后,等待一段时间dh.pem文件就生成了。dh.pem文件可以连同私有CA证书中心签发的证书一起分发和配置到比如WEB服务器使用。

2、修改私钥密码

RSA 和 EC 算法的私钥可以用新的密码重新加密。操作上需要根据密钥的类型,分别使用以下命令之一进行修改:

./easyrsa set-rsa-pass 实体名称或私钥文件完整路径
./easyrsa set-ec-pass 实体名称或私钥文件完整路径

如下是具体操作,命令参数中的“ca”是在初始化创建CA证书中心时自动给予的,对应CA证书中心根证书:

[ca@MYCA easy-rsa]$ ./easyrsa set-rsa-pass ca
Using SSL: openssl OpenSSL 1.1.1k  FIPS 25 Mar 2021

If the key is currently encrypted you must supply the decryption passphrase.
You will then enter a new PEM passphrase for this key.

Enter pass phrase for /home/ca/easy-rsa/pki/private/ca.key: 输入当前密码
writing RSA key
Enter PEM pass phrase: 输入新密码
Verifying - Enter PEM pass phrase: 再输入一次新密码

Key passphrase successfully changed

如果要删除密码,可以对命令加上nopass参数:

./easyrsa set-rsa-pass 实体名称或私钥文件完整路径 nopass
./easyrsa set-ec-pass 实体名称或私钥文件完整路径 nopass

如下是操作实例:

[ca@MYCA easy-rsa]$ ./easyrsa set-rsa-pass ca nopass
Using SSL: openssl OpenSSL 1.1.1k  FIPS 25 Mar 2021

If the key is currently encrypted you must supply the decryption passphrase.

Enter pass phrase for /home/ca/easy-rsa/pki/private/ca.key: 输入当前密码
writing RSA key

Key passphrase successfully changed
3、如何分发CA中心公共证书

这其实是个很复杂的事情,复杂到可以专门、另外、单独写一到多篇公众号文章。这里先简单说说。

假设证书已经上传到服务器,放置在/tmp下名为ca.crt。

在基于RHEL的Linux系统,包括CentOS和Fedora,可以通过如下的方式导入我们自己的CA证书:

sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust

如果是基于Debian的系统,比如Ubuntu,国产比如UOS/deepin操作系统,可以通过如下的操作导入CA证书:

sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
update-ca-certificates

注意:如果需要在WEB服务器上部署私有CA签发的证书,并且使用FIREFOX火狐浏览器,则需要直接将公共ca.crt证书导入到火狐浏览器中。火狐浏览器不使用本地操作系统的证书存储区。有关如何将您的CA证书添加到火狐浏览器的详细信息,请参阅Mozilla公司关于在火狐浏览器中设置证书颁发机构(CA)的支持文档。这里列出一些:

https://support.mozilla.org/en-US/kb/setting-certificate-authorities-firefox

https://www.infinisign.com/faq/manager-certficate-in-firefox

如果需要把私有CA证书中心与Winows桌面环境集成使用,请查阅如何使用certutil.exe安装CA证书的微软文档,例如:

https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/certutil

也可以使用certmgr.msc证书管理工具进行操作,这里不详细说了。

4、撤回证书

撤回证书并不是一种频繁发生的操作,但在必要时,比如带有证书的服务器被攻陷、基于证书信任的笔记本电脑被盗、员工或承包商离职且被判定为有可能携带了证书时,这些证书就应该列入不可信范围,并进行撤回。

操作上,通过如下命令把证书标记为撤回:

./easyrsa revoke 证书名称(签发证书时给的名称)

具体过程如下:

[root@MYCA ~]# su - intermediate
[intermediate@MYCA ~]$ cd ~/easy-rsa/
[intermediate@MYCA easy-rsa]$ ./easyrsa revoke dummy1
Using SSL: openssl OpenSSL 1.1.1k  FIPS 25 Mar 2021

Please confirm you wish to revoke the certificate with the following subject:

subject=
    commonName                = dummy1

X509v3 Subject Alternative Name:
    DNS:dummy1

Type the word 'yes' to continue, or any other input to abort.
  Continue with revocation: 输入yes
Using configuration from /home/intermediate/easy-rsa/pki/easy-rsa-5446.ymH0KM/tmp.1khfIm
Enter pass phrase for /home/intermediate/easy-rsa/pki/private/ca.key: 输入私钥密码
Revoking Certificate F2CA51ECC0CA456829E5A11D7EC27E96.
Data Base Updated

IMPORTANT!!!

Revocation was successful. You must run gen-crl and upload a CRL to your
infrastructure in order to prevent the revoked cert from being accepted.

请注意上面输出中用黄色突出显示的16进制代码。此代码是正在被撤销的证书的唯一序列号。如果要在本节的最后一步中检查吊销列表,以验证证书是否在其中,则需要此序列号。

在确认该操作后,私有CA证书中心将撤销该证书。但是,依赖于私有CA证书中心的信息系统无法检查是否有任何证书已被吊销。这是因为在私有CA证书中心的证书撤销列表(Certificate Revocation List,CRL)被分发到依赖于私有CA证书中心的所有系统之前,用户和服务器仍然能够使用该证书。

但证书已经被吊销,因此必须更新私有CA证书中心服务器上的已吊销证书列表。一旦有了更新的撤销列表,就能够明确告诉用户和系统哪些证书是无效的。

因此,接下来是生成或更新现有的crl.pem文件。操作命令如下:

./easyrsa gen-crl

具体过程如下:

[intermediate@MYCA easy-rsa]$ ./easyrsa gen-crl
Using SSL: openssl OpenSSL 1.1.1k  FIPS 25 Mar 2021
Using configuration from /home/intermediate/easy-rsa/pki/easy-rsa-5815.28JmEJ/tmp.sROvyE
Enter pass phrase for /home/intermediate/easy-rsa/pki/private/ca.key: 输入私钥密码

An updated CRL has been created.
CRL file: /home/intermediate/easy-rsa/pki/crl.pem

如果在创建证书私钥ca.key文件时使用了密码,系统会提示您输入该密码。gen-crl命令将生成一个名为crl.pem的文件,其中包含该私有CA证书中心的已撤销证书的更新列表。

5、传输分发证书撤销列表

每次运行gen-crl生成证书撤回列表时,都需要将更新后的crl.pem文件传输到依赖于此私有CA证书中心的所有信息系统的服务器和客户端以使其生效。否则,这些设备由于不知道某个证书已经被撤回,而继续信任已经无效的证书。

新生成的crl.pem文件转入到需要信任私有CA的所有服务器等设备上,需要:(1)放置到操作系统指定的位置,或(2)通过某种软件操作导入到操作系统内部,还包括(3)对火狐浏览器或者其它自带证书管理机制的软件还要有专门的导入操作。

就以上3点如何手工操作,也是可以写好几篇公众号文章的事情。而且还有一些更可靠和自动化的方法来分发和检查撤销列表,如OCSP,但配置这些方法超出了本文的范围。所以这些都暂且按下不表。

更新了crl.pem后,可能还需要重启服务器上相关的服务使得列表生效。

6、检查和验证CRL内容

如果想检查CRL文件,例如要确认已撤销的证书的列表,可以通过openssl命令:

openssl crl -in pki/crl.pem -noout -text

过程如下:

[intermediate@MYCA easy-rsa]$ openssl crl -in pki/crl.pem -noout -text
Certificate Revocation List (CRL):
        Version 2 (0x1)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = MyInterCA
        Last Update: Nov 15 07:22:48 2022 GMT
        Next Update: May 14 07:22:48 2023 GMT
        CRL extensions:
            X509v3 Authority Key Identifier: 
                keyid:88:6E:99:6F:C8:6C:20:28:96:41:CF:D6:24:3B:B9:69:3A:E0:48:A5
                DirName:/CN=MyCA
                serial:27:D5:D8:05:C1:96:49:84:45:27:57:D6:2D:73:FB:E5

Revoked Certificates:
    Serial Number: F2CA51ECC0CA456829E5A11D7EC27E96
        Revocation Date: Nov 15 07:04:01 2022 GMT
    Signature Algorithm: sha256WithRSAEncryption
         3b:d3:05:44:08:09:53:d5:e9:6d:e3:8f:5e:a5:3a:f5:11:15:
         a6:d8:94:af:29:0d:52:05:55:3d:1e:4d:6e:9c:8d:29:27:56:
         ff:9a:8d:80:1e:36:ac:ba:a2:d3:1f:ec:aa:7b:9d:04:0f:67:
         7e:86:78:1a:75:82:15:5f:11:12:01:5e:17:7b:40:9e:8a:ae:
         e2:f0:41:e0:66:ea:1a:bd:aa:94:5e:1f:fc:81:82:4e:b1:27:
         1a:69:f2:77:fc:53:19:66:d0:ef:54:c2:40:9d:e5:73:3a:37:
         5d:13:a4:ea:d2:8c:9a:11:90:5f:df:ae:ad:08:da:ad:b8:d1:
         2b:fa:89:d4:91:3c:05:fd:0a:11:bd:b6:d1:6f:74:16:65:22:
         76:63:61:6f:5e:24:f8:f8:a1:88:3e:f9:d3:2c:cd:cf:85:b6:
         21:81:67:5d:79:35:53:80:72:bd:3c:a1:6e:79:d5:88:c2:56:
         50:27:f2:c3:94:ba:a9:cb:78:79:69:92:f3:62:dc:01:29:ba:
         13:e4:01:c1:c4:46:d7:6f:95:c8:e4:3c:89:38:d9:42:36:6e:
         88:b6:25:9b:8a:01:28:22:a3:26:3b:c9:f0:a1:c4:f4:b7:dc:
         c2:46:08:be:d8:82:fa:9b:d7:63:fb:d0:d3:86:2b:86:a2:a0:
         7d:71:13:29

可以在已安装了openssl工具,并已经传入了crl.pem文件副本的任何服务器系统上运行此命令去检查证书撤回情况。并且,可以通过grep命令,基于证书序列号进行过滤,实现直接检查证书是否撤回:

[intermediate@MYCA easy-rsa]$ openssl crl -in pki/crl.pem -noout -text | grep -A 1 F2CA51ECC0CA456829E5A11D7EC27E96
    Serial Number: F2CA51ECC0CA456829E5A11D7EC27E96
        Revocation Date: Nov 15 07:04:01 2022 GMT

注意一下grep命令的参数。

到这里,关于甲方私有CA证书中心的设计、配置和扩充操作介绍就告一段落。如果有兴趣,可以在易用性方面,通过编写脚本、设计用户界面等方式作进一步提高。

本期题头图来自 www.algolet.com 小算法 AI艺术图创作

本栏目相关
  •  2024-03-05 点评软件供应链安全框架 in-toto 的审计结果
  •  2022-05-11 CIS-CAT 配置评估工具介绍及操作实践
  •  2022-03-16 Windows 系统安全基线及软件工具介绍
  •  2022-08-28 网络攻防中的色彩象征
  •  2022-03-11 安装RHEL/CentOS时如何选择配置安全策略?
  •  2022-03-17 详细了解微软安全合规工具包(SCT)
  •  2022-03-25 从甲方角度介绍“CIS互联网安全中心”
  •  2022-03-28 如何应用CIS互联网安全中心发布的《CIS关键安全控制措施集》之一:总览
  •  2023-01-06 MSSQL数据库自动备份和自动复制转移备份
  • 微信订阅号二维码

    本页网址二维码: