热门问题
时间线
聊天
视角
Caddy
开源的,原生支持 HTTP/2 的 Web 服务器 来自维基百科,自由的百科全书
Remove ads
Caddy服务器(或称Caddy Web)是一个开源的,使用Golang编写,支持HTTP/2的Web服务端。它使用Golang标准库提供HTTP功能。
此条目翻译品质不佳。 (2017年4月3日) |
Caddy一个显著的特性是默认启用HTTPS[2][3]。它是第一个无需额外配置即可提供HTTPS特性的Web服务器[4]。
作者Matt Holt于2014年12月开始开发Caddy,并于2015年4月发布第一个版本。[5]在发布后的一年里,它的下载量超过了20000次,并在GitHub上获得了4500个Star。[6]
Caddy支持各种Web技术,提供静态编译的二进制文件,支持i386、amd64和ARM架构上的Windows、Mac、Linux、Android和BSD操作系统。
Remove ads
功能
Caddy可以提供各种网站技术,它也可以作为反向代理和负载均衡器。Caddy的大部分功能都以中间件的形式实现,并通过Caddyfile
中的指令(用于配置Caddy的文本文件)进行控制。[7]
安全
Caddy免于很多已知的CVEs攻击(包括 Heartbleed、DROWN、POODLE和BEAST)[12],另外,Caddy使用TLS_FALLBACK_SCSV
以防止协议降级攻击。
2015年6月2日,版本0.7.1修复了Caddy简单服务器鉴权中间件中时间欺诈攻击的漏洞。[13]
关于协议和密码包,Caddy使用TLS 1.0-1.2,并且倾向于ECDHE ECDSA与AES256-GCM-SHA384,支持十几种不同的加密方式。Cloudflare已经使用了Caddy作为TLS 1.3的实现方案。[14]
传统的特权降级无法工作在Golang程序上。[15] 为了绑定低于1024的端口,Caddy必须使用root账户运行 (不建议) 或通过setcap
给予低位端口使用权限(建议的)。并且,在将来的版本中会尝试使用非特级子进程运行。[16]
Caddy没有自动启动HTTP Strict Transport Security,推荐通过Caddy的header
配置启用HSTS。[17]
Remove ads
Caddy默认通过检查域名来启用HTTPS (通过ACME protocol检查域名并签发证书),并且重定向HTTP请求到HTTPS。[18] 它在启动期间根据需要签发证书,并在服务器的使用期间自动重签发。Let's Encrypt是默认的证书颁发机构,但用户可以自定义所使用的ACME CA,这在测试配置时是必要的。在2016年第一季度,有百分之二的Let's Encrypt证书是由Caddy签发的。
一个可选的配置允许Caddy在需要时签发一个证书“按需 TLS”[19]使用这种方案时,用户必须指定可通过该方案配置的证书数量。当Caddy收到一个没有配置证书的请求时,它会自动通过ACME签发并配置,然后将证书存储于内存和硬盘。这个过程通常需要几秒钟的时间,并且受到限制。
当使用TLS,Caddy会自动切换会话密钥以保证安全性。[20]
参考资料
外部链接
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads