2020/07/19 追記
仕様に幾つかの変更があったため、新しく記事を書き直しました
asnokaze.hatenablog.com
HTTPSで接続する際に以下の情報を持っていると都合がよいです
- SNIを暗号化するESNIの鍵情報など情報、(通常ESNI DNSレコードに記述される)
- HTTP/2やHTTP/3で通信可能な事を示すAlt-Svc (通常、HTTPレスポンスヘッダやAlt-Svcフレーム、Alt-Svcレコードで提供される)
それらの情報を通知するのに、DNSに新しくHTTPSSVCレコードを追加する「HTTPSSVC service location and parameter specification via the DNS」という提案仕様がGoogleとAkamaiの方の共著で提出されています。
また、このHTTPSSVCレコードではドメインのApexでも使用できるためApexでCNAME使いえない問題も解決できるほか、HTTP Strict Transport Security [HSTS] をクライアントに通知できるので初回接続のセキュリティーを改善します。
拡張可能でもあるため、今後もこのレコードに機能を追加することもできます。
例
HTTPSSVC レコードの利用例です。
example.com. 2H IN HTTPSSVC 0 0 svc.example.net. svc.example.net. 2H IN HTTPSSVC 1 2 svc3.example.net. "hq=\":8003\" \ esnikeys=\"...\"" svc.example.net. 2H IN HTTPSSVC 1 3 svc2.example.net. "h2=\":8002\" \ esnikeys=\"...\""
- example.comはsvc.example.netからも提供できることを示します。
- svc3.example.netからHTTP/3を8003ポートで提供できることを示します(また必要なesnikeysを示します)
- svc2.example.netからHTTP/2を8002ポートで提供できることを示します(また必要なesnikeysを示します)
HTTPSSVCレコードは存在自体がHSTSを示すので、クライアントはHTTPのリンクもHTTPSで接続しに行きます。