生成客户端私钥:
1
| openssl genrsa -out server.key 2048
|
生成客户端证书:
1
| openssl req -new -sha256 -x509 -days 3650 -key server.key -out server.crt
|
证书申请文件:
1
| openssl req -new -key server.key -out server.csr
|
生成CA私钥
采用des3加密,需要输入4位以上密码:
1
| openssl genrsa -des3 -out ca.key 4096
|
生成CA证书
1
| openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
|
CA配置配置文件/private/etc/ssl/openssl.cnf(我这里是mac系统)添加如下配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| [ ca ]
default_ca = ca_default
[ ca_default ]
dir = /etc/ssl/diyca # 指定了CA的根目录
certs = $dir/certs # 已经签发的证书的存储目录
crl_dir = $dir/crl # 存储证书吊销列表的目录
database = $dir/index.txt # 数据库的索引文件,用来存放签发证书的信息。
#unique_subject = no #设置为’no’表示允许同时创建多个相同主题的证书。
new_certs_dir = $dir/newcerts # 设置存放新签发的证书的默认位置
Certificate = $dir/cacert.pem # 指定CA证书
serial = $dir/serial # 指定存放当前序列号的文件,写入00即可
crl = $dir/crl.pem # 当前的CRL
private_key = $dir/private/cakey.pem # CA的私钥
default_md = md5
RANDFILE = $dir/private/.rand #指明一个用来读写时候产生random key的seed文件。
policy= policy_match
[ policy_match ]
countryName= match
stateOrProvinceName= match
organizationName= match
organizationalUnitName= optional
commonName= supplied
emailAddress= optional
[ policy_anything ]
countryName = optional
stateOrProvinceName= optional
localityName= optional
organizationName = optional
organizationalUnitName = optional
commonName= supplied
emailAddress= optional
|
CA签发证书:
1
| openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -days 3650
|
server.pem就是签名后的证书
1
| cp /etc/ssl/diyca/newcerts/00.pem server.pem
|
下面拿着server.key和server.pem,到web服务器上部署即可,需要说明一下自签证书不一定受常见浏览器信任哦.