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. 

      外部連結[編輯]