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

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
}
http://www.lryc.cn/news/2392896.html

相关文章:

  • shell中与>和<相关的数据流重定向操作符整理
  • 【航天远景 MapMatrix 精品教程】08 Pix4d空三成果导入MapMatrix
  • 创建型设计模式之Prototype(原型)
  • JNI开发流程
  • STM32G4 电机外设篇(二) VOFA + ADC + OPAMP
  • RAG应用:交叉编码器(cross-encoder)和重排序(rerank)
  • 微服务难题?Nacos服务发现来救场
  • C# 结合PaddleOCRSharp搭建Http网络服务
  • 【连接器专题】SD卡座规格书审查需要审哪些方面?
  • JS手写代码篇---手写节流函数
  • UE5 C++动态调用函数方法、按键输入绑定 ,地址前加修饰符
  • eBest智能价格引擎系统 助力屈臣氏饮料落地「价格大脑」+「智慧通路」数字基建​
  • ubuntu mysql 8.0.42 基于二进制日志文件位置和GTID主从复制配置
  • Kettle 远程mysql 表导入到 hadoop hive
  • 完整解析 Linux Kdump Crash Kernel 工作原理和实操步骤
  • 菜鸟之路Day36一一Web开发综合案例(部门管理)
  • LangChain实战:MMR和相似性搜索技术应用
  • 第 1 章:学习起步
  • SQL查询——大厂面试真题
  • Linux-pcie ranges介绍
  • ⭐ Unity AVProVideo插件自带播放器 脚本重构 实现视频激活重置功能
  • 互联网大厂Java求职面试:云原生微服务架构设计与AI大模型集成实战
  • 详解K8s API Server 如何处理请求的?
  • 微调数据处理
  • ✨1.1.1 按位与运算替代求余运算优化场景
  • 解决开发者技能差距:AI 在提升效率与技能培养中的作用
  • XCTF-web-easyphp
  • Transformer 通关秘籍11:Word2Vec 及工具的使用
  • 【DAY34】GPU训练及类的call方法
  • Flutte ListView 列表组件