私はメインサイトといくつかのvhostsを持つドメイン名を持っています。すべてのサイト(メインサイトとvhosts)にHTTPS経由でのみアクセスできるようにし(HSTSを使用)、存在しないサブドメインをメインサイトにリダイレクトしたい。
私が欲しいものを要約すると:
私はこれに非常に近いですが、最後から2番目のリダイレクトは機能しません。 Let's Encrypt の証明書を使用していますが、現時点ではワイルドカード証明書を提供していないため、証明書はメインドメインとvhost(私が明示的にリストしたもの)に対してのみ有効です。証明書を作成しました)。証明書が無効であるため、ブラウザは接続をブロックします。
この問題を回避するための最良の方法(もしあれば)は何でしょうか?
それが役立つ場合は、これが私の(簡略化された)nginx構成です:
server {
listen 80;
server_name _;
return 301 https://example.com$request_uri;
}
server {
listen 443 spdy;
server_name _;
# SSL settings snipped for brevity. SPDY and HSTS are enabled.
return 301 https://example.com$request_uri;
}
server {
listen 443 spdy;
server_name example.com;
root /var/www/example.com;
index index.html index.htm;
}
server {
listen 443 spdy;
server_name vhost.example.com;
root /var/www/vhost.example.com;
index index.html index.htm;
}
実際には、ワイルドカード証明書がないと問題を回避できません。要求されている名前と一致する証明書を提示できない場合は、接続エラーが発生します。これはプロトコルの基本的な部分です。
理論的には、証明書にない名前のSNIヘッダーを受信したときに、Let's Encryptから証明書をすばやく発行し、その新しく作成された証明書をTLSハンドシェイクで返送するようなものを作成できると思いますが。 ..まあ、それは正確には実用的ソリューションではありませんか?