当前位置: 首页 > article >正文

从ERR_CERT_COMMON_NAME_INVALID到安全连接:证书主题与域名匹配的实战指南

1. 当浏览器说不信任时发生了什么上周我在部署内部测试环境时遇到了一个熟悉的红色警告页。Chrome用刺眼的红色告诉我您的连接不是私密连接错误代码ERR_CERT_COMMON_NAME_INVALID。这就像你去银行办事工作人员核对身份证时发现名字和系统记录不符——浏览器就是那个较真的柜员SSL证书就是你的数字身份证。这个错误的核心在于证书主题标识Subject Alternative Name/SAN和实际访问域名的匹配问题。想象你拿着写有张三的身份证去办理张小三的业务虽然只差一个字但系统就会拒绝。浏览器验证证书时也会做类似的严格比对首先检查证书的Common NameCN字段然后检查SAN扩展中的DNS记录最后比对地址栏域名与上述字段是否完全一致我遇到过最典型的场景是为api.example.com生成的证书却被用在www.example.com上。虽然同属一个主域但对浏览器来说就像用A小区的门禁卡刷B小区的闸机——根本行不通。2. 诊断证书问题的三板斧2.1 用OpenSSL做体检报告当错误出现时第一步应该是检查证书的详细内容。就像医生用听诊器检查病人我们可以用OpenSSL命令查看证书内脏openssl x509 -in server.crt -text -noout重点关注两个部分Subject:这里会显示CN字段X509v3 Subject Alternative Name:这里会列出所有有效域名我常用这个组合命令快速提取关键信息openssl x509 -in server.crt -noout -text | grep -E Subject:|DNS:2.2 浏览器开发者工具的妙用现代浏览器的开发者工具是排查SSL问题的瑞士军刀。在Chrome中点击警告页面的高级→继续前往按F12打开开发者工具转到Security标签页这里能看到完整的证书链点击View certificate可以直观看到证书包含的所有域名。我经常发现开发者配置了多域名证书但漏掉了关键的二级域名。2.3 证书链完整性检查有时候问题不在终端证书而在证书链缺失。用这个命令验证openssl verify -CAfile root_ca.crt -untrusted intermediate.crt server.crt曾经有个生产环境故障就是因为运维同学忘记部署中间证书导致所有iOS设备报错而Android却正常——这种平台差异性问题特别容易踩坑。3. 正确生成证书的实战指南3.1 自签名证书的正确姿势测试环境常用自签名证书但很多人直接用简单命令生成openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem这样生成的证书只有CN字段没有SAN扩展现代浏览器会直接拒绝。正确的做法是使用配置文件# ssl.conf [req] distinguished_name req_distinguished_name x509_extensions v3_req prompt no [req_distinguished_name] CN test.example.com [v3_req] keyUsage digitalSignature, keyEncipherment extendedKeyUsage serverAuth subjectAltName alt_names [alt_names] DNS.1 test.example.com DNS.2 *.test.example.com然后执行openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -config ssl.conf3.2 多域名与通配符证书配置对于需要支持多个域名的情况SAN扩展是必须的。在配置文件的[alt_names]段这样配置DNS.1 example.com DNS.2 www.example.com DNS.3 api.example.com DNS.4 *.cdn.example.com注意通配符()只能匹配同一级子域名比如.example.com可以匹配a.example.com但不能匹配a.b.example.com。3.3 CSR生成的最佳实践申请商业证书时CSR证书签名请求的生成质量直接影响最终证书的可用性。我推荐这个流程生成私钥openssl genpkey -algorithm RSA -out private.key -aes256创建CSR配置文件[req] default_bits 2048 prompt no default_md sha256 distinguished_name dn req_extensions req_ext [dn] CN www.example.com O Example Company L Shanghai C CN [req_ext] subjectAltName alt_names [alt_names] DNS.1 www.example.com DNS.2 example.com IP.1 192.168.1.1生成CSRopenssl req -new -key private.key -out request.csr -config csr.conf4. 常见场景解决方案4.1 本地开发环境配置开发时经常需要localhost或127.0.0.1的HTTPS支持。这是我最常用的本地证书配置[alt_names] DNS.1 localhost IP.1 127.0.0.1 IP.2 ::1对于前端开发还需要配置webpack或vite// vite.config.js import { defineConfig } from vite import fs from fs export default defineConfig({ server: { https: { key: fs.readFileSync(localhost-key.pem), cert: fs.readFileSync(localhost.pem) } } })4.2 容器化环境处理在Docker环境中证书管理需要特别注意COPY ./certs /etc/ssl/certs RUN update-ca-certificatesKubernetes中可以通过Secret挂载证书apiVersion: v1 kind: Secret metadata: name: tls-secret type: kubernetes.io/tls data: tls.crt: base64编码的证书 tls.key: base64编码的私钥4.3 证书自动续期方案对于Lets Encrypt证书我推荐使用certbot的docker版本docker run -it --rm --name certbot \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/lib/letsencrypt:/var/lib/letsencrypt \ certbot/certbot renew设置cron任务自动续期0 0 * * * docker run --rm -v /etc/letsencrypt:/etc/letsencrypt -v /var/lib/letsencrypt:/var/lib/letsencrypt certbot/certbot renew --quiet5. 高级排查技巧5.1 证书透明度日志检查当证书看起来一切正常但依然报错时可以检查证书透明度日志openssl x509 -in cert.pem -noout -text | grep -A1 CT Precertificate SCTs或者使用在线工具检查证书是否被意外吊销。5.2 OCSP装订配置OCSP装订可以显著提高SSL握手性能。在Nginx中配置ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /path/to/full_chain.pem;验证装订是否生效openssl s_client -connect example.com:443 -status -servername example.com5.3 HSTS策略优化对于生产环境建议启用HSTSadd_header Strict-Transport-Security max-age63072000; includeSubDomains; preload;但要注意这会导致测试环境无法降级到HTTP开发时可以先注释掉这行。

相关文章:

从ERR_CERT_COMMON_NAME_INVALID到安全连接:证书主题与域名匹配的实战指南

1. 当浏览器说"不信任"时发生了什么? 上周我在部署内部测试环境时,遇到了一个熟悉的红色警告页。Chrome用刺眼的红色告诉我:"您的连接不是私密连接",错误代码ERR_CERT_COMMON_NAME_INVALID。这就像你去银行办…...

书成紫微动,律定凤凰驯:《第一大道》破的是资本,《凰标》立的是民心

书成紫微动,律定凤凰驯。 ——千年古谶,道破治乱循环: 乱世由乱象所积,盛世由人心所筑。一、困局:资本驯化文艺的三重锁链锁链症状结果垄断话语权曝光渠道、评价标准、出圈资源尽归资本民间佳作被算法活埋绑架审美流水…...

高危场所专用防爆门 符合建筑消防标准

在化工车间、危险品仓库、油气厂区、锅炉房、粉尘车间等高危作业场所,爆炸、明火、冲击波隐患时刻存在,普通门窗无法起到安全防护作用,高危场所专用防爆门成为场地安防必备设施。 这款专业防爆门严格遵循国家建筑消防规范生产制造&#xff0…...

手把手教你用Python脚本给飞书机器人“喂”数据:Gerrit事件通知实战

Python自动化实战:用飞书机器人构建Gerrit事件通知系统 每当团队协作开发时,代码审查状态的实时同步总是让人头疼。想象一下:你刚提交的代码被同事点赞,或是某个关键补丁集终于通过审核——这些重要时刻如果能在飞书群里即时提醒&…...

SHA-3:从海绵构造到KECCAK-p,深入解析新一代哈希函数核心

1. 为什么我们需要SHA-3? 记得我第一次接触哈希函数时,用的还是SHA-1。那时候做文件校验,用SHA-1生成个摘要,感觉既方便又安全。直到后来看到新闻说SHA-1被破解了,我才意识到密码学世界的变化有多快。这就是SHA-3诞生的…...

Jetson Nano玩家必看:Windows下用Diskpart彻底格式化SD卡(解决烧录后不识别问题)

Jetson Nano玩家必备技能:Windows下彻底格式化SD卡的终极指南 当你兴奋地将Linux系统镜像烧录到SD卡,准备在Jetson Nano上大展拳脚时,却发现Windows资源管理器里那张卡"消失"了——这不是灵异事件,而是分区表变化导致的…...

Unity 2019.4.7f1实战:从零复刻Flappy Bird,搞定PC/Web/Android三端发布

Unity 2019.4.7f1实战:从零复刻Flappy Bird,搞定PC/Web/Android三端发布 当你第一次打开Unity时,面对那个空荡荡的3D场景,可能会有些不知所措。但别担心,今天我们就用这个看似简单的Flappy Bird游戏,带你走…...

从零搭建ROS2与Web实时数据交互系统

1. 为什么需要ROS2与Web实时交互? 在机器人开发或IoT项目中,我们经常需要通过网页远程监控设备状态或发送控制指令。想象一下这样的场景:你正在调试一个自动巡逻的机器人,但总不能一直盯着终端看日志吧?这时候如果有个…...

基于节点电价的电网对电动汽车接纳能力评估模型研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。 🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &…...

HPM5361EVK开发板深度体验:480MHz RISC-V MCU实战开发与性能评测

1. 项目概述:从开箱到点亮,一个真实的HPM5361EVK上手体验上次聊了HPM5361EVK开发板的开箱和硬件初印象,很多朋友后台留言,催更实际的上手体验和性能测试。确实,一块开发板好不好,光看参数和做工是远远不够的…...

FPGA开发入门:从零开始用Vivado实现LED流水灯项目

1. 项目概述与核心价值最近在后台和社群里,看到不少刚接触FPGA开发的朋友,特别是从单片机或嵌入式软件转过来的,对于如何上手第一个完整的FPGA项目感到有些迷茫。大家常问:“我学了Verilog语法,也跑过仿真了&#xff0…...

软电路入门:用导电缝纫线与LED制作可穿戴发光作品

1. 项目概述:当缝纫遇见电路 几年前,我第一次把一颗会发光的LED缝到帆布包上时,那种感觉非常奇妙。它不再是冰冷的电路板,而是布料纹理的一部分,随着针脚的走向亮起柔和的光。这就是软电路,或者说电子纺织品…...

Mac小白必看:手把手教你用终端命令重建丢失的Recovery HD分区(附详细路径解释)

Mac用户自救指南:彻底掌握Recovery HD分区修复全流程 当你发现CommandR组合键失效时,那种无助感我深有体会。去年帮朋友修复一台二手MacBook时,我们花了整整一个下午才搞明白为什么恢复模式无法启动——原来前主人为了腾出空间删除了Recovery…...

别再只会写脚本了!用Matlab APP Designer给你的数据分析做个可视化界面(附完整代码)

从脚本到交互式应用:用MATLAB APP Designer打造专业数据分析工具 在数据科学和工程领域,MATLAB一直是不可或缺的计算工具。然而,许多用户长期停留在命令行脚本的层面,未能充分发挥MATLAB的完整潜力。本文将带您突破这一局限&#…...

避坑指南:QGraphicsView自适应缩放时,为什么你的Item总对不齐或留白?

避坑指南:QGraphicsView自适应缩放时Item对齐与留白问题深度解析 在Qt图形界面开发中,QGraphicsView框架因其强大的2D显示能力被广泛应用。但当开发者尝试实现视图内容的自适应缩放时,经常会遇到一个令人头疼的问题——调用fitInView后&#…...

跨越平台鸿沟:Simulink、VeriStand与LabVIEW联合仿真环境一站式部署指南

1. 为什么需要联合仿真环境? 在工业自动化和科研领域,我们经常遇到一个尴尬的局面:不同团队使用的工具链完全不同。控制算法工程师习惯用Simulink建模,测试工程师依赖LabVIEW开发上位机,而硬件在环(HIL&am…...

Hugging Face Tokenizer的padding、truncation参数详解:如何让你的BERT/RoBERTa输入不出错?

Hugging Face Tokenizer的padding与truncation实战指南:BERT输入处理的深度解析 当你第一次将文本输入BERT模型时,是否遇到过这样的报错:"RuntimeError: The size of tensor a (512) must match the size of tensor b (128)"&#…...

Unity 2021.3 + EDM4U:手把手搞定Google登录SDK的安卓依赖与打包避坑

Unity 2021.3 EDM4U:深度解析Google登录SDK的安卓依赖管理实战 在移动应用开发中,第三方登录功能几乎是标配,而Google登录作为全球用户覆盖率最高的方案之一,其集成过程却常常让Unity开发者头疼不已。特别是当项目升级到Unity 2…...

面试官问‘0.1+0.2≠0.3’,你能从CPU层面讲清楚吗?浮点数运算避坑指南

为什么0.10.2不等于0.3?从晶体管到代码的浮点数运算解密 当你在Python或JavaScript中输入0.1 0.2时,得到的不是预期的0.3,而是一个近似值0.30000000000000004。这个看似简单的数学问题背后,隐藏着计算机处理数字的复杂机制。理解…...

ARM架构TLB机制与TLBI指令详解

1. ARM TLB机制与TLBI指令概述在ARM架构中,TLB(Translation Lookaside Buffer)是内存管理单元(MMU)的核心组件,负责缓存虚拟地址到物理地址的转换结果。当CPU访问内存时,首先查询TLB获取地址转换…...

别再只盯着P值了!用Stata做格兰杰检验后,这样解读结果才专业(含VAR模型与脉冲响应分析)

超越P值陷阱:格兰杰检验的深度解读与Stata实战指南 当屏幕上跳出那个熟悉的P值时,大多数研究者会条件反射般地做出二元判断——"显著"或"不显著",然后匆匆写下结论。这种机械式的数据分析方式正在学术界和业界制造大量&q…...

开关电源传导EMI超标?手把手教你用π型滤波器搞定(附SCT2450实测数据)

开关电源传导EMI超标?手把手教你用π型滤波器搞定(附SCT2450实测数据) 在电源设计领域,传导EMI超标是工程师们经常遇到的棘手问题。当你的产品在EMC实验室测试失败时,那种挫败感相信每个硬件工程师都深有体会。传导噪声…...

深入GD32 CAN FD驱动层:从寄存器配置到ISO 15765协议栈的实战解析

深入GD32 CAN FD驱动层:从寄存器配置到ISO 15765协议栈的实战解析 在车载电子与工业控制领域,CAN FD协议正逐步取代传统CAN总线,成为高速数据传输的新标准。GD32系列MCU凭借其出色的性价比和丰富的外设资源,成为许多嵌入式开发者的…...

告别Canvas截图:用MediaProjection搞定Android状态栏和视频画面的完整截取方案

Android屏幕捕获终极方案:MediaProjection深度解析与实战 在移动应用开发中,屏幕捕获功能的需求日益增长,从用户反馈收集到操作演示录制,再到远程协作支持,这一功能已成为许多应用的核心竞争力。然而,传统基…...

基于CCS811与CircuitPython的可穿戴呼吸监测面具制作全解析

1. 项目概述与核心价值 几年前,当我第一次接触到可穿戴健康设备时,就被其潜力深深吸引。但市面上的产品要么是封闭的“黑盒”,数据不透明;要么价格高昂,难以进行个性化定制。我一直想,能不能自己动手做一个…...

MongoDB 4.4+ 版本后,手把手教你搞定mongodump独立安装与配置(附环境变量设置)

MongoDB 4.4独立工具链部署指南:从零构建mongodump备份环境 当你在全新的Linux服务器上部署了MongoDB 4.4或更新版本,准备执行例行数据库备份时,在终端输入熟悉的mongodump命令却只得到command not found的响应——这不是你的操作失误&#…...

零代码玩转物联网:用ItsaSnap与Adafruit IO实现手机控制硬件

1. 项目概述:当物联网遇上零代码,用手机就能玩转硬件数据 如果你对物联网(IoT)项目感兴趣,但又对写代码、搭服务器这些技术门槛望而却步,那么今天聊的这个工具可能会让你眼前一亮。想象一下,你…...

从开发板到自研板:RK3568设备树移植与定制编译实战

1. RK3568设备树移植入门指南 第一次接触RK3568设备树移植的工程师,往往会被dts文件中密密麻麻的节点和属性搞得晕头转向。我刚开始做这块的时候,光是看那7000多行的代码就头疼。但其实只要掌握几个关键点,移植工作就会变得清晰很多。 设备树…...

5分钟掌握Snap.Hutao:免费开源的Windows原神桌面工具箱完全指南

5分钟掌握Snap.Hutao:免费开源的Windows原神桌面工具箱完全指南 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 🧰 / Multifunctional Open-Source Genshin Impact Toolkit 🧰 项目地址: https://gitcode.com/GitHub_Trending/sn…...

ROFL-Player:英雄联盟回放时光机,一键穿越所有版本

ROFL-Player:英雄联盟回放时光机,一键穿越所有版本 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为英雄联…...