一、创建CA证书
1、创建CA密钥

#(RSA算法,4096bit长度)
openssl genrsa -out my-ca.key -des3 4096      
#查看密钥:
openssl rsa -noout -text -in my-ca.key

2、利用CA密钥自签署CA证书(根证书)

openssl req -new -x509 -days 36500 -key my-ca.key -out my-ca.crt
#查看证书:
openssl x509 -noout -text -in my-ca.crt

可以通过-config选项来指定openssl配置文件(不指定默认为/etc/pki/tls/openssl.cnf)

二、创建服务器证书
1、创建服务器证书密钥 (私钥)

#RSA算法,4096bit长度
openssl genrsa -out server.key -des3 4096
#查看密钥:
openssl rsa -noout -text -in server.key

2、创建服务器证书请求文件

openssl req -new -key server.key -out server.csr
#证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件,那才是你的数字证书。

三、CA颁发证书 撤销证书
1、CA颁发证书 (公钥)

openssl ca -keyfile my-ca.key -cert my-ca.crt -in server.csr -out server.crt
# -keyfile  -cert选项如果省略,则默认为生成CA证书过程中指定的配置文件中的private_key选项和certificate选项

2、CA撤销证书

openssl ca -keyfile my-ca.key -cert my-ca.crt -revoke server.crt

签发和撤销证书维护的文本数据库为生成CA证书过程中指定的配置文件中的database选项,serial选项指定的文件用来跟踪最后一次颁发的证书的序列号

四、其他
1、为密钥文件去除保护口令

openssl rsa -in server.key -out server.key

3、指定签发策略

openssl ca -keyfile my-ca.key -cert my-ca.crt -in server.csr -out server.crt -policy policy_anything

policy类型说明:

a. policy_match(配置文件默认):
此策略要求CA的公钥证书和应用证书请求文件中的Country Name、State or Province Name、Organization Name这三个字段必须匹配。

b. policy_anything:
允许所签发证书的持有者信息和颁发者信息之间不遵守任何匹配策略。

如果指定了policy_match,如果不匹配会有以下错误发生:

Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for my-ca.key:
Check that the request matches the signature
Signature ok
The countryName field needed to be the same in the
CA certificate (CN) and the request (CH)