SSL設定を繰り返さずにLighttpdをデュアルスタックする

SSL設定を繰り返さずにLighttpdをデュアルスタックする

Lighttpd を試しているのですが、小さいながらも非常に厄介な問題に遭遇しました。IPv6 構成が完全に混乱しており、SSL 設定を 2 回複製する必要があります。自分で見て:

# listen to ipv4
server.bind = "0.0.0.0" 
server.port = "80" 

# listen to ipv6
$SERVER["socket"] == "[::]:80" {  }

# if you need ssl
$SERVER["socket"] == "0.0.0.0:443" { <here your ssl options> }
$SERVER["socket"] == "[::]:443" { <here your ssl options again> } // sadness

それを回避する方法を誰か知っていますか? そのような方法があればドキュメントに記載されていると思いますが、空の条件ブロックを使用して追加のソケットにバインドする方法を確認した後、私が望むことを実現するための他の「魔法」でドキュメント化されていない方法があったとしても驚かないでしょう。

server.bindまたは に設定し[::]たり0.0.0.0、条件を に設定したり[::]:4430.0.0.0:443単に に設定したりと、複数の組み合わせを試しました:443が、組み合わせに応じて IPv4 または IPv6 のいずれかで、HTTPS ソケットの 1 つが常に欠落してしまいました (正確な結果を投稿することはできません。追跡しておらず、テストをやり直すのは非常に面倒です)。

答え1

変数を使用したり、ファイルから設定をインクルードしたりすることができます。コアモジュールの設定ファイル構文ここでは後者を使用できます。

$SERVER["socket"] == "0.0.0.0:443" { include "ssl.conf" }
$SERVER["socket"] == "[::]:443" { include "ssl.conf" }

次に、次の設定を行いますssl.conf

ssl.engine  = "enable"
ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"
ssl.pemfile = "/etc/ssl/private/example.pem" 
ssl.ca-file = "/etc/ssl/certs/example.crt" 

関連情報