网络安全2 - PKI (Public key infrastructure) 和 Easy RSA

一、PKI

1. 官方定义

PKI是Public key infrastructure的简称,中文称之为“公开密钥基础设施”、“公钥基础设施”、“公开密钥基础架构”或“公钥基础架构”,是一组由硬件、软件、参与者、管理政策与流程组成的基础架构,其目的在于创造、管理、分配、使用、存储以及撤销数字证书。 

2. 通俗理解

管理密钥(公钥+私钥),签发数字证书,签发数字签名。CA的实现。

二、Easy RSA

Easy RSA是Open VPN组织对PKI的实现,它是一个命令行工具,可以创建并管理Root Certificate Authority(CA),包括签发、吊销数字证书、创建公钥私钥对等。

1. 安装

(1) 首先需要安装wget工具:

yum install -y wget

(2) 下载

最新版本需要前往项目网站(https://github.com/OpenVPN/easy-rsa)查看:

wget https://github.com/OpenVPN/easy-rsa/archive/v3.1.1.tar.gz

(3) 解压

tar -xf v3.1.1.tar.gz

(4) 完成安装

到这里,其实你已经完成了安装,Easy RSA不需要执行make & make install等命令,你可以直接cd到目录执行命令,更重要的是它不需要你在root权限下运行。

首先给Easy RSA挪个地方:

sudo mv -i easy-rsa-3.1.1 /opt/EasyRSA

运行以下命令,测试你的安装:

cd /opt/EasyRSA/easyrsa3
./easyrsa --version

2. 配置

默认配置文件在/opt/EasyRSA/easyrsa3/vars.example,如果默认配置可以满足需求,此步可以跳过,如果你想自定义配置文件则务必将该文件重命名为vars并放到vars.example同级目录,这一点vars.example文件也有介绍:

(1) 生成配置文件:

cp vars.example vars

(2) 编辑配置文件:

vi vars

(3) 定位到

set_var EASYRSA_PKI

更新为:

/opt/EasyRSA/easyrsa3/pki

(4) 定位到以下段落,删除注释符号并按需修改:

#set_var EASYRSA_REQ_COUNTRY "US"
#set_var EASYRSA_REQ_PROVINCE "California"
#set_var EASYRSA_REQ_CITY "San Francisco"
#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
#set_var EASYRSA_REQ_EMAIL "me@example.net"
#set_var EASYRSA_REQ_OU "My Organizational Unit"

3. 搭建CA并生成CA密钥对和数字证书

(1) 初始化PKI目录:

cd /opt/EasyRSA/easyrsa3
./easyrsa init-pki

或者可以执行清除并初始化:

cd /opt/EasyRSA/easyrsa3
./easyrsa clean-all

注意,这里会初始化一个目录/opt/EasyRSA/easyrsa3/pki用于存放数字证书:

(2) 创建CA:

cd /opt/EasyRSA/easyrsa3
./easyrsa build-ca

在执行该命令时,需要输入CA的密码和Common Name,每当CA签发证书的时候需要输入该密码,如果不想设置密码,可以执行:

cd /opt/EasyRSA/easyrsa3
./easyrsa build-ca nopass

注意:

a. 如果你之前有ca证书和密钥,你希望恢复到这个EasyRSA中来,你需要先运行上面的命令,再用原有的ca证书和私钥覆盖新生成的证书和私钥:

mv -f ca.crt /opt/EasyRSA/easyrsa3/pki/ca.crt
mv -f ca.key /opt/EasyRSA/easyrsa3/pki/private/ca.key

b. 运行之后:

CA数字证书(包含公钥和主体信息):/opt/EasyRSA/easyrsa3/pki/ca.crt

CA私钥:/opt/EasyRSA/easyrsa3/pki/private/ca.key

 (3) 生成服务端CA密钥对和数字证书,可自定义server名称

cd /opt/EasyRSA/easyrsa3
./easyrsa build-server-full server

如果不需要密码可以运行:

cd /opt/EasyRSA/easyrsa3
./easyrsa build-server-full server nopass

运行之后:

服务端的数字证书(包含公钥和主体信息):/opt/EasyRSA/easyrsa3/pki/issued/server.crt

服务端的私钥:/opt/EasyRSA/easyrsa3/pki/private/server.key

(4) 生成Diffie-Hellman

Deffie-Hellman(简称 DH) 密钥交换是最早的密钥交换算法之一,它使得通信的双方能在非安全的信道中安全的交换密钥,用于加密后续的通信消息。

cd /opt/EasyRSA/easyrsa3
./easyrsa gen-dh

运行该命令需要的时间较长,运行之后:

数字证书:/opt/EasyRSA/easyrsa3/pki/dh.pem

4. 为Client生成密钥对和数字证书

(1) 可自定义Client名称:

cd /opt/EasyRSA/easyrsa3
./easyrsa build-client-full client1

(2) 如果不需要密码可以运行:

cd /opt/EasyRSA/easyrsa3
./easyrsa build-client-full client1 nopass

(3) 运行之后:

数字证书:/opt/EasyRSA/easyrsa3/pki/issued/client1.crt

私钥:/opt/EasyRSA/easyrsa3/pki/private/client1.key

(4) 发送至目标主机:

scp local_file remote_username@remote_ip:remote_folder
scp /opt/EasyRSA/easyrsa3/pki/issued/client1.crt remote_username@remote_ip:remote_folder
scp /opt/EasyRSA/easyrsa3/pki/private/client1.key remote_username@remote_ip:remote_folder

5. 将CA证书添加到目标主机的信任列表中:

cp /opt/EasyRSA/easyrsa3/pki/ca.crt /etc/pki/ca-trust/source/anchors/

三、参考

https://www.ssh.com/academy/pki

https://www.keyfactor.com/resources/what-is-pki/

https://github.com/OpenVPN/easy-rsa

https://github.com/OpenVPN/easy-rsa/blob/master/README.quickstart.md

https://unixcop.com/install-easyrsa-certificate-authority-ca-on-centos-rhel-8/

https://easy-rsa.readthedocs.io/en/latest/

https://blog.csdn.net/nice_wen/article/details/87996526

posted @ 2022-11-24 22:57  白马黑衣  阅读(790)  评论(0编辑  收藏  举报