(ワイルドカードではない)SSL証明書を発行して、mysub1.example1.com
、www.example2.com
などの複数のドメインやサブドメインを、すべて同じ秘密鍵を持つ1つの証明書に一致させることができます。
証明書が有効なドメインのリストを取得することは可能ですか?どうやって?それはブラウザから可能ですか、それともOpenSSL CLIを使用する必要がありますか?
必要に応じて詳細をお尋ねください。正直なところ、質問を明確な言葉で表現する方法がわからないので、改善したいと思っています。
証明書の有効なドメイン名は2か所に規定されています。
1つ目は、Subjectフィールドの一部であるCommon Name(CN)です。ここには1つの名前のスペースしかありません。つまり、www.example.com
などの固定名または*.example.com
などのワイルドカードを使用できます。
2つ目は、サブジェクト代替名(SAN)拡張機能で、証明書が有効な追加の名前を一覧表示します。 SANフィールドには多くのオプションがありますが、関心のあるものはDNSです。
ほとんどのブラウザの証明書GUIを見ると、件名とSAN)フィールドの両方が表示されているはずです。
OpenSSLを使用してそれらを表示するには、次のコマンドを実行するだけです。
$ openssl x509 -noout -text -nameopt multiline -in <cert file>
-nameopt multiline
はオプションですが、読みやすくなることに注意してください。次の例は、SANの良い例が含まれているため、ssl.comからのものです。
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
23:dd:f6:40:e2:ad:3f:24:2f:31:9c:c6:48:db:64:92
Signature Algorithm: sha256WithRSAEncryption
Issuer:
countryName = US
organizationName = SSL.com
organizationalUnitName = Controlled by COMODO exclusively for SSL.com
organizationalUnitName = www.ssl.com
commonName = SSL.com Premium EV CA
Validity
Not Before: Mar 11 00:00:00 2016 GMT
Not After : Nov 18 23:59:59 2016 GMT
Subject:
serialNumber = NV20081614243
jurisdictionCountryName = US
jurisdictionStateOrProvinceName = Texas
jurisdictionLocalityName = Houston
businessCategory = Private Organization
countryName = US
postalCode = 77025
stateOrProvinceName = Texas
localityName = Houston
streetAddress = Suite 286C
streetAddress = 2617 W Holcombe Blvd
organizationName = SSL Corp
organizationalUnitName = Security
organizationalUnitName = COMODO EV Multi-Domain SSL
commonName = www.ssl.com
Subject Public Key Info:
...
X509v3 Subject Alternative Name:
DNS:www.ssl.com, DNS:answers.ssl.com, DNS:faq.ssl.com, DNS:info.ssl.com, DNS:links.ssl.com, DNS:reseller.ssl.com, DNS:secure.ssl.com, DNS:ssl.com, DNS:support.ssl.com, DNS:sws.ssl.com, DNS:tools.ssl.com
...
ドメインの名前として使用されるのは、commonName
Subject
フィールドのみです。 Subject
など、organizationalUnitName
内の他のすべてのエントリは、ドメイン名のように見えても関係ありません。
すべての証明書を取得して保存するには、次のことを試してください。
$ openssl s_client -showcerts -connect www.ssl.com:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | csplit - -z -f cert- '/-END CERTIFICATE-/1' '{*}'