1. HTTPS证书生成实战指南作为一名长期奋战在前后端开发一线的工程师我深知HTTPS证书在Web开发中的重要性。今天要分享的是如何在本地开发环境中快速生成自签名HTTPS证书的完整流程这个技能对于前后端联调、接口测试等场景特别实用。你可能遇到过这样的场景前端开发需要调用HTTPS接口但测试环境还没准备好证书或者本地开发时需要使用HTTPS协议测试某些浏览器特性。这时候自签名证书就能派上大用场。虽然Lets Encrypt等免费证书服务已经很普及但在内网或本地开发环境自签名证书仍然是最高效的解决方案。2. 准备工作与环境配置2.1 工具选择与安装生成HTTPS证书最常用的工具是OpenSSL这是一个功能强大的开源加密工具包。在Windows系统上我推荐使用MSYS2环境来运行OpenSSL因为它提供了类Unix的环境操作起来更加方便。安装步骤下载并安装MSYS2https://www.msys2.org/在MSYS2终端中执行pacman -S openssl验证安装openssl version提示如果你使用的是Linux或macOS系统OpenSSL通常已经预装可以直接使用。2.2 目录结构规划良好的目录结构能让证书管理更加清晰。我建议按照以下方式组织nginx-1.23.3/ └── conf/ └── certs/ ├── wzz.key └── wzz.crt创建目录的命令mkdir -p /d/nginx-1.23.3/conf/certs3. 证书生成详细步骤3.1 核心命令解析让我们仔细分析这个OpenSSL命令的每个参数MSYS_NO_PATHCONV1 openssl req -x509 -nodes -days 365 \ -newkey rsa:2048 -keyout conf/certs/wzz.key \ -out conf/certs/wzz.crt -subj /CN192.168.69.253 \ -addext subjectAltNameIP:192.168.69.253参数说明MSYS_NO_PATHCONV1MSYS2环境专用防止路径转换req证书请求命令-x509生成自签名证书-nodes不加密私钥no DES-days 365证书有效期1年-newkey rsa:2048生成2048位RSA密钥-keyout私钥输出路径-out证书输出路径-subj证书主题这里用IP作为通用名-addext添加扩展项SAN扩展3.2 实际操作演示首先进入Nginx目录cd /d/nginx-1.23.3执行证书生成命令根据你的实际IP修改MSYS_NO_PATHCONV1 openssl req -x509 -nodes -days 365 \ -newkey rsa:2048 -keyout conf/certs/wzz.key \ -out conf/certs/wzz.crt -subj /CN192.168.69.253 \ -addext subjectAltNameIP:192.168.69.253查看生成的证书信息openssl x509 -in conf/certs/wzz.crt -noout -text3.3 证书内容验证生成的证书应该包含以下关键信息版本v3X.509 v3签名算法sha256WithRSAEncryption颁发者和使用者都是你的IP有效期从当前时间开始365天公钥RSA 2048位X509v3扩展包含SANSubject Alternative Name4. Nginx配置使用证书4.1 基础HTTPS配置生成证书后需要在Nginx中配置使用。以下是基本配置示例server { listen 443 ssl; server_name 192.168.69.253; ssl_certificate conf/certs/wzz.crt; ssl_certificate_key conf/certs/wzz.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { root html; index index.html index.htm; } }4.2 配置优化建议启用HTTP/2listen 443 ssl http2;添加安全头add_header Strict-Transport-Security max-age63072000 always; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options DENY;会话缓存优化ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;5. 浏览器信任证书5.1 导入证书到系统信任库自签名证书默认不被浏览器信任需要手动导入Windows系统双击wzz.crt文件选择安装证书存储位置选择本地计算机选择将所有证书放入下列存储浏览选择受信任的根证书颁发机构macOS系统sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain wzz.crt5.2 解决Chrome的NET::ERR_CERT_INVALID错误即使导入了证书Chrome可能仍然会显示警告。这时可以在Chrome地址栏输入chrome://flags/#allow-insecure-localhost将该项设置为Enabled重启浏览器6. 常见问题与解决方案6.1 证书生成错误排查路径问题确保路径存在且有写入权限MSYS2环境中使用/d/而不是D:/SAN扩展错误旧版OpenSSL可能不支持-addext替代方案使用配置文件方式密钥强度不足RSA 2048是最低要求建议考虑3072位ECDSA密钥更高效-newkey ec -pkeyopt ec_paramgen_curve:P-2566.2 证书使用问题浏览器仍然不信任确保证书已正确导入信任库清除浏览器缓存尝试重启浏览器证书过期可以通过-days参数延长有效期但生产环境不建议超过825天2年多域名支持在SAN中添加多个DNS或IP-addext subjectAltNameIP:192.168.69.253,DNS:localhost,DNS:example.com7. 进阶技巧与最佳实践7.1 自动化证书生成对于需要频繁生成证书的场景可以创建脚本#!/bin/bash DOMAIN$1 IP$2 openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout ${DOMAIN}.key -out ${DOMAIN}.crt \ -subj /CN${DOMAIN} -addext subjectAltNameDNS:${DOMAIN},IP:${IP}7.2 证书链问题如果需要模拟完整的证书链可以创建中间CA生成根CA生成中间CA并用根CA签名生成终端证书并用中间CA签名7.3 密钥安全建议虽然开发环境为了方便使用了-nodes参数但在生产环境中应该为私钥设置密码私钥文件权限设置为600考虑使用硬件安全模块(HSM)我在实际开发中发现合理使用自签名证书可以极大提高开发效率特别是在微服务架构下各个服务之间需要通过HTTPS通信时。一个建议是建立一个内部CA为所有开发人员统一颁发证书这样既保证了安全性又避免了每个开发者自己管理证书的麻烦。
企业数字化 ERP 产品动态
相关推荐
鸿蒙开发实战:从环境配置到分布式应用设计 1. 鸿蒙生态开发全景解读作为华为自主研发的分布式操作系统,HarmonyOS正在重塑智能终端开发格局。我完整经历了从HarmonyOS 2.0到4.0的演进过程,深刻体会到这个生态给开发者带来的机遇与挑战。不同于传统移动端开发,鸿蒙的"一次开发&… · 2026/9/24 1:26:02
Node.js命令行AI工具OpenClaw安装与使用指南 1. 项目概述OpenClaw是一款基于Node.js开发的AI助手工具,它能够通过命令行界面与多种大语言模型进行交互。作为一个Mac用户,你可能已经厌倦了在各种网页和应用之间切换来使用不同的AI服务。OpenClaw的出现解决了这个问题,它整合了包括Kimi、千… · 2026/9/21 23:44:43
手写实现英特尔网卡驱动底层逻辑,面试官必问的5个坑 手写实现英特尔网卡驱动底层逻辑,面试官必问的5个坑 英特尔网卡(Intel NIC)在高性能计算和云计算场景中几乎是标配,但很多开发者只停留在 ip addr 和 ethtool… · 2026/9/21 23:44:43
PhpStorm 键盘快捷键速查手册:基于 reference 仓库的 PHP 开发高效操作指南 文档知识库教程开发工具 【免费下载链接】reference 为开发人员分享快速参考备忘清单(速查表) 项目地址: https://gitcode.com/jaywcjlove/reference 点击查看 免费下载 导读:本指南以 reference 仓库中的 PhpStorm 键盘快捷键备忘单 为骨架,… · 2026/9/24 1:26:05
离线反激电源反馈环路设计:Type II补偿器与TL431光耦实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 1:25:53
SAP销售BOM配置与实战:从CS61到VA01的完整指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 1:25:22
语义搜索实战:基于DeepSeekEmbedding的相似度匹配与向量检索 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 1:25:04
offergo 实战:技术面被问到不会的题,怎么体面应对 技术面被问住几乎是每个程序员都会遇到的事。差别只在于,有人被问住之后还能体面地把话题接回来,有人则当场卡死,后面十分钟全在自我怀疑。这篇把应对流程拆成四步,都是可以直接照做的动作。
一、先判断这是「不会」还是「没想清… · 2026/9/24 1:25:04
agent科研方向前沿探索与应用实践研究 每次找到心仪的外国文献,却被付费墙冷冷地挡在外面,是不是感觉科研的热情瞬间被浇灭?作为学生党,我太懂这种无力感了。但好消息是,通过几个合法且免费的“通道”和技巧,我们完全能实现“文献自由”。今天分… · 2026/9/24 1:24:58
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44