ここでは、下記チケットの対応方針について述べる
svarshavchik/courier#10
couriertls(1) には client モードと server モードがある。
client モードは、 couriertls が TLSクライアントとして動作するときのモードを実装するものである。server モードはその対になるもので、courirertls がサーバとして動作するときのモードを実装するものである。
このモードのいずれになるかは、 -server
オプションを指定するかによって決まる
GnuTLS と OpenSSL の両方に対応することで、以下のようなデメリットがあるのは明らかだが、メンテナとしてはそういう方針だ
- 追加のメンテナンスコストが必要
- どちらかのみでしか使えない設定項目が存在し、混乱を招きやすい
client モードの場合、クライアント認証の場合の自分の証明書を送る機能があるが、OpenSSL では呼び出し側のコールバックを実装しない限り対応不要である。
server モードの場合、TLS_CERTFILE
をベースにサーバの認証を行うので、対応が必要なのはもちろん、SNI や IP ベースのバーチャルのホストにも対応が必要である。
上記で述べた通り、client モードのクライアント認証の場合、OpenSSL では対応不要だが、GnuTLS では対応が必要である。
なぜなら、TLS_CERTFILE
をクライアント認証の証明書として送る機能が実装されているためである。
但し、clientモードの場合、バーチャルホストやSNIには対応不要である。TLSクライアントは複数のホストを区別する必要がないからである。これに対して、serverモードの場合は、OpenSSL と同様、SNI やバーチャルホストの対応が必要である
- ○ → 対応必須
- × → 対応不要
TLSライブラリ | serverモード | serverモード(バーチャルホスト) | clientモード | clientモード(バーチャルホスト) |
---|---|---|---|---|
OpenSSL | ○ | ○ | × | × |
GnuTLS | ○ | ○ | ○ | × |