Caddy

维基百科,自由的百科全书
跳转到导航 跳转到搜索
Caddy
File:The Caddy web server logo.svg
原作者Matthew Holt
首次发布2015年4月28日,​11年前​(2015-04-28
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    源代码库
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    编程语言Go
    引擎
      Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
      操作系统AndroidBSD variantsLinuxOS XWindows
      类型Web服务器, 反向代理服务器
      许可协议Apache许可证2.0
      网站Module:Official_website第90行Lua错误:attempt to index field 'wikibase' (a nil value)

      Caddy服务器(或称Caddy Web)是一个开源的,使用Golang编写,支持HTTP/2的Web服务端。它使用Golang标准库提供HTTP功能。

      Caddy一个显著的特性是默认启用HTTPS[1][2]。它是第一个无需额外配置即可提供HTTPS特性的Web服务器[3]

      作者Matt Holt于2014年12月开始开发Caddy,并于2015年4月发布第一个版本。[4]在发布后的一年里,它的下载量超过了20000次,并在GitHub上获得了4500个Star。[5]

      Caddy支持各种Web技术,提供静态编译的二进制文件,支持i386amd64ARM架构上的WindowsMacLinuxAndroidBSD操作系统。

      功能[编辑]

      Caddy可以提供各种网站技术,它也可以作为反向代理和负载均衡器。Caddy的大部分功能都以中间件的形式实现,并通过Caddyfile中的设定(用于配置Caddy的文本文件)进行控制。[6]

      • HTTP/1.1(原始的HTTP)以及HTTP/2(HTTPS的推荐连接方案)
      • HTTPS,同时接受自动签发和手动管理
        • TLS 1.2临时性支持(旧协议)[7]
        • SNI
        • OCSP证书交换验证
      • 虚拟主机 (单一机器模拟多个站点工作)[8]
      • 原生IPv4IPv6支持
      • 静态文件分发
      • 平滑重启/重载
      • 反向代理(HTTP或WebSocket
      • 负载均衡和健康性检查
      • FastCGI支持[9][10]
      • 配置文件模板
      • Markdown渲染
      • CGI通过WebSocket
      • Gzip压缩
      • 简单服务器鉴权
      • URL重写
      • 重定向
      • 文件浏览服务
      • 访问日志
      • 实验性QUIC支持

      安全[编辑]

      Caddy免于很多已知的CVEs攻击(包括 Heartbleed、DROWN、POODLE和BEAST[11],另外,Caddy使用TLS_FALLBACK_SCSV以防止协议降级攻击。

      2015年6月2日,版本0.7.1修复了Caddy简单服务器鉴权中间件中时间欺诈攻击的漏洞。[12]

      关于协议和密码包,Caddy使用TLS 1.0-1.2,并且倾向于ECDHE ECDSA与AES256-GCM-SHA384,支持十几种不同的加密方式。Cloudflare已经使用了Caddy作为TLS 1.3的实现方案。[13]

      传统的特权降级无法工作在Golang程序上。[14] 为了绑定低于1024的端口,Caddy必须使用root账户运行 (不建议) 或通过setcap给予低位端口使用权限(建议的)。并且,在将来的版本中会尝试使用非特级子进程运行。[15]

      Caddy没有自动启动HTTP Strict Transport Security,推荐通过Caddy的header配置启用HSTS。[16]

      自动签发 HTTPS[编辑]

      Caddy默认通过检查域名来启用HTTPS (通过ACME protocol检查域名并签发证书),并且重定向HTTP请求到HTTPS。[17] 它在启动期间根据需要签发证书,并在服务器的使用期间自动重签发。Let's Encrypt是默认的证书颁发机构,但用户可以自定义所使用的ACME CA,这在测试配置时是必要的。在2016年第一季度,有百分之二的Let's Encrypt证书是由Caddy签发的。

      一个可选的配置允许Caddy在需要时签发一个证书“按需 TLS”[18]使用这种方案时,用户必须指定可通过该方案配置的证书数量。当Caddy收到一个没有配置证书的请求时,它会自动通过ACME签发并配置,然后将证书存储于内存和硬盘。这个过程通常需要几秒钟的时间,并且受到限制。

      当使用TLS,Caddy会自动切换会话密钥以保证安全性。[19]

      参考资料[编辑]

      1. ^ Johnson, Brad. A Better Web Server with Free SSL. 23 February 2016 [5 March 2016]. (原始内容存档于2017-08-02). 
      2. ^ Automatic HTTPS with Caddy Server. 18 December 2015 [5 March 2016]. (原始内容存档于2017-08-02). 
      3. ^ Dmitry Chestnykh [@dchest]. Caddy is the first general-purpose web server to default to HTTPS without user intervention (using Let's Encrypt) (推文). 17 December 2015 –通过Twitter. 
      4. ^ Show HN: Caddy, a cross-platform HTTP/2 web server. 28 April 2015 [2017-04-03]. (原始内容存档于2017-04-22). 
      5. ^ Is Caddy Free?. [2017-04-03]. (原始内容存档于2017-04-22). 
      6. ^ The Caddyfile. [29 February 2016]. (原始内容存档于2017-04-20). 
      7. ^ tls - Caddy Directives. [8 March 2016]. (原始内容存档于2017-03-17). 
      8. ^ Benedetti, Benoit. Caddy, Le Serveur Web Facile [Caddy, The Easy Web Server]. GNU/Linux Magazine France (France). November 2015 (français). 
      9. ^ How to Setup the Caddy Web Server with php-fpm. [2017-04-03]. (原始内容存档于2017-08-18). 
      10. ^ Beke, Mathias. Caddy Server and WordPress (PHP-FPM). 21 August 2015 [2017-04-03]. (原始内容存档于2016-05-03). 
      11. ^ SSL Server Test: caddyserver.com (Powered by Qualys SSL Labs). [5 March 2016]. (原始内容存档于2021-04-10). 
      12. ^ Release 0.7.1 · mholt/caddy. 2 June 2015 [2017-04-03]. (原始内容存档于2019-02-15). 
      13. ^ Nick Sullivan [@grittygrease]. It's built in Go using custom versions @rlbarnes's Mint and @mholt6's Caddy (推文). 4 Mar 2016 –通过Twitter. 
      14. ^ syscall: Setuid/Setgid doesn't apply to all threads on Linux. 21 January 2011 [5 March 2016]. (原始内容存档于2018-02-07). 
      15. ^ Implement privilege de-escalation. 21 January 2016 [2017-04-03]. (原始内容存档于2017-04-22). 
      16. ^ HTTP Strict Transport Security. [8 March 2016]. (原始内容存档于2017-04-26). 
      17. ^ Automatic HTTPS. [5 March 2016]. (原始内容存档于2017-03-17). 
      18. ^ On-Demand TLS. [5 March 2016]. (原始内容存档于2017-03-17). 
      19. ^ Springall, Drew; Durumeric, Zakir; Halderman, J. Alex. Measuring the Security Harm of TLS Crypto Shortcuts. Proceedings of the 2016 ACM on Internet Measurement Conference. IMC '16 (New York, NY, USA: ACM). 2016-01-01: 33–47. ISBN 9781450345262. doi:10.1145/2987443.2987480. 

      外部链接[编辑]