トップQs
タイムライン
チャット
視点

Caddy

オープンソースの HTTP/2 対応 Web サーバー ウィキペディアから

Caddy
Remove ads

Caddyオープンソース[3]HTTP/2HTTP/3に対応した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) それぞれに向けて静的コンパイルされたバイナリ実行ファイルとして使用できる。

Remove ads

特徴

Caddyでは多数のWebサイト向け技術が利用できる。

Caddyはリバースプロキシおよびロードバランサーとしても機能する。

Caddyの機能のほとんどは、Goのライブラリ実装に由来する。しかしミドルウェアとして提供されている拡張機能もある。それらはCaddyfile(Caddyの構成に使用されるテキストファイル)からディレクティブで指定できる。[8]

機能の一覧

  • HTTP/1.1(プレーンテキストベースのHTTP通信)およびHTTP/2(デフォルトでのHTTPS通信)、HTTP/3(デフォルトでのHTTPS通信)への対応
  • HTTPSの自動有効化もしくは手動での設定
    • TLS 1.3(ただし古いプロトコルも一時的にサポートしている)[9]
    • SNI
    • OCSP ステープリング
  • 仮想ホスト(同一ポートを使用した複数サイトの構築)[10]
  • IPv4およびIPv6のネイティブサポート
  • 静的ファイル配信(可能であればsendfileを使用)
  • Gracefulな再起動 / リロード
  • リバースプロキシ(HTTPまたはWebSocket
  • ヘルスチェックによる負荷分散
  • FastCGIプロキシ[11] [12]
  • テンプレート(サーバーサイドインクルード に近い)
  • Markdownレンダリング
  • WebSocketを介したCGI
  • Gzip圧縮
  • Basic認証
  • URLリライト
  • リダイレクト
  • ファイル閲覧
  • ログの取得:アクセス / エラー / プロセス レベル
  • QUICのサポート(実験的)
Remove ads

セキュリティ

要約
視点

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]

Remove ads

テレメトリー

バージョン0.11から、Caddyにテレメトリー機能が搭載された [21]。これは公式WebサイトからCaddyをダウンロードする場合はオプトイン(デフォルトで無効)となっている。一方、ソースからビルドする場合はオプトアウト(デフォルトで有効)である[22]

影響

CoreDNS

Miek Giebenは Caddy WebサーバのフォークからCoreDNSを作成した。Caddyの単純な構成構文、プラグインアーキテクチャ、およびGo言語で記述されたコードが活用されている[23]

脚注

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads