一、准备工作
1 准备需要访问的网站地址http或者https,这里以https举例
2 确保域名可以正常解析,网站可以正常访问
3 准备Linux并安装Openssl,这里以CentOS8.1举例
sudo yum install -y openssl4 创建一个文件夹用于创建证书
二、生成证书
2.1 生成根证书
根据域名或ip创建自签名证书,本次通过域名演示
#生成根证书CA.crt和根证书私钥CA.key,证书主体描述在-subj参数中修改(不修改保持默认也行)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj "/C=CN/ST=BJ/L=BJ/O=TecDev" -keyout CA.key -out CA.crt -reqexts v3_req -extensions v3_ca2.2 创建应用证书的私钥和证书申请文件
# 创建证书的私钥
openssl genrsa -out private.key 2048# 根据私钥创建一个证书请求文件csr,注意证书主体的描述使用-subj参数描述,CN必须和应用中请求的地址一致,可以是IP地址或域名(本次域名举例)
openssl req -new -key private.key -subj "/C=CN/ST=BJ/L=BJ/O=TecDev/CN=fnos.space" -sha256 -out private.csr2.3 创建证书的扩展描述文件
如果不使用扩展描述文件,那么谷歌浏览器中无法授信,会提示证书无效
#创建一个文件,名字为private.ext内容如下
其中[SAN]区中,subjectAltName需要注意,如果是csr文件中CN配置的是域名,这里也写域名,如果是IP地址,需要修改为subjectAltName = IP:192.168.100.100
[ req ]
default_bits = 1024
distinguished_name = req_distinguished_name
req_extensions = san
extensions = san
[ req_distinguished_name ]
countryName = CN
stateOrProvinceName = Definesys
localityName = Definesys
organizationName = Definesys
[SAN]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = DNS:fnos.space2.4 创建应用证书
#使用csr文件和private.ext、以及根证书CA.crt创建一个证书private.crt
openssl x509 -req -days 364 -in private.csr -CA CA.crt -CAkey CA.key -CAcreateserial -sha256 -out private.crt -extfile private.ext -extensions SAN2.5 证书文件确认
自此证书文件全部创建完毕,分别是:
根证书 CA.crt
根证书私钥 CA.key
应用证书 private.crt
应用证书私钥 private.key
根证书中的主体描述可以随意填,但是应用证书中的主体的CN必须和请求地址中的IP或域名一致。
三、证书安装
3.1 网站安装证书
将应用证书private.crt和应用证书私钥private.key上传到网站上进行安装
3.2 用户电脑安装证书
将根证书CA.crt上传到需要访问网站的PC上,例如WIN10
双击安装CA.crt
注意在选择安装区域时,一定要选择“受信任的根证书颁发机构”
四、结束
重启浏览器,访问网站就不会提示与此网站的连接不安全
