一、准备工作

  1. 1 准备需要访问的网站地址http或者https,这里以https举例

  2. 2 确保域名可以正常解析,网站可以正常访问

  3. 3 准备Linux并安装Openssl,这里以CentOS8.1举例

sudo yum install -y openssl
  1. 4 创建一个文件夹用于创建证书

二、生成证书

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_ca

2.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.csr

2.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.space

2.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 SAN

2.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

注意在选择安装区域时,一定要选择“受信任的根证书颁发机构”

四、结束

重启浏览器,访问网站就不会提示与此网站的连接不安全