Nginx 生成、配置SSL证书&让浏览器信任证书

文章目录

1.生成SSL证书

1.1生成自签名证书(生成证书方式一)

# 生成私钥:server.key
[root@localhost ~]# openssl genrsa -out server.key 2048


# 生成证书请求文件:server.csr 
[root@localhost cert]# openssl req -new -key server.key -out server.csr 
	Country Name (2 letter code) [XX]:cn  	《==这里填国家
	State or Province Name (full name) []:guangdong		《==这里填省份
	Locality Name (eg, city) [Default City]:shenzhen	《==这里填城市
	Organization Name (eg, company) [Default Company Ltd]:xxx公司	《==这里填公司名称
	Organizational Unit Name (eg, section) []:xxx部门		《==这里填公司部门
	Common Name (eg, your name or your server's hostname) []:www.example.com 《==这里网站域名或者IP

# 自签名方式-生成证书文件:server.crt
[root@localhost cert]# openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365000
	Signature ok
	subject=/C=cn/ST=guangdong/L=shenzhen/O=das/OU=ma/CN=www.das.com
	Getting Private key

生成完毕后,实际有用的只有 server.key 和 server.crt文件
在这里插入图片描述

1.2.模拟CA机构方式生成证书(生成证书方式二,推荐)

在 OpenSSL 中生成证书时,-CAkey 选项用于指定 CA(证书颁发机构)的私钥文件。这个私钥文件用于签署生成的证书,从而证明证书是由该 CA 颁发的。

3.1 生成 CA 的私钥ca.key和自签名证书ca.crt:
openssl req -x509 -nodes -days 365000 -newkey rsa:2048 -subj "/C=CN/ST=guangdong/L=shenzhen/O=DAS" -keyout ca.key -out ca.crt -reqexts v3_req -extensions v3_ca
3.2 生成服务器私钥 server.key:
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/C=CN/ST=guangdong/L=shenzhen/O=DAS/CN==www.example.com" -sha256 -out server.csr
3.3 生成服务器证书请求文件server.csr:
openssl genrsa -out server.key 2048
3.4 生成服务器证书请求文件 server.csr:
openssl req -new -key server.key -subj "/C=CN/ST=guangdong/L=shenzhen/O=DAS/CN=www.example.com" -sha256 -out server.csr
3.5 创建扩展文件private.ext(让证书可以关联多个受信任域名或者IP)
cat > private.ext << EOF
[ req ]
default_bits        = 2048
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 = @alt_names

[alt_names]
DNS.1 = www.example.com
DNS.2 = www.example.net
DNS.3 = www.example.org
#IP.1 = 192.168.1.1
#IP.2 = 203.0.113.1

EOF

注:在上文的DNS.x 填上你网站使用的域名、IP.X填上你网站使用的IP。结合实际来,看你网站使用的是域名还是IP,也可以都进行配置。

3.6 生成服务器证书文件 server.crt:
openssl x509 -req -days 365000 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out server.crt -extfile private.ext -extensions SAN

注:-extfile private.ext -extensions SAN 是指告诉OpenSSL从private.ext文件中读取[SAN]下扩展的定义,并将其应用到正在生成的证书中

3.7 验证生成的证书(可选):
#验证证书
openssl x509 -in server.crt -text -noout
这个命令会显示证书的详细信息,包括颁发者、有效期、公钥等。

证书生成完毕后,相关文件如下所示:
在这里插入图片描述

2 修改nginx.conf配置

server {
    listen 80;
    server_name localhost;
   # 将所有http请求自动跳转至https
   return 302 https://$host$request_uri;
}

server {
    listen       443 ssl;
    server_name  localhost;
	
	# ssl配置
	ssl_certificate /上文生成的的证书目录路径/server.crt;   		   # 证书文件路径
    ssl_certificate_key /上文生成的的证书目录路径/server.key;        # 私钥文件路径
    ssl_session_timeout 5m;                                # ssl会话信息保留时间
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                   # 仅启用安全的 TLS 版本
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;    # 指定强大的加密套件(用于对称和非对称加密算法)
    ssl_prefer_server_ciphers on;                          # 优先使用服务器端的加密套件


    client_max_body_size 100m;  # 客户端请求体的最大允许大小;
    
	# ... 以下是你配置文件的其他配置
}

3 安装证书到本地,让浏览器信任证书

安装证书,让浏览器信任证书。

正常情况下,用浏览器访问自签名的证书网站,那么浏览器会提示当前网站不安全,证书不受信任。
在这里插入图片描述
在这里插入图片描述

下面 以上文 “模拟CA机构方式生成证书(生成证书方式二,推荐)” 方式安装CA证书到本地,让浏览器信任证书。

双击ca.crt文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再次访问
注:在访问网站使用的IP或者域名,必须是 subjectAltName 下指定的域名或者IP。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值