一般情况下,使用ssl证书需要三个操作步骤:1.生成密钥对;2.生成证书请求文件;3.生成证书文件。从单纯的开发者角度来说,可以使用开源的openssl生成密钥和证书,且通过openssl的req命令,可以一个命令完成上述3个操作。
一、openssl生成证书
1.1、req命令简介
req命令主要的功能:生成证书请求文件、验证证书请求文件和自签名证书(创建根证书)。
通过向openssl 提供一个无效的命令参数,比如:-help 就可以获得可用的命令帮助说明,如下图
1.2、req命令的配置模板文件
使用config参数,需要编写模板文件req.cnf,如下:
# 定义输入用户信息选项的"特征名称"字段名,该扩展字段定义了多项用户信息。distinguished_name = req_distinguished_name# 生成自签名证书时要使用的证书扩展项字段名,该扩展字段定义了要加入到证书中的一系列扩展项。x509_extensions = v3_req# 如果设为no,那么 req 指令将直接从配置文件中读取证书字段的信息,而不提示用户输入。prompt = no[req_distinguished_name]# 国家代码C = CN# 省份ST = HeBei# 城市L = ShiJiaZhuang# 企业/单位名称O = Network# 企业部门OU = Development# Common NameCN = www.network.cn##### 要加入到证书请求中的一系列扩展项 #####[v3_req]keyUsage = critical, digitalSignature, keyAgreementextendedKeyUsage = serverAuthsubjectAltName = @alt_names[ alt_names ]DNS.1 = www.network.cnDNS.2 = *.network.cnIP.1 = 192.168.6.106
1.3、执行req命令
如果私钥不需要口令,则增加参数-nodes
openssl req -x509 -days 365 -newkey rsa:2048 -keyout ng_server_key.key -out ng_server_crt.crt -config req.cnf -sha256
备注:配置nginx时需要该口令
二、nginx配置证书
server { # 设置端口开启ssl listen 443 ssl; # 存放私钥口令的文件 ssl_password_file ssl_pwd; # 证书 ssl_certificate ng_server_crt.crt; # 密钥 ssl_certificate_key ng_server_key.key; ......}
重启nginx,查看效果