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

Caddy如何在测试环境中使用IP地址配置HTTPS服务

前言

在开发和测试环境中,我们经常需要搭建HTTPS服务进行测试。但通常Let’s Encrypt等证书颁发机构要求使用有效域名,不直接支持IP地址。本文将详细介绍如何使用Caddy在测试环境中通过IP地址配置HTTPS服务,使用自签名证书解决这一问题。

环境准备

  • Ubuntu 22.04服务器(或其他Linux发行版)
  • Caddy 2.x版本
  • 服务器本地IP地址(本例使用192.168.1.43)

安装Caddy

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

配置Caddyfile

创建或修改/etc/caddy/Caddyfile

{# 禁用自动HTTPS重定向,允许IP地址使用自签名证书auto_https disable_redirects
}# HTTP服务
:18080 {root * /usr/share/caddyfile_server
}# HTTPS服务(使用自签名证书)
192.168.1.43:18443 {root * /usr/share/caddyfile_servertls internal  # 使用Caddy内置自签名证书
}

关键配置说明

  1. auto_https disable_redirects:禁用自动HTTPS重定向,允许在IP地址上使用自签名证书
  2. tls internal:使用Caddy内置的自签名证书功能
  3. 明确指定IP地址192.168.1.43而非通配符:,确保绑定正确

启动并验证服务

# 验证配置文件
sudo caddy validate --config /etc/caddy/Caddyfile# 重启Caddy服务
sudo systemctl restart caddy# 检查服务状态
sudo systemctl status caddy

测试访问

命令行测试

# HTTP测试
curl http://192.168.1.43:18080# HTTPS测试(-k参数忽略证书警告)
curl -k https://192.168.1.43:18443

浏览器访问

  1. 在浏览器地址栏输入:https://192.168.1.43:18443
  2. 浏览器会显示"不安全连接"警告(因为是自签名证书)
  3. 点击"高级"→"继续前往网站(不安全)"

防火墙配置

确保防火墙允许相关端口:

sudo ufw allow 18080/tcp
sudo ufw allow 18443/tcp

常见问题解决

1. 服务启动失败

检查日志:

journalctl -u caddy --no-pager -n 50

常见原因:

  • 端口冲突:使用ss -tulnp | grep 端口号检查
  • 权限问题:确保/usr/share/caddy目录可读

2. 浏览器拒绝连接

  • 确认使用https://前缀
  • 检查是否正确输入IP和端口
  • 尝试清除浏览器缓存

3. 自签名证书不受信任

这是预期行为,测试环境中可以:

  1. 导出Caddy的自签名证书
  2. 手动导入到操作系统或浏览器的信任证书库

进阶配置

使用自定义自签名证书

# 生成自签名证书
openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365 -subj "/CN=192.168.1.43"

修改Caddy配置:

192.168.1.43:18443 {tls /path/to/cert.pem /path/to/key.pem# 其他配置...
}

完全禁用自动HTTPS

{auto_https off
}

相关文章:

  • bug: uniCloud 查询数组字段失败
  • HTTP Accept简介
  • linux系统(centos7为例)将jar配置成服务操作教程
  • 浏览器之禁止打开控制台【F12】
  • 网页前端开发(基础进阶1)
  • Transformer核心技术解析LCPO方法:精准控制推理长度的新突破
  • 计算机内存管理全解析:从基础原理到前沿技术(含分页/分段/置换算法/大页/NVM/CXL等技术详解
  • LVS的DR模式部署
  • Linux文件权限相关
  • Oracle基础知识(五)——ROWID ROWNUM
  • 8.8 Primary ODSA service without ODSA Portal
  • 基于亚博K210开发板——物体分类测试
  • 企业信息化/数字化项目管理办法V3.0
  • 记一次前端逻辑绕过登录到内网挖掘
  • JAVA学习 DAY1 初识JAVA
  • MCP 登场:掘金开启 AI 前端项目部署新时代
  • linux使用服务添加一个开机启动脚本
  • 让 Deepseek GPS测速
  • css3 新增属性/滤镜效果/裁剪元素/图片适应盒子/定义和使用变量/恢复默认initial
  • 【C++进阶篇】哈希表的模拟实现(赋源码)
  • 北京网站建设公司案例/惠州seo网站排名
  • 公司网站开发费用放在什么科目/中国进入全国紧急状态
  • 股票分析网站可以做推广吗/推广的公司
  • 个人做搜索网站违法吗/新网站排名优化怎么做
  • 企业网站设计制作服务/百度搜索推广优化师工作内容
  • 外贸做中英文网站/百度推广账号出售