HTTPS(安全超文本传输协议,Hypertext Transfer Protocol over Secure Socket Layer)):是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息
SSL(安全套接字层,Secure Socket Layer):是在客户端和服务器之间建立一条SSL安全通道的安全协议;
TLS(传输层安全协议,Transport Layer Security):用于两个应用程序之间提供保密性和数据完整性;TLS的前身是SSL;
OpenSSL是TLS/SSL协议的开源实现,提供开发库和命令行程序;
服务器端证书
创建服务器端私钥(private key)
openssl genrsa -des3 -out server.key 2048 #运行时会提示输入密码,此密码用于加密key文件, des3即加密算法
去除key文件口令的命令:
mv server.key server_org.key
openssl rsa -in server_org.key -out server.key
生成证书签署请求Certificate Signing Request(CSR)
用于向CA机构申请证书
openssl req -new -days 3650 -key server.key -out server.csr
创建CA证书
准备工作
mkdir -p ./demoCA/newcerts
touch ./demoCA/index.txt
touch ./demoCA/serial
echo 01 > ./demoCA/serial
创建根证书的私匙
openssl genrsa -des3 -out ca.key 2048
利用私钥创建根证书
openssl req -new -x509 -key ca.key -out ca.crt
两步骤合并即
$ openssl req -new -x509 -days 3650 -keyout ca.key -out ca.crt
req //使用openssl的req子命令
-new //生成新的证书请求
-x509 //生成自签名证书
-days 5480 //自签名证书的有效期5480天(15年)【仅当使用了 -x509 选项后有效】
-keyout CA.key //私钥文件名指定为CA.key【此选项的一般作用是新生成文件命名;但若同时使用了-key选项,则此选项用于原私钥文件的更名】
-out CA.crt //指定输出所生成自签名证书的信息到文件,且文件名为CA.crt【建议不要省略】
运行中会提示输入一些 Distinguished Name fields,即证书的识别名信息字段,简称为DN字段
DN字段名 | 缩写 | 说明 | 填写要求 |
---|---|---|---|
Country Name | C | 证书持有者所在国家 | 要求填写国家代码,用2个字母表示 |
State or Province Name | ST | 证书持有者所在州或省份 | 填写全称,可省略不填 |
Locality Name | L | 证书持有者所在城市 | 可省略不填 |
Organization Name | O | 证书持有者所属组织或公司 | 最好还是填一下 |
Organizational Unit Name | OU | 证书持有者所属部门 | 可省略不填 |
Common Name | CN | 证书持有者的通用名 | 必填。 对于非应用证书,它应该在一定程度上具有惟一性; 对于应用证书,一般填写服务器域名或通配符样式的域名。 |
Email Address | 证书持有者的通信邮箱 | 可省略不填 |
如果不想在运行过程中逐个输入这些DN字段的值,则可以使用 -subj 选项在命令中直接指定。选项 -subj 的使用形式为:
-subj arg
其中,arg是选项 -subj 的参数,其格式类似于:/key0=value0/key1=value1/key2=… 形式。每一个 /key=value 形式的单元,都对应了一个完整的DN字段。其中,
/:是每一个DN字段的开始标志;
key0、key1等等:就是上述表中提到的DN字段名的缩写;
=:DN字段的名和值之间的间隔符;
value0、value1等等:就是原本你要在运行过程中逐个输入的DN字段的值。
对于您要将值置为空的DN字段,您可以略去不写
openssl req -new -x509 -days 2048 -subj /C=CN/ST=JiangSu/O=beecloud/CN=example.com -keyout ca.key -out ca.crt
指定自签名证书的密钥长度和类型:
openssl req -newkey rsa:2048 -x509 -days 3650 -keyout ca.key -out ca.crt
CA签署证书,并将证书颁发给请求者
openssl ca -in server.csr -cert ca.crt -keyfile ca.key -out server.crt -days 3650
查看证书中的信息
#查看证书的全部信息
openssl x509 -in server.crt -noout -text
#查看证书中的信息:-serial 查看序列号 -subject 查看主体信息
openssl x509 -in server.crt -noout -serial -subject
吊销证书
在客户端获取要吊销的证书的serial:
把证书格式转换成pkcs12格式
openssl pkcs12 -export -in ca.crt -inkey ca.key -out ca.pfx
不使用CA,创建自签名证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt