告别不安全警告!手把手教你申请免费IP证书,实现纯IP地址HTTPS访问

2026-08-24 23:28:04 165阅读
本文详细介绍了如何为纯IP地址申请免费的SSL证书,从而彻底告别浏览器的不安全警告,通过手把手的实操教程,指导用户快速完成免费IP证书的申请与配置,该方法无需绑定域名即可实现纯IP地址的安全HTTPS访问,有效保障数据传输加密,非常适合缺乏域名或仅使用IP直连环境的用户参考使用。

在日常的网站部署或内网穿透项目中,我们经常会遇到这样一个痛点:手里只有一个公网IP地址,没有注册域名,但在浏览器中通过 http://<IP地址> 访问时,浏览器总会弹出一个刺眼的“您的连接不是私密连接”警告。

对于拥有域名的用户来说,申请免费的 SSL 证书(如 Let's Encrypt)几乎是标配,但对于纯 IP 地址,长期以来想要实现 HTTPS 加密往往需要支付高昂的费用,好消息是,随着 HTTPS 的全面普及,现在我们完全可以申请到免费IP证书了!

告别不安全警告!手把手教你申请免费IP证书,实现纯IP地址HTTPS访问

本文将带你全面了解免费IP证书,并手把手教你如何申请和部署。

为什么我们需要给 IP 地址配置证书?

  1. 消除浏览器不安全警告:未配置 SSL 证书的 IP 地址访问,会被 Chrome、Edge 等现代浏览器标记为“不安全”,严重影响用户信任度。
  2. 保障数据传输安全:HTTPS 可以对客户端与服务器之间的数据进行加密,防止中间人攻击和数据窃听,尤其是在传输敏感密码或数据时至关重要。
  3. 满足接口调用要求:许多现代应用(如微信小程序、App接口调用)强制要求后端服务必须是 HTTPS 环境,如果你直接用 IP 作为接口地址,没有证书根本无法对接。

免费IP证书从哪里来?

长期以来,SSL 证书标准主要针对域名签发,但互联网工程任务组(IETF)已经批准了用于 IP 地址的 SSL 证书标准,能够提供免费IP证书的主要渠道是著名的免费证书机构 Let's Encrypt

Let's Encrypt 支持为公网 IP 地址签发免费的 SSL 证书(有效期为 90 天,可通过脚本自动续期),需要注意的是,Let's Encrypt 仅支持为公网 IP 签发证书,暂不支持内网/局域网 IP(如 192.168.x.x)。

手把手教你申请免费IP证书

申请 Let's Encrypt 免费IP证书最便捷的方式,是使用开源的 ACME 客户端工具,这里我们推荐使用国人开发的 acme.sh,它完全使用 Shell 语言编写,兼容性极好,且依赖少。

准备工作:

  1. 一台拥有公网 IP 的服务器。
  2. 服务器的 80 端口(或 443 端口)处于空闲状态,或者可以通过防火墙正常访问。
  3. 服务器已安装 curlsocat(或 netcat)。

步骤 1:安装 acme.sh

登录你的服务器,执行以下命令:

curl https://get.acme.sh | sh -s email=你的邮箱@example.com

安装完成后,重新加载环境变量:

source ~/.bashrc

步骤 2:申请免费IP证书

acme.sh 提供了多种验证方式,对于 IP 地址,最简单的是使用 Standalone 模式,它会临时在服务器上启动一个 Web 服务来响应 Let's Encrypt 的验证请求。

确保 80 端口没被占用(如果被 Nginx 占用,可暂时停止 Nginx),然后执行:

acme.sh --issue -d 你的公网IP --standalone

注意:如果你使用的是 443 端口验证,可以加上 --alpn 参数。

等待几秒钟,如果网络通畅,提示 Cert success!,就说明你的免费IP证书已经申请成功了!证书文件默认保存在 ~/.acme.sh/你的公网IP/ 目录下。

步骤 3:安装证书到 Web 服务器

不要直接让 Nginx/Apache 引用 acme.sh 目录下的文件,建议使用 --install-cert 命令将证书复制到指定目录。

以 Nginx 为例:

acme.sh --install-cert -d 你的公网IP \
--key-file /etc/nginx/ssl/ip.key \
--fullchain-file /etc/nginx/ssl/ip.crt \
--reloadcmd "systemctl reload nginx"

这个命令不仅会复制证书,还会自动在系统里设置定时任务,以后证书快过期时,acme.sh 会自动帮你续期并重载 Nginx,实现真正的“一劳永逸”。

步骤 4:配置 Nginx 支持 HTTPS

编辑你的 Nginx 配置文件,添加如下配置:

server {
    listen 443 ssl;
    server_name 你的公网IP;
    ssl_certificate /etc/nginx/ssl/ip.crt;
    ssl_certificate_key /etc/nginx/ssl/ip.key;
    location / {
        root /var/www/html;
        index index.html;
    }
}

保存并重载 Nginx 后,在浏览器输入 https://你的公网IP,你会发现那个讨厌的不安全警告消失了,取而代之的是一把令人安心的小绿锁!

注意事项

  1. 公网 IP 限制:如前文所述,免费的 Let's Encrypt 证书仅支持公网 IP,如果是内网 IP 需要加密,建议使用自签名证书或通过内网域名解析配合泛域名证书使用。
  2. 防火墙设置:申请证书时,务必确保服务器的 80 或 443 端口对外开放,否则 Let's Encrypt 的验证请求无法到达你的服务器,会导致申请失败。
  3. 定期续期:虽然 acme.sh 会自动续期,但建议偶尔检查一下 crontab 任务是否正常运行(crontab -l 查看),确保证书不会因为过期而导致服务异常。

在这个数据安全至上的时代,HTTPS 已经不是选择题,而是必答题,通过 acme.sh 和 Let's Encrypt 申请免费IP证书,不仅零成本解决了纯 IP 访问的安全警告问题,也大大提升了项目的专业度,如果你还在用 HTTP 暴露你的 IP 服务,不妨现在就花几分钟时间动手部署一下吧!

文章版权声明:除非注明,否则均为亚朵原创文章,转载或复制请以超链接形式并注明出处。