You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DigitalOcean部署Web应用启用SSL后,访问Droplet IP遇NET::ERR_CERT_COMMON_NAME_INVALID错误

解决NET::ERR_CERT_COMMON_NAME_INVALID错误的实用方案

嘿,这个问题我太熟了!你遇到的NET::ERR_CERT_COMMON_NAME_INVALID错误,核心原因其实很直白——你的SSL证书是专门给*.domain.com这类域名颁发的,压根没包含你的Droplet IP地址。当你直接用IP访问时,浏览器会严格校验证书里的域名和你访问的地址是否匹配,不匹配自然就触发安全警告了。

下面给你几个可行的解决思路,按推荐程度排序:

方案1:用绑定证书的域名访问(最推荐)

既然你的Nginx配置里server_name设的是sub.domain.com,而且证书也是对应这个域名的,那直接用sub.domain.com访问你的Web应用就完全没问题。前提是你已经把这个子域名解析到了Droplet的IP地址上(在域名服务商的DNS后台添加A记录就行)。这是生产环境下的标准做法,既合规又省心。

方案2:给Droplet IP单独申请SSL证书(仅特殊场景用)

如果你确实有必须用IP访问的需求,那得给你的Droplet公网IP单独申请SSL证书。这里给你说下具体步骤:

  • 首先,Let's Encrypt这类免费CA是支持给公网IP颁发证书的,但需要用DNS-01挑战(因为IP没法用HTTP-01验证方式)。
  • 操作步骤:
    1. 先安装Certbot和对应你域名服务商的DNS插件(比如Cloudflare、Godaddy都有专门的Certbot插件)
    2. 运行Certbot命令发起证书申请,比如:
      certbot certonly --manual --preferred-challenges dns -i nginx --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -m your-email@example.com --cert-name your-droplet-ip
      
    3. 按照命令行提示,在你的域名DNS管理后台添加一条TXT记录完成验证
    4. 验证通过后,在Nginx里新增一个专门对应IP的server块:
      server {
          listen 443 ssl;
          server_name 你的-droplet-ip地址;
      
          ssl_certificate /etc/letsencrypt/live/你的-ip/fullchain.pem;
          ssl_certificate_key /etc/letsencrypt/live/你的-ip/privkey.pem;
      
          # 这里添加你的应用根目录、反向代理等原有配置
      }
      
    5. 最后重启Nginx生效:
      sudo systemctl restart nginx
      

方案3:临时跳过浏览器警告(仅测试用)

如果只是自己临时测试,你可以在浏览器的警告页面点击“高级”选项,然后选择“继续前往IP地址”(不同浏览器的文字表述可能略有不同)。但这个方法只适合自己测试用,绝对不能用于生产环境——普通用户访问时会遇到同样的警告,严重影响信任度。

内容的提问来源于stack exchange,提问作者Valip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:14:41