使用openssl生成https协议证书

ぃ、小莉子 提交于 2019-11-29 20:03:08

在服务器端创建证书

一、使用openssl生成CA证书

#在/tmp目录下新建一个ca文件夹,并在ca文件夹下创建四个子文件夹
[root@linux-node ~]# mkdir -p /tmp/ca/{newcerts,private,conf,server} 
[root@linux-node ~]# cd /tmp/ca/

newcerts 目录用于存放CA签署过的数字证书。
private 目录用于存放CA的私钥。
conf 目录用于存放一些简化参数用的配置文件。
server 目录存放服务器证书文件。

二、在conf目录下新建一个包含如下信息的openssl.conf文件

[ ca ]
default_ca = foo
[ foo ] 
dir = /tmp/ca
database = /tmp/ca/index.txt
new_certs_dir = /tmp/ca/newcerts
certificate = /tmp/ca/private/ca.crt
serial = /tmp/ca/serial
private_key = /tmp/ca/private/ca.key
RANDFILE = /tmp/ca/private/.rand
default_days = 365
default_crl_days= 30
default_md = md5
unique_subject = no
policy = policy_any
[ policy_any ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = match
localityName = optional
commonName      = supplied
emailAddress    = optional

这里写图片描述

三、生成私钥key文件

[root@linux-node ~]# cd /tmp/ca
[root@linux-node ca]# openssl genrsa -out /tmp/ca/private/ca.key

这里写图片描述

四、按提示输入所需信息,然后按回车键生成证书请求csr文件

[root@linux-node ca]# openssl req -new -key /tmp/ca/private/ca.key -out /tmp/ca/private/ca.csr

备注: Common Name需要输入公司的域名。

这里写图片描述

五、生成凭证crt文件

[root@linux-node ca]# openssl x509 -req -days 365 -in /tmp/ca/private/ca.csr -signkey /tmp/ca/private/ca.key \
-out /tmp/ca/private/ca.crt

六、为CA的key设置起始序列号,可以是任意四个字符

[root@linux-node ca]# echo FACE > /tmp/ca/serial

七、创建CA键库

[root@linux-node ca]# touch /tmp/ca/index.txt

八、为移除客户端证书创建一个证书撤销列表

[root@linux-node ca]# openssl ca -gencrl -out /tmp/ca/private/ca.crl -crldays 7 -config "/tmp/ca/conf/openssl.conf"
Using configuration from /tmp/ca/conf/openssl.conf

为客户端证书签名

一、在ca目录内创建一个存放客户端key的目录users

[root@linux-node ca]# mkdir /tmp/ca/users

二、为客户端创建一个key

[root@linux-node ca]# openssl genrsa -des3 -out /tmp/ca/users/client.key 1024

备注: 创建key时要求输入pass phrase,这个是当前key的口令,以防止本密钥泄漏后被人盗用。两次输入同一个密码。

三、为客户端key创建一个证书签名请求csr文件

[root@linux-node ca]# openssl req -new -key /tmp/ca/users/client.key -out /tmp/ca/users/client.csr

输入该命令后,根据提示输入上一步输入的pass phrase,然后根据提示输入对应的信息
备注: A challenge password是客户端证书口令。注意将它和client.key的口令进行区分。

四、使用CA证书的key为客户端key签名

[root@linux-node ca]# openssl ca -in /tmp/ca/users/client.csr -cert /tmp/ca/private/ca.crt \
-keyfile /tmp/ca/private/ca.key -out /tmp/ca/users/client.crt -config "/tmp/ca/conf/openssl.conf"

备注: 当出现确认是否签名的提示时,两次都输入y。

五、将证书转换为PKCS12文件

[root@linux-node ca]# openssl pkcs12 -export -clcerts -in /tmp/ca/users/client.crt \
-inkey /tmp/ca/users/client.key -out /tmp/ca/users/client.p12

按照提示输入客户端client.key的pass phrase。再输入用于导出证书的密码。这个是客户端证书的保护密码,在安装客户端证书时需要输入这个密码。

六、运行以下命令查看生成的客户端证书

[root@linux-node ca]# cd users
[root@linux-node users]# ls
client.crt  client.csr  client.key  client.p12
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!