惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园 - 司徒正美
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Palo Alto Networks Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cyberwarzone
Cyberwarzone
小众软件
小众软件
T
Threatpost
Latest news
Latest news
J
Java Code Geeks
博客园 - Franky
博客园 - 三生石上(FineUI控件)
Project Zero
Project Zero
P
Privacy & Cybersecurity Law Blog
T
Tenable Blog
L
Lohrmann on Cybersecurity
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
Scott Helme
Scott Helme
Simon Willison's Weblog
Simon Willison's Weblog
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
人人都是产品经理
人人都是产品经理
S
Schneier on Security
T
The Blog of Author Tim Ferriss
V
V2EX
有赞技术团队
有赞技术团队
Y
Y Combinator Blog
罗磊的独立博客
IT之家
IT之家
雷峰网
雷峰网
H
Help Net Security
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tor Project blog
C
Cybersecurity and Infrastructure Security Agency CISA
I
InfoQ
GbyAI
GbyAI
博客园 - 叶小钗
PCI Perspectives
PCI Perspectives
The GitHub Blog
The GitHub Blog
Martin Fowler
Martin Fowler
H
Heimdal Security Blog
Spread Privacy
Spread Privacy
博客园_首页
A
About on SuperTechFans
T
Tailwind CSS Blog
The Register - Security
The Register - Security

PHP武器库

4天花40亿,glm-5v-turbo体验笔记-PHP武器库 ulthon_admin 2.1 全面支持智能体驱动,内置框架技能,自动建表、自动分配菜单、自动分配权限、页面接口同体、自动验证接口和数据!-PHP武器库 CSS框架的“最后一公里”:从基础元件到业务场景-PHP武器库 ULUI:不止于按钮和菜单,一个专注于“业务组件”的纯 CSS 框架-PHP武器库 Caddy 流量监控终极指南:用 Prometheus + Grafana 点亮你的服务黑盒-PHP武器库 从零到一:用 Vue 打造一个零依赖、插件化的 JS 库-PHP武器库 告别PECL,拥抱PIE:像Composer一样管理PHP扩展-PHP武器库 大规模 PHP 应用在高并发下如何进行性能优化?-PHP武器库 PHP 高性能队列探索:从 SQLite 到内存,我们该如何选择?-PHP武器库 BTRFS 核心功能与实践笔记-PHP武器库 一个社区语言能泛起多大浪花?PHP30周年线上活动PHPverse-PHP武器库 盘点一下这些年PHP在桌面应用方面的解决方案-PHP武器库 ulthon_admin 发布新版,新增地图选点组件、优化提示样式、增强优化多出细节-PHP武器库 像树一样,慢慢生长!包含大量特性更新,升级底层layui和ThinkPHP、增加docker配置、升级权限配置、更换富文本、实现新的扩展架构和代码架构等等。-PHP武器库 PHP网站改版了知道吗?-PHP武器库 BSD 开源协议解析:自由度与灵活性的平衡-PHP武器库 感觉PHP和vue在前端方面差不多,有没有必要学vue或者其他的前端框架?-PHP武器库 前端会被后端代替吗?-PHP武器库 有哪些知名的网站使用 PHP 进行开发?-PHP武器库 想学编程,java,python,php先学哪个比较好?-PHP武器库 现在的 ThinkPHP8(重构版) 和 Laravel8哪个好? -PHP武器库 PHP8.3发布-PHP武器库 [AppNode]Linux 服务器集群管理面板-PHP武器库 [Hestia]开源网络服务器控制面板,快速、可靠、开源-PHP武器库 web初学者如何保证自身服务器安全?-PHP武器库
HTTPS 自签名证书生成与安装完整指南-PHP武器库
2025-09-25 · via PHP武器库

2025-09-25 奥古斯宏

背景

在开发环境或内网环境中,我们经常需要为服务器配置 HTTPS 证书。本文记录了如何生成支持多IP地址的自签名证书,并解决浏览器兼容性问题的完整过程。

问题分析

现代浏览器对 HTTPS 证书的要求越来越严格:
1. 必须包含 SAN (Subject Alternative Name) - 仅有 CN 不够
2. 不能标记为 CA 证书 - 必须是终端实体证书
3. 需要正确的密钥用途扩展

证书生成

1. 生成支持多IP的自签名证书

# 生成支持多个IP地址的证书,有效期10年
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 3650 -nodes \
  -subj "/C=CN/S=Province/L=City/O=Organization/OU=Department/CN=10.0.0.100" \
  -addext "subjectAltName=IP:10.0.0.100,IP:192.168.1.100,IP:172.16.0.100" \
  -addext "basicConstraints=CA:FALSE" \
  -addext "keyUsage=digitalSignature,keyEncipherment" \
  -addext "extendedKeyUsage=serverAuth"

2. 验证证书信息

# 检查 SAN 扩展
openssl x509 -in server.crt -text -noout | grep -A 5 "Subject Alternative Name"
# 验证为非CA证书
openssl x509 -in server.crt -text -noout | grep -A 3 "Basic Constraints"
# 查看证书有效期
openssl x509 -in server.crt -noout -dates

3. 参数说明

  • -days 3650: 10年有效期
  • -nodes: 私钥不加密
  • basicConstraints=CA:FALSE: 标记为终端实体证书
  • keyUsage: 设置密钥用途
  • extendedKeyUsage=serverAuth: 服务器认证用途
  • subjectAltName: 支持的IP地址列表

Nginx 配置

# File: /etc/nginx/sites-available/your-site
server {
    listen 8084 ssl;
    server_name 10.0.0.100 192.168.1.100 172.16.0.100;

    ssl_certificate /path/to/server.crt;
    ssl_certificate_key /path/to/server.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        # 你的应用配置
    }
}
# 重启 Nginx
sudo systemctl restart nginx

Windows 证书安装

1. 安装到受信任的根证书颁发机构

  1. server.crt 文件复制到 Windows 机器
  2. 右键点击证书文件 → "安装证书"
  3. 选择 "本地计算机" → "下一步"
  4. 选择 "将所有的证书都放入下列存储" → "浏览"
  5. 选择 "受信任的根证书颁发机构" → "确定"
  6. 完成安装

2. 验证安装

# 打开证书管理器
certmgr.msc

在 "受信任的根证书颁发机构" → "证书" 中确认证书已安装。

浏览器测试

支持的访问地址

  • https://10.0.0.100:8084
  • https://192.168.1.100:8084
  • https://172.16.0.100:8084

清除浏览器缓存

Chrome/Edge:
- 设置 → 隐私和安全 → 清除浏览数据 → 选择"所有时间"

Firefox:
- 设置 → 隐私与安全 → 清除数据

常见错误及解决方案

1. SSL_ERROR_BAD_CERT_DOMAIN

原因: 缺少 SAN 扩展或域名不匹配
解决: 确保证书包含正确的 subjectAltName

2. MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY

原因: 证书被错误标记为 CA 证书
解决: 添加 basicConstraints=CA:FALSE

版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

3. 证书不受信任

原因: 证书未安装到正确位置
解决: 确保安装到 "受信任的根证书颁发机构"

生产环境建议

  1. 使用 Let's Encrypt 获取免费的受信任证书
  2. 定期更新证书 避免过期
  3. 使用强加密算法 如 RSA 4096 或 ECC
  4. 配置 HSTS 强制 HTTPS 访问

总结

通过正确配置 SAN 扩展和证书属性,可以生成兼容现代浏览器的自签名证书。关键是理解浏览器的安全要求,并在生成证书时包含所有必要的扩展信息。

原文标题: HTTPS 自签名证书生成与安装完整指南

原文地址: https://phpreturn.com/index/a68d5008cbf42a.html

原文平台: PHP武器库

版权声明: 本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。