ชื่อโดเมนที่ถูกต้องสำหรับใบรับรองมีการระบุในสองแห่ง
First คือชื่อสามัญ (CN) ซึ่งเป็นส่วนหนึ่งของฟิลด์หัวเรื่อง มีพื้นที่เพียงหนึ่งชื่อที่นี่ซึ่งหมายความว่ามันอาจจะเป็นชื่อคงที่เช่นเป็นหรือสัญลักษณ์เช่นwww.example.com
*.example.com
อย่างที่สองคือส่วนขยาย Subject Alternate Name (SAN) ซึ่งแสดงรายการชื่อเพิ่มเติมที่ใบรับรองนั้นใช้ได้ มีตัวเลือกมากมายสำหรับฟิลด์ SAN แต่ตัวเลือกที่คุณสนใจคือ DNS
หากคุณดู GUI ใบรับรองของเบราว์เซอร์ส่วนใหญ่คุณจะเห็นทั้งฟิลด์ Subject และ SAN
เพื่อดูพวกเขาโดยใช้ OpenSSL เพียงแค่เรียกใช้:
$ openssl x509 -noout -text -nameopt multiline -in <cert file>
โปรดทราบว่า-nameopt multiline
เป็นตัวเลือก แต่ทำให้อ่านง่ายขึ้น ตัวอย่างต่อไปนี้มาจาก ssl.com เนื่องจากมีตัวอย่างที่ดีของ SAN:
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
ที่ไม่เกี่ยวข้องแม้ว่าจะดูเหมือนชื่อโดเมน
หากต้องการดึง certs ทั้งหมดและบันทึกให้ลอง:
$ 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' '{*}'
openssl s_client connect
หรือไม่?