OpenSSL生成证书
.key格式:私有的密钥
.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
.crt格式:证书文件,certificate的缩写
.crl格式:证书吊销列表,Certificate Revocation List的缩写
.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式
CA根证书的生成步骤
生成CA私钥(.key)–>生成CA证书请求(.csr)–>自签名得到根证书(.crt)(CA给自已颁发的证书)。
1 | Generate CA private key |
出现错误:
1 | Can't load ./.rnd into RNG 10504:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto\rand\randfile.c:98:Filename=./.rnd |
解决办法:
进入/etc/ssl/openssl.cnf
将下面的内容注释掉
1 | RANDFILE = $ENV::HOME/.rnd |
注释掉之后:
1 | #RANDFILE = $ENV::HOME/.rnd |
用户证书的生成步骤
Common Name以外可以为空,Common Name必须为服务器的ip或域名
生成私钥(.key)–>生成证书请求(.csr)–>用CA根证书签名得到证书(.crt)
服务器端用户证书:
1 | private key |
出现错误:
1 | Using configuration from /usr/lib/ssl/openssl.cnf |
新建文件夹demoCA/newcerts
,在文件夹demoCA
文件夹下新建
index.txt
文件,文件为空。serial
文件,写入01。
客户端用户证书:
1 | openssl genrsa -des3 -out client.key 1024 |
生成pem格式证书
有时需要用到pem格式的证书,可以用以下方式合并证书文件(crt)和私钥文件(key)来生成
1 | cat client.crt client.key> client.pem |
结果:
服务端证书:ca.crt, server.key, server.crt, server.pem
客户端证书:ca.crt, client.key, client.crt, client.pem
不需要生成Ca,直接生成,证书链第一层
1 | # Generate server private key |
Https请求的时候会加入server.crt
,如果证书不对客户端会reset.
1 | -----BEGIN CERTIFICATE----- |