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

在JavaScript / HTML中,Chrome报错此服务器无法证实它就是xxxxx - 它的安全证书没有指定主题备用名称

服务器的的ip地址是192.168.3.71,并且服务器没有域名,客户端是用ip访问服务器。客户端的浏览器提示:此服务器无法证实它就是 192.168.3.71 - 它的安全证书没有指定主题备用名称。该如何解决。

当客户端通过IP地址(如 192.168.3.71)访问服务器时,浏览器提示 “安全证书没有指定主题备用名称(Subject Alternative Name, SAN)”,这是因为现代浏览器(如Chrome)要求SSL证书必须明确包含IP地址或域名在SAN字段中,仅依赖传统的 Common Name (CN) 已不再被接受。

以下是具体解决方案:


1. 生成支持IP地址的SSL证书

方法1:使用OpenSSL手动生成(推荐)
  1. 创建证书配置文件(如 ssl.conf):

    [req]
    default_bits = 2048
    prompt = no
    default_md = sha256
    distinguished_name = dn
    x509_extensions = v3_req[dn]
    CN = 192.168.3.71  # 可填写IP或任意名称(不重要)[v3_req]
    keyUsage = keyEncipherment, dataEncipherment, digitalSignature
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names[alt_names]
    IP.1 = 192.168.3.71  # 必须包含实际访问的IP地址
    
  2. 生成证书和私钥

    openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 3650 -config ssl.conf -extensions v3_req
    
    • server.key: 私钥文件
    • server.crt: 证书文件
方法2:快速命令行生成(无配置文件)
openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 3650 -subj "/CN=192.168.3.71" -addext "subjectAltName=IP:192.168.3.71"
  • -addext 参数直接指定SAN扩展字段。

2. 配置服务器使用新证书

将生成的 server.crtserver.key 配置到Web服务器中:

  • Nginx示例

    server {listen 443 ssl;ssl_certificate /path/to/server.crt;ssl_certificate_key /path/to/server.key;# 其他配置...
    }
    
  • Apache示例

    <VirtualHost *:443>SSLEngine onSSLCertificateFile /path/to/server.crtSSLCertificateKeyFile /path/to/server.key# 其他配置...
    </VirtualHost>
    

3. 在客户端安装证书

  1. 导出证书文件server.crt)并发送到客户端。

  2. 将证书导入客户端受信任的根证书颁发机构

    • Windows

      1. 双击 server.crt → 选择“安装证书” → 存储位置为“本地计算机” → 选择“受信任的根证书颁发机构”。
    • macOS

      1. 双击 server.crt → 钥匙串访问中选择“系统”钥匙串 → 右键证书选择“始终信任”。
    • Linux

      sudo cp server.crt /usr/local/share/ca-certificates/
      sudo update-ca-certificates
      

4. 清除浏览器缓存并验证

  1. 清除HSTS缓存
    • 访问 chrome://net-internals/#hsts → 在“Delete domain security policies”输入 192.168.3.71 并删除。
  2. 强制刷新页面
    • Ctrl + Shift + R(Windows)或 Cmd + Shift + R(macOS)。
  3. 检查证书详情
    • 在Chrome中点击地址栏的“🔒”图标 → 查看证书,确认SAN字段包含 IP Address: 192.168.3.71

5. 其他注意事项

  • 自签名证书的局限性:自签名证书需手动信任,适合内部网络。若需公网使用,可申请支持IP地址的公共证书(如DigiCert)。
  • 通配IP限制:公共CA通常不签发包含私有IP(如 192.168.x.x)的证书,自签名是唯一选择。
  • 备用方案:若无法修改证书,可在客户端浏览器临时忽略警告(不推荐)。

验证命令

检查生成的证书是否包含SAN字段:

openssl x509 -in server.crt -text -noout | grep -A1 "Subject Alternative Name"

输出应包含:

X509v3 Subject Alternative Name:IP Address:192.168.3.71

完成上述步骤后,Chrome将信任该证书并显示安全连接(🔒)。

http://www.dtcms.com/a/464844.html

相关文章:

  • 如何建一个免费的网站流量对网站排名的影响因素
  • PawSQL宣布支持DB2数据库SQL审核和性能优化
  • 在JavaScript / HTML中,div容器在内容过多时不显示超出的部分
  • webrtc弱网-RobustThroughputEstimator源码分析与算法原理
  • WPF依赖属性
  • 数据可视化 ECharts
  • javascript 性能优化实例一则
  • mapbox基础,使用矢量切片服务(pbf)加载line线图层
  • LLVM(Low Level Virtual Machine)介绍
  • Docker 一键部署指南:GitLab、Nacos、Redis、MySQL 与 MinIO 全解析
  • HDLBit 个人记录
  • 基于Jetson+FPGA+GMSL+AI的自动驾驶数据采集解决方案
  • 0006.C#学习笔记3-- HTML和CSS
  • 基于X86+FPGA+GPU的自动驾驶数据回灌测试解决方案
  • 在JavaScript / HTML中,Chrome报错Refused to execute inline script
  • 自动驾驶的“虚拟驾校”如何炼成?
  • 自动驾驶传感器数据录制过程中的五大系统性挑战
  • 学校网站建设开题报告书wordpress 发布说说
  • 企业如何减少由于数据不一致带来的运营成本?
  • 安卓开发APP应用程序和苹果iOS开发APP应用程序有什么区别?
  • Mac 上用 Homebrew 安装 JDK 8(适配 zsh 终端)完整教程
  • 利用小偷程序做网站企业网站开发建设
  • K8S基本命令操作
  • 【kubernetes/k8s源码分析】kube-controller-manager之node controller源码分析
  • SMOTE 算法详解:解决不平衡数据问题的有效工具
  • HGDB集群(安全版)repmgr手动切换主备库
  • 三维GIS数据转换指南:SHAPE文件到3DTiles的高效实现方案
  • K8S(三)—— 基于kubeadm 1.20版本部署Kubernetes集群与Harbor私有仓库实战
  • 宁波外贸网站制作公司手机网站建设哪家公司好
  • 【C语言实战(8)】C语言循环结构(do-while):解锁编程新境界