Easy RSA是一个openvpn的子项目,用于创建安全网络所需的基础设施(PKI)和密钥,证书等。在Linux中,您如果安装好EASYRSA,可运行: ./easyrsa -h来获取相关的帮助。

这里列举一些常用的命令以帮助您快速搭好PKI和签发相关的证书。 最新的下载地址在:https://github.com/OpenVPN/easy-rsa/releases 截止到本文创建时,最新版本为V3.0.6: 下载后,在用户目录中解压:

tar xvf EasyRSA-3.0.4.tgz

根据vars.example来生成模板,提供关键参数

cp vars.example vars
找到下面这些并移除注释,修改成自己所需的参数:
#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"

#set_var EASYRSA_CERT_EXPIRE 1825  
改成五年,默认证书有效期只有三年

1、在选定的系统中创建新的PKI和CA

 ./easyrsa init-pki  (该命令生成pki目录,密钥和证书请求子目录,以及一个openssl配置文件)
 ./easyrsa build-ca

2、在openvpn服务端或客户端初始化PKI并生成密钥对和签名请求,通常如果CA根服务器和openvp服务端,在同一台电脑,就不需要再初始化PKI,而是直接生成密钥和签名请求。然后导入到CA。

 ./easyrsa init-pki (如果和CA同一个服务器且目录相同,无需再执行)
 ./easyrsa gen-req EntityName nopass(在服务端或客户端执行)
 ./easyrsa import-req /tmp/path/to/import.req EntityName (在CA服务器上执行)
 ./easyrsa sign-req client EntityName nopass(在CA服务器上执行)

在一个现成的pki里,一般只需gen-req和sign-req就可以生成证书了

3、把签名的证书传到对应的服务器上,包括CA证书(CA.crt),如果对应服务器之前还没有的话。这样客户端服务器上就有所需的密钥对,签名证书和CA证书。

  • 在CA服务器上作废证书
  ./easyrsa revoke EntityName
  ./easyrsa gen-crl
  • 生成 Diffie-Hellman (DH)

作为TLS服务器可能会用到它,通常在VPN服务端的PKI生成。

./easyrsa gen-dh
  • 查看证书或签名请求
   ./easyrsa show-req EntityName
   ./easyrsa show-cert EntityName
  • 更改密钥
   ./easyrsa show-req EntityName
   ./easyrsa show-cert EntityName
   
 也可以在命令行参数中用"nopass"取消密钥。