รายชื่อโดเมนในใบรับรอง SSL ของ UCC / SAN


15

มีวิธีในการแสดงรายการโดเมนทั้งหมดในใบรับรอง SSL SAN / UCC หรือไม่ (ควรใช้บรรทัดคำสั่งบน linux / os x) หรือไม่?

เห็นได้ชัดว่าต้องมีวิธีการดึงข้อมูลบางอย่างเนื่องจากเบราว์เซอร์สามารถทำได้ น่าเสียดายที่ฉันเห็นรายการ แต่ไม่สามารถตัดและวางได้

คำตอบ:


25

openssl x509 -text < foo.crt ควรทำเคล็ดลับ


3
สำหรับลูกหลานนี้เป็นคำสั่งเต็มผมใช้ตั้งแต่ผมทำมันสำหรับเซิร์ฟเวอร์อื่น:openssl s_client -showcerts -connect www.example.org:443 | openssl x509 -text
จอร์แดนไรเตอร์

3
ในการรับรายการโดเมนที่คั่นด้วยช่องว่างที่สะอาดคุณสามารถส่งผ่าน grep และ sed เช่นนั้นได้openssl x509 -text < $CRT | grep 'DNS:' | sed 's/\s*DNS:\([a-z0-9.\-]*\)[,\s]\?/\1 /g'
เจฟฟรีย์

กรุณาเลื่อนลง: คำตอบของ panticz.de ดีกว่า ;-)
lucaferrario

10

คุณสามารถแสดงรายการโดเมนด้วยคำสั่งนี้ (ทดสอบบน linux):

cat cert.pem | openssl x509 -text | grep DNS

อันนี้ให้ผลลัพธ์ที่ดีกว่าคำตอบที่ยอมรับ
VaTo

ใช่นี่ควรเป็นคำตอบที่ได้รับการยอมรับแทน
Kal

1

ถ้าคุณแค่อยากเห็น SANs grep DNS:เป็นทางออกที่ชัดเจน

หากคุณต้องการให้รายการทำความสะอาดดำเนินการต่อไปคุณสามารถใช้ Perl regex นี้เพื่อแยกชื่อ: @names=/\sDNS:([^\s,]+)/g

ตัวอย่างเช่น:

true | openssl s_client -connect example.com:443 2>/dev/null \
| openssl x509 -noout -text \
| perl -l -0777 -ne '@names=/\bDNS:([^\s,]+)/g; print join("\n", sort @names);'

ซึ่งจะเอาท์พุทนี้:

example.com
example.edu
example.net
example.org
www.example.com
www.example.edu
www.example.net
www.example.org

ดังนั้นคุณสามารถท่อไปที่while read name; do echo "processing $name ..."; doneฯลฯ

หรือสำหรับรายการที่คั่นด้วยเครื่องหมายจุลภาคในหนึ่งบรรทัดให้แทนที่join("\n",ด้วยjoin(",",

( -0777สวิตช์สำหรับ perl ทำให้มันอ่านอินพุตทั้งหมดในครั้งเดียวแทนทีละบรรทัด)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.