easyrsa 制作 ssl 域名证书

获取 easyrsa

git clone https://github.com/OpenVPN/easy-rsa
cd ./easy-rsa/easyrsa3

配置公钥基础设施变量

cp vars.example vars
vim vars

修改内容示例

set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "BeiJing"
set_var EASYRSA_REQ_CITY "BeiJing"
set_var EASYRSA_REQ_ORG "Wise Innovation Inc."
set_var EASYRSA_REQ_EMAIL "user@mail.com"
set_var EASYRSA_REQ_OU "Wise Innovation"

初始化公钥基础设施 (PKI)

初始化

./easyrsa init-pki      # pki/{reqs,private} dir

这条命令同时可用于清理

生成 CA

./easyrsa build-ca      # pki/private/ca.key pki/ca.crt

输入密码

Enter PEM pass phrase:

确认密码

Verifying - Enter PEM pass phrase:

输入 CA 的名称, 如: Wise Innovation CA

Common Name (eg: your user, host, or server name)[Easy-RSA CA]:

生成证书

普通证书

# pki/private/www.domain.com.key pki/issued/www.domain.com.crt
./easyrsa build-server-full www.domain.com nopass

输入 CA 密码

Enter pass phrase for /path/to/pki/private/ca.key:

nopass 参数设定证书为无密码, 否则还需要设定证书密码

通配符证书

# pki/private/*.domain.com.key pki/issued/*.domain.com.crt
./easyrsa build-server-full *.domain.com nopass

Subject Alternative Name (SAN)

目前有个 bug
可以参照 这个提交 进行修改

# pki/private/*.a.com.key pki/issued/*.a.com.crt
./easyrsa --subject-alt-name=DNS:*.a.com,DNS:*.b.com,DNS:*.c.com build-server-full *.a.com nopass
2014-12-10 197 ssl easyrsa

Nginx SSL 配置

使用OpenSSL生成证书

1、生成RSA密钥的方法

openssl genrsa -des3 -out privkey.pem 2048

这个命令会生成一个2048位的密钥,同时有一个des3方法加密的密码,如果你不想要每次都输入密码,可以改成:

openssl genrsa -out privkey.pem 2048

建议用2048位密钥,少于此可能会不安全或很快将不安全。

2、生成一个证书请求

openssl req -new -key privkey.pem -out cert.csr

这个命令将会生成一个证书请求,当然,用到了前面生成的密钥privkey.pem文件

这里将生成一个新的文件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。

如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用下面这个命令来生成证书:

openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

这个命令将用上面生成的密钥privkey.pem生成一个数字证书cacert.pem

配置nginx

server
{
    listen       443;
    ssl on;
    ssl_certificate  /var/www/sslkey/cacert.pem;
    ssl_certificate_key /var/www/sslkey/privkey.pem;
    server_name  192.168.1.1;
    index index.html index.htm index.php;
    root  /var/www/test;

    .....
    ...
}
2009-03-29 33 nginx ssl