「Caddy」の版間の差分
Momiji-Penguin (会話 | 投稿記録) |
|||
8行目: | 8行目: | ||
| 最新版発表日 = {{Start date and age|df=yes|2020|5|4}}<ref>{{cite web |title=Releases |url=https://github.com/caddyserver/caddy/releases |website=Github |accessdate=4 May 2020}}</ref> |
| 最新版発表日 = {{Start date and age|df=yes|2020|5|4}}<ref>{{cite web |title=Releases |url=https://github.com/caddyserver/caddy/releases |website=Github |accessdate=4 May 2020}}</ref> |
||
| プログラミング言語 = [[Go_(プログラミング言語)|Go]]<ref name="Go1.6Blog">{{ cite web | url = https://blog.golang.org/go1.6 | title = Go 1.6 is released | first = Andrew | last = Gerrand | website = golang.org | date = 17 February 2016 | access-date = 5 March 2016 }}</ref> |
| プログラミング言語 = [[Go_(プログラミング言語)|Go]]<ref name="Go1.6Blog">{{ cite web | url = https://blog.golang.org/go1.6 | title = Go 1.6 is released | first = Andrew | last = Gerrand | website = golang.org | date = 17 February 2016 | access-date = 5 March 2016 }}</ref> |
||
| 対応OS = [[Windows]], [[OS X]], [[Linux]], [[BSD|各種 BSD]], [[Android]], [[Plan 9 from Bell Labs|Plan 9]] |
| 対応OS = [[Windows]], [[OS X]], [[Linux]], [[BSD|各種 BSD]], [[Android (オペレーティングシステム)|Android]], [[Plan 9 from Bell Labs|Plan 9]] |
||
| サポート状況 = 活動中 |
| サポート状況 = 活動中 |
||
| 種別 = [[Webサーバー|Web サーバー]], [[リバースプロキシ|リバースプロキシサーバー]], [[サーバロードバランス|ロードバランサー]] |
| 種別 = [[Webサーバー|Web サーバー]], [[リバースプロキシ|リバースプロキシサーバー]], [[サーバロードバランス|ロードバランサー]] |
||
24行目: | 24行目: | ||
Caddy はさまざまな Web 技術をサポートしている。 |
Caddy はさまざまな Web 技術をサポートしている。 |
||
Caddy は、[[Intel 80386|i386]] / [[X64|amd64]] / [[ARMアーキテクチャ|ARM]] [[コンピュータ・アーキテクチャ|アーキテクチャ]]に対応しており、多くのオペレーティングシステム([[Microsoft Windows|Windows]] / [[MacOS|Mac]] / [[Linux]] / [[BSDの子孫|各種 BSD]] / [[Android]] / [[Plan 9 from Bell Labs|Plan 9]])それぞれに向けて静的[[コンパイラ|コンパイル]]された[[バイナリ]]の[[実行ファイル]]として使用できる。 |
Caddy は、[[Intel 80386|i386]] / [[X64|amd64]] / [[ARMアーキテクチャ|ARM]] [[コンピュータ・アーキテクチャ|アーキテクチャ]]に対応しており、多くのオペレーティングシステム([[Microsoft Windows|Windows]] / [[MacOS|Mac]] / [[Linux]] / [[BSDの子孫|各種 BSD]] / [[Android (オペレーティングシステム)|Android]] / [[Plan 9 from Bell Labs|Plan 9]])それぞれに向けて静的[[コンパイラ|コンパイル]]された[[バイナリ]]の[[実行ファイル]]として使用できる。 |
||
== 特徴 == |
== 特徴 == |
2020年9月6日 (日) 10:19時点における版
作者 | Matthew Holt |
---|---|
初版 | 2015年4月28日 |
最新版 |
2.0.0
/ 2020年5月4日[1] |
リポジトリ | |
プログラミング 言語 | Go[2] |
対応OS | Windows, OS X, Linux, 各種 BSD, Android, Plan 9 |
サポート状況 | 活動中 |
種別 | Web サーバー, リバースプロキシサーバー, ロードバランサー |
ライセンス | Apache 2 |
公式サイト |
caddyserver |
Caddy は オープンソース[3] の HTTP/2 に対応した Web サーバーである。Caddy Web サーバー と呼ばれることもある。
Caddy は Go 言語で記述されており、HTTP 機能には Go 標準ライブラリを使用している。
Caddy の特徴的な機能の 1 つに、デフォルトでの HTTPS の有効化がある。[4] [5] [6]
開発者のマシュー・ホルト(Matthew Holt)は Caddy の開発を 2014 年 12 月に開始した。そして 2015 年 4 月にリリースした。[7] それから 200 人以上の開発者が加わり QUIC のサポートを追加するなどして発展して来た。
Caddy はさまざまな Web 技術をサポートしている。
Caddy は、i386 / amd64 / ARM アーキテクチャに対応しており、多くのオペレーティングシステム(Windows / Mac / Linux / 各種 BSD / Android / Plan 9)それぞれに向けて静的コンパイルされたバイナリの実行ファイルとして使用できる。
特徴
Caddy では多数の Web サイト向け技術が利用できる。
Caddy はリバースプロキシおよびロードバランサーとしても機能する。
Caddy の機能のほとんどは、Go のライブラリ実装に由来する。しかしミドルウェアとして提供されている拡張機能もある。それらは Caddyfile(Caddy の構成に使用されるテキストファイル)からディレクティブで指定できる。[8]
機能の一覧
- HTTP/1.1(プレーンテキストベースの HTTP 通信)および HTTP/2(デフォルトでの HTTPS 通信)への対応
- HTTPS の自動有効化もしくは手動での設定
- 仮想ホスト(同一ポートを使用した複数サイトの構築)[10]
- IPv4 および IPv6 のネイティブサポート
- 静的ファイル配信(可能であれば sendfile を使用)
- Graceful な再起動 / リロード
- リバースプロキシ(HTTP または WebSocket)
- ヘルスチェックによる負荷分散
- FastCGI プロキシ[11] [12]
- テンプレート(サーバーサイドインクルード に近い)
- Markdown レンダリング
- WebSocket を介した CGI
- Gzip 圧縮
- Basic 認証
- URL リライト
- リダイレクト
- ファイル閲覧
- ログの取得:アクセス / エラー / プロセス レベル
- QUIC のサポート(実験的)
セキュリティ
Caddy は広く知られた数多の CVE(脆弱性情報データベース)に関して安全である。ここには Heartbleed / DROWN / POODLE / BEAST なども含まれる。[13] さらに Caddy では TLS_FALLBACK_SCSV を使用することでプロトコルのダウングレード攻撃を防ぐこともできる。
2015 年 6 月 2 日に、バージョン 0.7.1 がリリースされた。これは Caddy の Basic 認証ミドルウェアに対するタイミング攻撃の脆弱性に対してパッチを当てるためだった。[14]
プロトコルおよび暗号スイートに関して、Caddy は TLS 1.0 - 1.2 を使用し、且つ、AES-256 - GCM - SHA-384 による ECDHE - ECDSA(楕円曲線ディフィー・ヘルマン鍵共有 - 楕円曲線 DSA) を標準としている。ただし他の多くの暗号もサポートしている。Caddy は Cloudflare でも使用されており、実験的な TLS 1.3 通信の提供が行われている。[15]
C 言語 で記述された従来のプログラムに見られたような、まず完全な特権を与えてそれを必要に応じて段階的に絞って行くしくみは、Go 言語 のプログラムでは特殊な方法でしか実現できないかもしくはまったく不可能である。[16]
HTTPS 通信の自動化
Caddy は、適正なドメイン名(ACME プロトコル を介して TLS 証明書を要求できるドメイン名)を持つサイトでは、デフォルトで HTTPS 通信を有効化する。HTTP リクエストは HTTPS にリダイレクトされる。[17]
Caddy はサーバー起動時に、必要に応じて証明書を取得し、サーバー稼働中は証明書を更新し続ける。
デフォルトの認証局は Let's Encrypt である。2016 年第 1 四半期に、Caddy は Let's Encrypt が発行した証明書の約 2 % を占めていた。[18] また、ユーザーは、対象とする ACME 認証局 をカスタマイズすることもできる。この機能はサーバー構成をテストする時に有用である。
他の設定を採ることも可能である。「オンデマンド TLS」と呼ばれる機能である。この機能を用いると、Caddy は起動時ではなく TLS ハンドシェイク時に、必要な場合にのみ証明書を取得する。[19] この機能を有効にするには、ユーザーは、発行可能な証明書の最大数を指定する必要がある。オンデマンド TLS 機能が有効な場合、Caddy は、まだ証明書が無いホスト名に対するリクエストを受け取ると、取得した証明書をメモリにキャッシュしてディスクに保存しながら、ACME を介して新しい証明書を要求し、それをすぐに提供する。 通常、このプロセスには数秒掛かる。そのため転送ビットレートの制約は厳しくなる。
TLS 通信において、Caddy はセッションチケットキーを定期的に自動的にローテーションする。このことで転送する情報の完全な機密性を保持している。 [20]
テレメトリー
バージョン 0.11 から、Caddy にテレメトリー機能が搭載された。 [21] これは 公式 Webサイトから Caddy をダウンロードする場合はオプトイン(デフォルトで無効)となっている。一方、ソースからビルドする場合はオプトアウト(デフォルトで有効)である。[22]
影響
CoreDNS
Miek Gieben は Caddy Web サーバーのフォークから CoreDNS を作成した。Caddy の単純な構成構文、プラグインアーキテクチャ、および Go 言語で記述されたコードが活用されている。 [23]
参考文献
- ^ “Releases”. Github. 4 May 2020閲覧。
- ^ Gerrand, Andrew (17 February 2016). “Go 1.6 is released”. golang.org. 5 March 2016閲覧。
- ^ “Light Code Labs”. lightcodelabs.com. Light Code Labs. 2019年9月15日閲覧。 “Caddy is an open source, easy-to-use HTTP/2 web server...”
- ^ Johnson (23 February 2016). “A Better Web Server with Free SSL”. VolumeLabs.net. 5 March 2016閲覧。
- ^ “Automatic HTTPS with Caddy Server” (18 December 2015). 5 March 2016閲覧。
- ^ Aas, Josh (12 February 2016). NYLUG Presents: Josh Aas on Let's Encrypt: A Free, Automated, and Open CA. Bloomberg.
- ^ “Show HN: Caddy, a cross-platform HTTP/2 web server”. news.ycombinator.com (2015年4月28日). 2015年4月28日閲覧。
- ^ “The Caddyfile”. 29 February 2016閲覧。
- ^ “tls - Caddy Directives”. 2016年3月8日閲覧。
- ^ Benedetti, Benoit (November 2015). “Caddy, Le Serveur Web Facile” (French). GNU/Linux Magazine France (France)
- ^ “How to Setup [sic] the Caddy Web Server with php-fpm”. 2017年8月18日時点のオリジナルよりアーカイブ。2016年3月9日閲覧。
- ^ Beke (2015年8月21日). “Caddy Server and WordPress (PHP-FPM)”. 2015年8月21日閲覧。
- ^ “SSL Server Test: caddyserver.com (Powered by Qualys SSL Labs)”. SSLLabs.com. 5 March 2016閲覧。
- ^ “Release 0.7.1 · mholt/caddy” (2015年6月2日). 2015年6月2日閲覧。
- ^ Nick Sullivan [@grittygrease] (2016年3月5日). "It's built in Go using custom versions @rlbarnes's Mint and @mholt6's Caddy". X(旧Twitter)より2016年3月4日閲覧。
- ^ “syscall: Setuid/Setgid doesn't apply to all threads on Linux” (21 January 2011). 5 March 2016閲覧。
- ^ “Automatic HTTPS”. 2016年3月5日閲覧。
- ^ Eckersley, Peter (21 February 2016). USENIX Enigma 2016 - Several Horror Stories about the Encrypted Web. YouTube. USENIX.
- ^ “On-Demand TLS”. 5 March 2016閲覧。
- ^ Kubacki (12 April 2016). “server: Rotate TLS ticket 'keys'”. 13 June 2019時点のオリジナルよりアーカイブ。13 June 2019閲覧。
- ^ “Caddy 0.11 Will Have Telemetry” (英語). Caddy. (2018年3月30日) 2018年6月5日閲覧。
- ^ “Caddy Telemetry - Documentation”. caddyserver.com. 20 February 2019閲覧。
- ^ Belamaric, John; Liu, Cricket (2019). “1: Introduction”. Learning CoreDNS: Configuring DNS for Cloud Native Environments (1 ed.). ISBN 9781492047964. OCLC 1091363083. What is CoreDNS?