ソフトウェア

簡単にSSL証明書を取得可能&シンプルな設定ファイルでHTTP/3も利用できるGo製ウェブサーバー「Caddy」


ウェブサーバーとして有名なソフトウェアはApachenginxですが、設定が難しいと感じる人も少なくないはず。Google発のプログラミング言語「Go」で開発された「Caddy」は、最低限の設定でSSLによる暗号化やHTTP/3での通信も可能なウェブサーバーです。

Caddy 2
https://caddyserver.com/v2

CaddyはUbuntuやCentOSなどのLinuxで利用可能。今回はUbuntu 18.04にCaddyをインストールしてみます。


下記コマンドを実行すれば、Caddyをインストールすることができます。

echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \
    | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
sudo apt update
sudo apt install caddy


インストールすると自動でCaddyが起動します。サーバーのドメイン名にアクセスすると、きちんとウェルカム画面が表示されました。


CaddyをインストールしただけではHTTPSが有効になっていないので、Chromeのアドレスバーには「保護されていない通信」と表示されています。


CaddyはLet's Encryptを利用して自動でSSL証明書を取得してくれます。HTTPSを有効にするため、ウェルカム画面の指示に従いCaddyの設定ファイルである「/etc/caddy/Caddyfile」にドメイン名を追記します。


ファイルを変更したら、Caddyのサービスをリロードします。

sudo systemctl reload caddy


もう一度サーバーのURLにアクセスすると、「この通信は保護されています」と表示されました。SSL証明書が取得され、きちんとHTTPSによる通信が行われています。


ルートディレクトリの変更やBASIC認証といったCaddyの詳細な設定もCaddyfileにて行います。例えば以下の記述は、静的なファイルサーバー「example.com」のルートディレクトリを「/var/www/html/」とし、アクセスログを「/var/log/caddy/access.log」に記録、BASIC認証をルートディレクトリ以下に設定するための内容です。

example.com {
    root * /var/www/html/       
    file_server
    log {
        output file /var/log/caddy/access.log
    }
    basicauth /* {
        ユーザー名 パスワードのハッシュ値
    }
}


Caddyはまだ実験段階であるHTTP/3にも対応しています。HTTP/3を使用するにはCaddyfileの先頭に下記の記述を追加し、サービスをリロードします。

{
experimental_http3
}


HTTP/3に対応しているブラウザは、記事作成時点ではChrome CanaryとFirefoxのナイトリー版しかないので、今回はChrome CanaryでHTTP/3による通信を行ってみます。下記コマンドをコマンドプロンプトで実行し、HTTP/3を有効にしてChrome Canaryを起動。なお、h3-27の「27」は、HTTP/3のドラフト番号であるため、頻繁に変更されます。


"C:\Users\ユーザー名\AppData\Local\Google\Chrome SxS\Application\chrome.exe" --enable-quic --quic-version=h3-27


URLにアクセスするとプロトコルが「h3-27」と表示され、HTTP/3で接続されていることが確認できました。

この記事のタイトルとURLをコピーする

・関連記事
お手軽にウェブアプリを開発できるOSSのフレームワーク「Phoenix Framework」、15分でTwitterライクなアプリを開発するムービーも - GIGAZINE

Google発のプログラミング言語「Go」の利用状況を調査した結果が公開中、どこでどのように使われているのか? - GIGAZINE

ウェブサイトの高速化を目指す「HTTP/3」の現時点でのパフォーマンスは? - GIGAZINE

Webサーバーソフトウェアでnginxのシェアが3割越え、王者Apacheはシェア50% - GIGAZINE

全世界で使われるWebサーバーの開発元「NGINX」にロシア警察の強制捜査、従業員拘束&機器押収へ - GIGAZINE

in ソフトウェア, Posted by log1n_yi

You can read the machine translated English article here.