跳转到内容

Caddy:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
維基化
维护清理
 
(未显示22个用户的36个中间版本)
第1行: 第1行:
{{NOT|球僮 (高尔夫球)}}
{{roughtranslation|time=2017-04-03T10:11:58+00:00}}
{{NoteTA|G1=IT|G2=FL}}
{{Infobox software
{{Infobox software
|name=Caddy
|name=Caddy
第5行: 第8行:
|author=Matthew Holt
|author=Matthew Holt
|released={{Start date and age|df=yes|2015|4|28}}
|released={{Start date and age|df=yes|2015|4|28}}
|programming language=[[Go]]
|latest release version=0.9.5
|operating system=[[Android]],[[BSD|BSD variants]],[[Linux]],[[OS X]]及[[Windows]]
|latest release date={{Start date and age|df=yes|2017|01|24}}
|genre=[[Web服务器]], [[代理服务器|反向代理服务器]]
|status=Active
|license=[[Apache许可证]]2.0
|programming language=[[Go (programming language)|Go]]<ref name="Go1.6Blog">{{ cite web | url = https://blog.golang.org/go1.6 | title = Go 1.6 is released | first = Andrew
|website={{Official}}}}
| last = Gerrand
| website = golang.org
| date = 17 February 2016
| access-date = 5 March 2016 }}</ref>|operating system=[[Android (operating system)|Android]], [[BSD|BSD variants]], [[Linux]], [[OS X]] and [[Windows]]|genre=[[Web server]], [[Proxy server|reverse proxy server]]
|license=[[Apache License|Apache 2]]
|website={{Official URL}}}}


'''Caddy服务器'''(或'''Caddy Web''')是一个开源的,使用 [[Go|GoLang]] 编写,支持 [[HTTP/2]] 的 Web 服务端。它使用 [[Go|GoLang]] 标准库提供 [[超文本传输协议|HTTP]] 功能。
'''Caddy服务器'''(或'''Caddy Web''')是一个开源的,使用 [[Go|Golang]] 编写,支持 [[HTTP/2]] 的 Web 服务端。它使用 [[Go|Golang]] 标准库提供 [[超文本传输协议|HTTP]] 功能。


Caddy 一个显著的特性是默认启用 [[超文本传输安全协议|HTPPS]]。<ref name="VolumeLabs">{{Cite web|url=https://volumelabs.net/better-web-server-with-free-ssl/|title=A Better Web Server with Free SSL|accessdate=5 March 2016|date=23 February 2016|last=Johnson|first=Brad}}</ref><ref name="RyanMartinsen">{{Cite web|url=https://ryanmartinsen.com/article/automatic-https-with-caddy/|title=Automatic HTTPS with Caddy Server|accessdate=5 March 2016|date=18 December 2015}}</ref>它是第一个无需额外配置即可提供 [[超文本传输安全协议|HTTPS]] 特性的 Web 服务器。<ref name="DmitryChestnykh">{{Cite tweet|number=677640782392786944|user=dchest|title=Caddy is the first general-purpose web server to default to HTTPS without user intervention (using Let's Encrypt)|author=Dmitry Chestnykh|date=17 December 2015}}</ref>
Caddy 一个显著的特性是默认启用 [[超文本传输安全协议|HTTPS]]。<ref name="VolumeLabs">{{Cite web|url=https://volumelabs.net/better-web-server-with-free-ssl/|title=A Better Web Server with Free SSL|accessdate=5 March 2016|date=23 February 2016|last=Johnson|first=Brad|archive-date=2017-08-02|archive-url=https://web.archive.org/web/20170802123034/https://volumelabs.net/better-web-server-with-free-ssl/|dead-url=no}}</ref><ref name="RyanMartinsen">{{Cite web|url=https://ryanmartinsen.com/article/automatic-https-with-caddy/|title=Automatic HTTPS with Caddy Server|accessdate=5 March 2016|date=18 December 2015|archive-date=2017-08-02|archive-url=https://web.archive.org/web/20170802095433/https://ryanmartinsen.com/article/automatic-https-with-caddy/|dead-url=no}}</ref>它是第一个无需额外配置即可提供 [[超文本传输安全协议|HTTPS]] 特性的 Web 服务器。<ref name="DmitryChestnykh">{{Cite tweet|number=677640782392786944|user=dchest|title=Caddy is the first general-purpose web server to default to HTTPS without user intervention (using Let's Encrypt)|author=Dmitry Chestnykh|date=17 December 2015}}</ref>


作者 Matt Holt 于 2014 年 12 月开始开发 Caddy ,并于 2015 年 4 月发布第一个版本。<ref name="ShowHN">{{Cite web|url=https://news.ycombinator.com/item?id=9452606|title=Show HN: Caddy, a cross-platform HTTP/2 web server|date=28 April 2015}}</ref> 在发布后的一年里,它的下载量超过了 20000 次,并在 [[GitHub]] 上获得了 4500 关注。<ref name="IsCaddyFree">[https://caddyserver.com/blog/is-caddy-free Is Caddy Free?]</ref>
作者 Matt Holt 于 2014 年 12 月开始开发 Caddy ,并于 2015 年 4 月发布第一个版本。<ref name="ShowHN">{{Cite web|url=https://news.ycombinator.com/item?id=9452606|title=Show HN: Caddy, a cross-platform HTTP/2 web server|date=28 April 2015|accessdate=2017-04-03|archive-date=2017-04-22|archive-url=https://web.archive.org/web/20170422124432/https://news.ycombinator.com/item?id=9452606|dead-url=no}}</ref> 在发布后的一年里,它的下载量超过了 20000 次,并在 [[GitHub]] 上获得了 4500 个 Star。<ref name="IsCaddyFree">{{Cite web |url=https://caddyserver.com/blog/is-caddy-free |title=Is Caddy Free? |accessdate=2017-04-03 |archive-date=2017-04-22 |archive-url=https://web.archive.org/web/20170422124428/https://caddyserver.com/blog/is-caddy-free |dead-url=no }}</ref>


Caddy 支持各种 Web 技术,提供静态编译的二进制文件,适用于 [[Intel 80386|i386]]、[[X86-64|amd64]] 和 [[ARM架構|ARM]] 架构上的 [[Microsoft Windows|Windows]]、[[MacOS|Mac]]、[[Linux]]、[[Android]] 和 [[BSD]] 操作系统。
Caddy 支持各种 Web 技术,提供静态编译的二进制文件,支持 [[Intel 80386|i386]]、[[X86-64|amd64]] 和 [[ARM架構|ARM]] 架构上的 [[Microsoft Windows|Windows]]、[[MacOS|Mac]]、[[Linux]]、[[Android]] 和 [[BSD]] 操作系统。


== 功能 ==
== 功能 ==
Caddy 可以提供各种网站技术,它也可以作为反向代理和负载均衡器。Caddy 的大部分功能都实现为中间件,并通过 Caddyfile 中的指令(用于配置 Caddy 的文本文件)进行控制。<ref name="DocsCaddyfile">{{Cite web|url=https://caddyserver.com/docs/caddyfile|title=The Caddyfile|accessdate=29 February 2016}}</ref>
Caddy 可以提供各种网站技术,它也可以作为反向代理和负载均衡器。Caddy 的大部分功能都中间件的形式实现,并通过 Caddyfile 中的指令(用于配置 Caddy 的文本文件)进行控制。<ref name="DocsCaddyfile">{{Cite web|url=https://caddyserver.com/docs/caddyfile|title=The Caddyfile|accessdate=29 February 2016|archive-date=2017-04-20|archive-url=https://web.archive.org/web/20170420015804/https://caddyserver.com/docs/caddyfile|dead-url=no}}</ref>
* HTTP/1.1 (原始的HTTP) and [[HTTP/2]] (HTTPS的推荐连接方案)
* HTTP/1.1 (原始的HTTP) and [[HTTP/2]] (HTTPS的推荐连接方案)
* [[超文本传输安全协议|HTTPS]], 同时接受自动签发和手动管理
* [[超文本传输安全协议|HTTPS]],同时接受自动签发和手动管理
** TLS 1.2 临时性支持(旧协议)<ref name="DocsTLS">{{Cite web|url=https://caddyserver.com/docs/tls|title=tls - Caddy Directives|accessdate=8 March 2016}}</ref>
** TLS 1.2 临时性支持(旧协议)<ref name="DocsTLS">{{Cite web|url=https://caddyserver.com/docs/tls|title=tls - Caddy Directives|accessdate=8 March 2016|archive-date=2017-03-17|archive-url=https://web.archive.org/web/20170317100723/https://caddyserver.com/docs/tls|dead-url=no}}</ref>
** [[服务器名称指示|SNI]]
** [[服务器名称指示|SNI]]
** [[OCSP装订|OCSP]] 证书交换验证
** [[OCSP装订|OCSP]]证书交换验证
* [[虚拟主机]] (多个站点工作在单个端口上)<ref name="GNULinuxMagNov2015">{{Cite news|title=Caddy, Le Serveur Web Facile|last=Benedetti|first=Benoit|date=November 2015|work=GNU/Linux Magazine France|accessdate=16 December 2015|location=France|language=French|trans-title=Caddy, The Easy Web Server}}使用<code style="color:inherit; border:inherit; padding:inherit;">&#x7C;accessdate=</code>需要含有<code style="color:inherit; border:inherit; padding:inherit;">&#x7C;url=</code> ([[Help:引文格式1错误#accessdate missing url|帮助]]) 引文格式1维护:未识别语文类型 ([[:Category:引文格式1维护:未识别语文类型|link]])
* [[虚拟主机]] (多个站点工作在单个端口上)<ref name="GNULinuxMagNov2015">{{Cite news|title=Caddy, Le Serveur Web Facile|last=Benedetti|first=Benoit|date=November 2015|work=GNU/Linux Magazine France|accessdate=16 December 2015|location=France|language=fr|trans-title=Caddy, The Easy Web Server}}</ref>
* 原生[[IPv4]]和[[IPv6]]支持
[[Category:含有访问日期但无网址的引用的页面]]
[[Category:引文格式1维护:未识别语文类型]]</ref>
* 原生 [[IPv4]]  [[IPv6]] 支持
* 静态文件分发
* 静态文件分发
* 平滑重启/重载
* 平滑重启/重载
* 反向代理 ( HTTP  [[WebSocket|WebSockets]])
* [[反向代理]] (HTTP或[[WebSocket]])
* 负载均衡和健康性检查
* [[负载均衡]]和健康性检查
* [[FastCGI]] 支持<ref name="JixeePHPFPM">{{Cite web|url=https://blog.jixee.me/how-to-setup-the-caddy-web-server-with-php-fpm/|title=How to Setup the Caddy Web Server with php-fpm}}</ref><ref name="DenBeke">{{Cite web|url=https://denbeke.be/blog/servers/caddy-server-and-wordpress-php-fpm/|title=Caddy Server and WordPress (PHP-FPM)|date=21 August 2015|last=Beke|first=Mathias}}</ref>
* [[FastCGI]]支持<ref name="JixeePHPFPM">{{Cite web|url=https://blog.jixee.me/how-to-setup-the-caddy-web-server-with-php-fpm/|title=How to Setup the Caddy Web Server with php-fpm|access-date=2017-04-03|archive-url=https://web.archive.org/web/20170818000829/http://blog.jixee.me/how-to-setup-the-caddy-web-server-with-php-fpm/|archive-date=2017-08-18|dead-url=yes}}</ref><ref name="DenBeke">{{Cite web|url=https://denbeke.be/blog/servers/caddy-server-and-wordpress-php-fpm/|title=Caddy Server and WordPress (PHP-FPM)|date=21 August 2015|last=Beke|first=Mathias|accessdate=2017-04-03|archive-date=2016-05-03|archive-url=https://web.archive.org/web/20160503041255/https://denbeke.be/blog/servers/caddy-server-and-wordpress-php-fpm/|dead-url=no}}</ref>
* 配置文件模板
* 配置文件模板
* [[Markdown]] 渲染
* [[Markdown]]渲染
* [[通用网关接口|CGI]] 通过 WebSockets
* [[通用网关接口|CGI]]通过WebSocket
* [[Gzip]] 压缩
* [[Gzip]]压缩
* 简单服务器鉴权
* 简单服务器鉴权
* URL 重写
* URL重写
* 重定向
* 重定向
* 文件浏览服务
* 文件浏览服务
* 访问日志
* 访问日志
* 实验性 QUIC 支持<br>
* 实验性[[QUIC]]支持


== 安全 ==
== 安全 ==
Caddy 不会受到 [[通用漏洞披露|CVEs]] 攻击 (包括 [[心脏出血漏洞|Heartbleed]], DROWN, POODLE, 和 [[傳輸層安全協議|BEAST]])<ref name="Qualys">{{Cite web|url=https://www.ssllabs.com/ssltest/analyze.html?d=caddyserver.com|title=SSL Server Test: caddyserver.com (Powered by Qualys SSL Labs)|accessdate=5 March 2016}}</ref> 另外, Caddy 使用 TLS_FALLBACK_SCSV 以防止协议降级攻击。
Caddy 免于很多已知的&nbsp;[[通用漏洞披露|CVEs]]&nbsp;攻击&nbsp;(包括 [[心脏出血漏洞|Heartbleed]], DROWN, POODLE, 和&nbsp;[[傳輸層安全協議|BEAST]])<ref name="Qualys">{{Cite web|url=https://www.ssllabs.com/ssltest/analyze.html?d=caddyserver.com|title=SSL Server Test: caddyserver.com (Powered by Qualys SSL Labs)|accessdate=5 March 2016|archive-date=2021-04-10|archive-url=https://web.archive.org/web/20210410091738/https://www.ssllabs.com/ssltest/analyze.html?d=caddyserver.com}}</ref>另外, Caddy 使用 TLS_FALLBACK_SCSV 以防止协议降级攻击。


2015 年 6 月 2 日,版本 0.7.1 修复了 Caddy 简单服务器鉴权中间件中时间欺诈攻击的漏洞<ref name="Caddy0.7.1">{{cite web|url=https://github.com/mholt/caddy/releases/tag/v0.7.1|title=Release 0.7.1 · mholt/caddy|date=2 June 2015}}</ref>
2015 年 6 月 2 日,版本 0.7.1 修复了 Caddy 简单服务器鉴权中间件中时间欺诈攻击的漏洞<ref name="Caddy0.7.1">{{cite web|url=https://github.com/mholt/caddy/releases/tag/v0.7.1|title=Release 0.7.1 · mholt/caddy|date=2 June 2015|accessdate=2017-04-03|archive-date=2019-02-15|archive-url=https://web.archive.org/web/20190215184111/https://github.com/mholt/caddy/releases/tag/v0.7.1|dead-url=no}}</ref>


关于协议和密码套件,Caddy 使用 TLS 1.0-1.2,并且倾向于 ECDHE ECDSA 与 [[高级加密标准|AES256]]-GCM-SHA384,支持十几种不同的加密方式。Cloudflare 已经使用了 Caddy 作为 TLS 1.3 的实现方案。<ref name="TwitterTLS1.3">{{cite tweet|user=grittygrease|number=705929028142673924|date=4 Mar 2016|author=Nick Sullivan|title=It's built in Go using custom versions @rlbarnes's Mint and @mholt6's Caddy}}</ref>
关于协议和密码套件,Caddy 使用 TLS 1.0-1.2,并且倾向于 ECDHE ECDSA 与 [[高级加密标准|AES256]]-GCM-SHA384,支持十几种不同的加密方式。[[Cloudflare]] 已经使用了 Caddy 作为 TLS 1.3 的实现方案。<ref name="TwitterTLS1.3">{{cite tweet|user=grittygrease|number=705929028142673924|date=4 Mar 2016|author=Nick Sullivan|title=It's built in Go using custom versions @rlbarnes's Mint and @mholt6's Caddy}}</ref>


传统的特权降级无法工作在 GoLang 程序上。<ref name="GoIssue1435">{{Cite web|url=https://github.com/golang/go/issues/1435|title=syscall: Setuid/Setgid doesn't apply to all threads on Linux|accessdate=5 March 2016|date=21 January 2011}}</ref> 为了绑定低于 1024 的端口, Caddy 必须使用 root 账户运行 (不建议) 或通过 <code>setcap</code> 给予低位端口使用权限(建议的)。 并且,在将来的版本中会尝试使用非特级子进程运行。<ref name="CaddyIssue528">{{Cite web|url=https://github.com/mholt/caddy/issues/528|title=Implement privilege de-escalation|date=21 January 2016}}</ref>
传统的特权降级无法工作在 Golang 程序上。<ref name="GoIssue1435">{{Cite web|url=https://github.com/golang/go/issues/1435|title=syscall: Setuid/Setgid doesn't apply to all threads on Linux|accessdate=5 March 2016|date=21 January 2011|archive-date=2018-02-07|archive-url=https://web.archive.org/web/20180207223710/https://github.com/golang/go/issues/1435|dead-url=no}}</ref> 为了绑定低于 1024 的端口, Caddy 必须使用 root 账户运行 (不建议) 或通过&nbsp;<code>setcap</code>&nbsp;给予低位端口使用权限 (建议的) 。 并且,在将来的版本中会尝试使用非特级子进程运行。<ref name="CaddyIssue528">{{Cite web|url=https://github.com/mholt/caddy/issues/528|title=Implement privilege de-escalation|date=21 January 2016|accessdate=2017-04-03|archive-date=2017-04-22|archive-url=https://web.archive.org/web/20170422124538/https://github.com/mholt/caddy/issues/528|dead-url=no}}</ref>


Caddy 没有自动启动 [[HTTP严格传输安全|HTTP Strict Transport Security]];推荐通过 Caddy's <code>header</code> 配置启用 HSTS。<ref name="CIO">{{Cite web|url=https://https.cio.gov/hsts/#configuration-for-common-web-servers|title=HTTP Strict Transport Security|accessdate=8 March 2016}}</ref>
Caddy 没有自动启动&nbsp;[[HTTP严格传输安全|HTTP Strict Transport Security]]推荐通过 Caddy <code>header</code> 配置启用 HSTS。<ref name="CIO">{{Cite web|url=https://https.cio.gov/hsts/#configuration-for-common-web-servers|title=HTTP Strict Transport Security|accessdate=8 March 2016|archive-date=2017-04-26|archive-url=https://web.archive.org/web/20170426214300/https://https.cio.gov/hsts/#configuration-for-common-web-servers|dead-url=no}}</ref>


=== 自动签发 HTTPS ===
=== 自动签发 HTTPS ===
Caddy 默认通过检查域名来启用 HTTPS (通过 ACME protocol 检查域名并签发证书), 并且重定向 HTTP 请求到 HTTPS。<ref name="AutoHTTPS">{{Cite web|url=https://caddyserver.com/docs/automatic-https|title=Automatic HTTPS|accessdate=5 March 2016}}</ref> 它在启动期间根据需要签发证书,并在服务器的使用期间自动重签发。 [[Let's Encrypt]] 是默认的证书颁发机构,但用户可以自定义所使用的 ACME CA,这在测试配置时是必要的。在2016年第一季度, 有百分之2的 Let's Encrypt 证书是由 Caddy 签发的。<ref name="USENIX">{{Cite AV media}}</ref>
Caddy 默认通过检查域名来启用 HTTPS (通过&nbsp;ACME protocol&nbsp;检查域名并签发证书), 并且重定向 HTTP 请求到 HTTPS。<ref name="AutoHTTPS">{{Cite web|url=https://caddyserver.com/docs/automatic-https|title=Automatic HTTPS|accessdate=5 March 2016|archive-date=2017-03-17|archive-url=https://web.archive.org/web/20170317101810/https://caddyserver.com/docs/automatic-https|dead-url=no}}</ref> 它在启动期间根据需要签发证书,并在服务器的使用期间自动重签发。 [[Let's Encrypt]] 是默认的证书颁发机构,但用户可以自定义所使用的 ACME CA,这在测试配置时是必要的。在 2016 年第一季度, 有百分之的 Let's Encrypt 证书是由 Caddy 签发的。


一个可选的配置允许 Caddy 在需要时签发一个证书 "按需 TLS"<ref name="AutoHTTPS-OnDemand">{{Cite web|url=https://caddyserver.com/docs/automatic-https#on-demand|title=On-Demand TLS|accessdate=5 March 2016}}</ref> 使用这种方案时,用户必须指定可通过该方案配置的证书数量。 当Caddy收到一个没有配置证书的请求时, 它会自动通过 ACME 签发并配置, 然后将证书存储于内存和硬盘。 这个过程通常需要几秒钟的时间,并且受到限制。
一个可选的配置允许 Caddy 在需要时签发一个证书 "按需 TLS"<ref name="AutoHTTPS-OnDemand">{{Cite web|url=https://caddyserver.com/docs/automatic-https#on-demand|title=On-Demand TLS|accessdate=5 March 2016|archive-date=2017-03-17|archive-url=https://web.archive.org/web/20170317101810/https://caddyserver.com/docs/automatic-https#on-demand|dead-url=no}}</ref> 使用这种方案时,用户必须指定可通过该方案配置的证书数量。&nbsp; Caddy 收到一个没有配置证书的请求时, 它会自动通过 ACME 签发并配置, 然后将证书存储于内存和硬盘。 这个过程通常需要几秒钟的时间,并且受到限制。


当使用 TLS, Caddy 会自动切换会话密钥以保证安全性<ref>{{Cite journal|title=Measuring the Security Harm of TLS Crypto Shortcuts|url=http://doi.acm.org/10.1145/2987443.2987480|last=Springall|first=Drew|last2=Durumeric|first2=Zakir|date=2016-01-01|journal=Proceedings of the 2016 ACM on Internet Measurement Conference|publisher=ACM|doi=10.1145/2987443.2987480|series=IMC '16|location=New York, NY, USA|pages=33–47|isbn=9781450345262|last3=Halderman|first3=J. Alex}}</ref>
当使用 TLS, Caddy 会自动切换会话密钥以保证安全性<ref>{{Cite journal|title=Measuring the Security Harm of TLS Crypto Shortcuts|url=http://doi.acm.org/10.1145/2987443.2987480|last=Springall|first=Drew|last2=Durumeric|first2=Zakir|date=2016-01-01|journal=Proceedings of the 2016 ACM on Internet Measurement Conference|publisher=ACM|doi=10.1145/2987443.2987480|series=IMC '16|location=New York, NY, USA|pages=33–47|isbn=9781450345262|last3=Halderman|first3=J. Alex}}</ref>


== 參考資料 ==
== 參考資料 ==
{{Reflist}}
{{Reflist|2}}


== 外部鏈接 ==
== 外部連結 ==
* {{Official website|https://caddyserver.com/}}
* {{Official website|https://caddyserver.com/}}
* {{GitHub|mholt/caddy}}
* {{GitHub|caddyserver/caddy}}

{{Web服务器软件}}

[[Category:自由跨平台軟體]]
[[Category:自由跨平台軟體]]
[[Category:自由网络服务器软件]]
[[Category:自由网络服务器软件]]
[[Category:反向代理]]
[[Category:反向代理]]
[[Category:用Go編程的自由軟件]]
[[Category:Linux代理服务器软件]]
[[Category:Unix网络相关软件]]
[[Category:Linux网络相关软件]]
[[Category:自由代理服务器]]

2023年8月3日 (四) 13:19的最新版本

Caddy
原作者Matthew Holt
首次发布2015年4月28日,​9年前​(2015-04-28
当前版本
  • 2.8.4(2024年6月2日;穩定版本)[1]
編輯維基數據鏈接
源代码库 編輯維基數據鏈接
编程语言Go
操作系统AndroidBSD variantsLinuxOS XWindows
类型Web服务器, 反向代理服务器
许可协议Apache许可证2.0
网站官方网站 在维基数据上编辑此内容

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

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

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

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

功能

[编辑]

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]

自动签发 HTTPS

[编辑]

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]

參考資料

[编辑]
  1. ^ Release 2.8.4. 2024年6月2日 [2024年6月20日]. 
  2. ^ Johnson, Brad. A Better Web Server with Free SSL. 23 February 2016 [5 March 2016]. (原始内容存档于2017-08-02). 
  3. ^ Automatic HTTPS with Caddy Server. 18 December 2015 [5 March 2016]. (原始内容存档于2017-08-02). 
  4. ^ 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. 
  5. ^ Show HN: Caddy, a cross-platform HTTP/2 web server. 28 April 2015 [2017-04-03]. (原始内容存档于2017-04-22). 
  6. ^ Is Caddy Free?. [2017-04-03]. (原始内容存档于2017-04-22). 
  7. ^ The Caddyfile. [29 February 2016]. (原始内容存档于2017-04-20). 
  8. ^ tls - Caddy Directives. [8 March 2016]. (原始内容存档于2017-03-17). 
  9. ^ Benedetti, Benoit. Caddy, Le Serveur Web Facile [Caddy, The Easy Web Server]. GNU/Linux Magazine France (France). November 2015 (法语). 
  10. ^ How to Setup the Caddy Web Server with php-fpm. [2017-04-03]. (原始内容存档于2017-08-18). 
  11. ^ Beke, Mathias. Caddy Server and WordPress (PHP-FPM). 21 August 2015 [2017-04-03]. (原始内容存档于2016-05-03). 
  12. ^ SSL Server Test: caddyserver.com (Powered by Qualys SSL Labs). [5 March 2016]. (原始内容存档于2021-04-10). 
  13. ^ Release 0.7.1 · mholt/caddy. 2 June 2015 [2017-04-03]. (原始内容存档于2019-02-15). 
  14. ^ Nick Sullivan [@grittygrease]. It's built in Go using custom versions @rlbarnes's Mint and @mholt6's Caddy (推文). 4 Mar 2016 –通过Twitter. 
  15. ^ syscall: Setuid/Setgid doesn't apply to all threads on Linux. 21 January 2011 [5 March 2016]. (原始内容存档于2018-02-07). 
  16. ^ Implement privilege de-escalation. 21 January 2016 [2017-04-03]. (原始内容存档于2017-04-22). 
  17. ^ HTTP Strict Transport Security. [8 March 2016]. (原始内容存档于2017-04-26). 
  18. ^ Automatic HTTPS. [5 March 2016]. (原始内容存档于2017-03-17). 
  19. ^ On-Demand TLS. [5 March 2016]. (原始内容存档于2017-03-17). 
  20. ^ 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. 

外部連結

[编辑]