news 2026/5/23 20:21:18

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nginx 生成、配置SSL证书让浏览器信任证书
文章目录
  • 1.生成SSL证书
    • 1.1生成自签名证书(生成证书方式一)
    • 1.2.模拟CA机构方式生成证书(生成证书方式二,推荐)
      • 3.1 生成 CA 的私钥ca.key和自签名证书ca.crt:
      • 3.2 生成服务器私钥 server.key:
      • 3.3 生成服务器证书请求文件server.csr:
      • 3.4 生成服务器证书请求文件 server.csr:
      • 3.5 创建扩展文件private.ext(让证书可以关联多个受信任域名或者IP)
      • 3.6 生成服务器证书文件 server.crt:
      • 3.7 验证生成的证书(可选):
  • 2 修改nginx.conf配置
  • 3 安装证书到本地,让浏览器信任证书

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。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 21:09:02

如何查看电脑上是ros1还是ros2呢?

问题描述&#xff1a;如何查看电脑上是ros1还是ros2呢&#xff1f;问题解答&#xff1a;要查看你的电脑上安装的是 ROS 1 还是 ROS 2&#xff0c;可以通过以下几种方式来确认&#xff1a;1. 检查环境变量ROS 通常会在环境变量中设置一些标识&#xff0c;可以通过查看终端中的环…

作者头像 李华
网站建设 2026/5/11 2:11:38

net.sf.jsqlparser.statement.select.Select.getSelectBody()

1、问题原因 发生这个问题就是因为Pagehelper中jsqlparser和Mybatis-puls中jsqlparser冲突&#xff0c;以我的项目来说&#xff0c;我项目中的Pagehelper中jsqlparser版本为4.2而Mybatis-puls中jsqlparser的版本为4.9&#xff0c;就导致版本兼容问题 2、解决方法 如果你想以…

作者头像 李华
网站建设 2026/5/21 14:45:13

Nginx 安装及配置教程(Windows)【安装】

文章目录 一、 Nginx 下载 1. 官网下载2. 其它渠道 二、 Nginx 安装三、 配置四、 验证五、 其它问题 1. 常用命令2. 跨域问题 软件 / 环境安装及配置目录 一、 Nginx 下载 1. 官网下载 安装地址&#xff1a;https://nginx.org/en/download.html 打开浏览器输入网址 htt…

作者头像 李华
网站建设 2026/5/23 5:23:43

金运环球:被动卖压VS鸽派预期,非农前聚焦关键区间

【市场早间简述】大宗商品指数年度再平衡于昨日盘后正式启动&#xff0c;预计将产生显著被动抛压&#xff0c;昨日金银价格在抛压下V型反弹显示买盘支撑。地缘政治风险持续存在&#xff0c;叠加美联储官员鸽派表态强化降息预期&#xff0c;为市场提供中长期支撑。现货黄金与白银…

作者头像 李华
网站建设 2026/5/3 8:11:23

MySQL:顿悟了,添加索引时竟然不锁表?

一、前言 在 MySQL 数据库中&#xff0c;“锁表” 指的是对数据库表进行锁定&#xff0c;以控制对表中数据的并发访问。锁表是数据库管理系统&#xff08;DBMS&#xff09;用来维护数据一致性和完整性的一种机制。 当某个事务&#xff08;Transaction&#xff09;或操作需要对表…

作者头像 李华
网站建设 2026/5/15 7:40:26

Sheet-to-Doc vs 邮件合并:选择最适合你的文档生成工具

在文档自动化生成领域&#xff0c;邮件合并是一个广为人知的功能&#xff0c;而Sheet-to-Doc则是一款新兴的文档自动化工具。两者都可以实现从Excel数据到Word文档的自动转换&#xff0c;但它们在功能、易用性、性能等方面存在明显差异。今天&#xff0c;我将详细比较Sheet-to-…

作者头像 李华