网络安全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