Easy-RSA 3 HowTo

OpenVPN 自带了一套CA相关的脚本,乱七八糟的,用起来并没觉得有多easy,不过新版把文件整合了,github: https://github.com/OpenVPN/easy-rsa
Easy-RSA 3.0 今天刚Release。

配置

配置起来比较简单,把下列文件放在同一个目录里即可,或者下载官方的release,直接改名 vars.example 为 vars。

  • easyrsa
  • openssl-1.0.cnf
  • vars
  • x509-types

以前的版本,需要修改vars文件,然后 source 加载一下,新版本可以用 –vars=/path/to/vars 或者完全靠命令行参数传参。
vars文件需要配置,可以看文件注释,给一个参考的版本。

初始化PKI

首先需要把pki的目录创建好,以前的版本是会要求执行一个clean-all脚本。

创建CA

由于设置了 EASYRSA_DNcn_only,所以创建CA时比较简单。
如果设置成 org 则会要求输入很多项目,或者从 vars 文件里加载。

创建DH参数

Diffie hellman参数使用的是 openssl dhparam 创建的,openvpn文档里提到的size只有1024和2048,所以vars文件里的 EASYRSA_KEY_SIZE 我没设成4096。
easyrsa 3 的命令是

生成证书

生成证书的操作步骤就两步,生成请求文件,根据请求文件签发证书。
easy-rsa 3.0签发证书时要求制定type,可选的值参考x509-types目录下的文件名,包括

  • server:TLS服务端,适用于https服务端和vpn服务端
  • client:TLS客户端,适用于web浏览器和vpn客户端
  • ca:签发子CA证书

gen-req, build-client-full, build-server-full 可以使用 nopass 参数生成不加密的私钥。

生成请求

使用 gen-req 来生成req。

签发证书

签发证书时,需要指定类型,参考前边的说明。

签发req文件

如果req文件是外部创建的,可以使用 import-req 导入,再用 sign-req 签发。
命令参数

一步创建

可以使用 build-client-fullbuild-server-full 直接完成 gen-reqsign-req 的过程。

撤销证书

使用 revoke 撤销证书,命令格式如下:

生成CRL文件

CRL是证书撤销列表,有些软件会需要,包括OpenVPN。

导出PKCS 7/PKCS 12

可以使用 export-p7export-p12 生成 PKCS 7/PKCS 12文件。
支持两个参数:noca 和 nokey。

查看证书/查看请求文件

使用 show-certshow-req 查看请求文件,参数是请求时的名字。

更新数据库

Easy-RSA 3 HowTo by @sskaje: https://sskaje.me/2015/09/easy-rsa-3-howto/

Incoming search terms: