web-dev-qa-db-ja.com

安全な接続のためにDNSSECを使用する

私の理解では、DNSSECを使用すると、公開鍵を作成してDNSレコードに署名することができます。証明書レコードを取得する方法は複数あるようです(DANEなど https://wiki.mozilla.org/Security/DNSSEC-TLS-details#Embedding_Certificate_Information_in_DNS を参照)

これがどのように機能するのか正確にはわかりません。私はこれらのステップを推測しています。これは正しいです?

  • 公開鍵と秘密鍵のペアを作成する
  • 公開鍵をDNSレコードに入れる(DSだと思います)
  • 私のDNSレコードに署名する
  • サーバーの公開鍵/秘密鍵を作成します
  • 証明書を作成する
  • DNS秘密鍵を使用して証明書に署名します
  • 証明書をDNSに入れてください!?!?!
  • 証明書をサーバーに配置して、通常の方法で使用しますか?

私は何かがおかしいと感じています、そしてMozillaリンクはすべてのレコードがサポートされるわけではないので、現在よくサポートされていると言っています(たとえば、firefox、chrome、IOSとAndroid)と私が使用しているレコード私が説明することについて?DANE?CAA?

4
user274

[〜#〜] dnssec [〜#〜][〜#〜] dane [〜#〜] は別のものですが、DNSSECはDANEを使用するための前提条件です。

DNSSECは特に、受信したDNSデータが本物であることの検証を可能にします。

DNSSECを利用するということは、DNSSECキーを生成し、ゾーンに署名し(これにより、公開キーをDNSKEYレコードとして公開し、実際のゾーンデータに基づいてRRSIG/NSEC/NSEC3レコードを追加するなど)、レジストラにDSレコード(委任されたゾーンで公開した有効なキーを識別する)を通常のNS/glueレコードとともに追加させることによって署名された委任。

DANEを利用することは、基本的に、DNSSEC署名ゾーンに次のようなTLSAレコードを追加することです。

_443._tcp.example.com. IN TLSA tlsa-parameters-identifying-the-valid-certificate

(このレコードを生成するには、 hash-slingertlsa(1)を使用することをお勧めします)

DANE対応のHTTPSクライアント(この例では)は、example.comのポート443/tcpに接続していることを認識し、_443._tcp.example.com. IN TLSAを検索して、DNSデータの信頼性を検証し、次に、そのデータを使用して、TLS接続で提示された証明書を検証します。

6