web-dev-qa-db-ja.com

ワイルドカードSSL証明書を第2レベルドメインに発行できますか?

何かのようなもの *.comまたは*.net*.edu.au

RFC 2818は、このトピックについて何も述べていません。

29
Nam Nguyen

はい、発行できます。

幸いにも、一般的なブラウザーはTLDのワイルドカード証明書を受け入れません。

Chromiumソースコード

// Do not allow wildcards for public/ICANN registry controlled domains -
// that is, prevent *.com or *.co.uk as valid presented names, but do not
// prevent *.appspot.com (a private registry controlled domain).
// In addition, unknown top-level domains (such as 'intranet' domains or
// new TLDs/gTLDs not yet added to the registry controlled domain dataset)
// are also implicitly prevented.
// Because |reference_domain| must contain at least one name component that
// is not registry controlled, this ensures that all reference domains
// contain at least three domain components when using wildcards.
size_t registry_length =
    registry_controlled_domains::GetCanonicalHostRegistryLength(
        reference_name,
        registry_controlled_domains::INCLUDE_UNKNOWN_REGISTRIES,
        registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);

// ... [SNIP]

// Account for the leading dot in |reference_domain|.
bool is_registry_controlled =
    registry_length != 0 &&
    registry_length == (reference_domain.size() - 1);

// Additionally, do not attempt wildcard matching for purely numeric
// hostnames.
allow_wildcards =
    !is_registry_controlled &&
    reference_name.find_first_not_of("0123456789.") != std::string::npos;
}

Googleが許可しないドメインの完全なリストは net/base/registry_controlled_domains/effective_tld_names.dat

IEおよびFirefoxを含む)他のブラウザもこれを行います。

DigiNotarが発行した偽の証明書のリスト には、「*。*。com」があります。これは明らかに制限を回避するための試みです。

29

発行部分については、すべてを証明書に入れることができます。名前が「ワイルドカード」であることは、CAにとって特別な意味はありません。 CAはSubject Alt Name拡張子に文字列をdNSNameとして配置し、それだけです。この文字列に "*"文字が含まれているかどうかは、CAの動作には影響しません。

重要なのはSSLクライアントが「有効な証明書」、つまり目的のサーバー名(URLに含まれているもの)と「一致する」名前を含む証明書として受け入れるものです。これは名目上 RFC 2818、セクション3.1 で指定されており、 "www.*.*c*"などの多くの種類のワイルドカード名を許可し、(理論的には)3つのコンポーネントを含む任意のサーバー名に一致します。最初は「www」で、3番目は少なくとも1つの「c」を含みます。 Webブラウザーベンダーはすぐにこの仕様を次のように検討しました。

  • 非常に幅広いワイルドカード名を使用できます。
  • 適切に実装するには比較的複雑でした。
  • 他の両方のブラウザーベンダーとCAによって適切に実装される可能性はほとんどありませんでした(CAは名前の内容の影響を受けませんが、証明書の内容に責任があり、ブラウザーベンダーはCAが過度に広いワイルドカード証明書を不本意に発行する);
  • いずれにせよ、「情報提供」RFCであり、「提案された標準」ではなかったため、弁護士の傾向にある人々は、それを無視できると主張することができました。

そのため、ブラウザベンダーは独自のスキームと制限を設けました。かなり後に、 新しいRFC (2011年3月からの6125)が発行され、 セクション6.4. は、証明書のワイルドカード名の処理に特化しています。 RFC 6125が説明しているのは、現実とより調和しており、isは「提案された標準」であるため、少なくともある程度は、それを実現する意志があります。ただし、RFC 6125には、*.comの拒否を義務付けるものはありません。それでもブラウザdo拒否します。

10
Thomas Pornin

私はこれを一般的なブラウザーでテストしましたが、3つの大きなブラウザー(とにかくウィンドウズ)はこれを受け入れません。私が行っていないのは、この攻撃の真の標的であるimoであるモバイルプラットフォームで試してみることです。 iOSには証明書を取り消す方法がないため、Appleがパッチをリリースしてパッチを適用するまで、脆弱性が存在する何百万ものiデバイスがあります。

これを試すための明白な場所:影響のあるActiveSync:交換するActiveSync、SSL VPNクライアント、iDevice上のSafari、Android上のストックブラウザ。

3
Ori