Bash

openssl:主題備用名稱

  • August 31, 2016

我編寫了這段程式碼來獲取給定域的 SSL 證書中主題欄位的通用名稱:

$ echo -e "GET / HTTP/1.1\nEOT" | \
  openssl s_client -connect google.com:443 2>&1 | \
  grep subject
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com

然而,這只給了我“主題”的價值。備選 CN 可能會列在“主題備選名稱”欄位中。例如:

那麼,如何在 Bash 中獲取主題備用名稱欄位的值?

這可能並非在所有情況下都有效,但請嘗試

openssl s_client -connect google.com:443 2>&1 | openssl x509-文本 | grep DNS

@stuart-p-bentley 寫的東西讓我思考,我想出了這種使用openssl,awk和獲取逗號分隔的“主題替代名稱”列表的方法tr。他回答中的 sed 行在每個範例中都不適用於 FreeBSD。

openssl s_client -connect google.com:443 2>&1 | openssl x509 -text | awk '/X509v3 Subject Alternative Name/ {getline;gsub(/ /, "", $0); print}' | tr -d "DNS:"

這是您通過 google.com 獲得的內容

*.google.com,*.android.com,*.appengine.google.com,*.cloud.google.com,*.google-analytics.com,*.google.ca,*.google.cl,*.google.co.in,*.google.co.jp,*.google.co.uk,*.google.com.ar,*.google.com.au,*.google.com.br,*.google.com.co,*.google.com.mx,*.google.com.tr,*.google.com.vn,*.google.de,*.google.es,*.google.fr,*.google.hu,*.google.it,*.google.nl,*.google.pl,*.google.pt,*.googleadapis.com,*.googleapis.cn,*.googlecommerce.com,*.googlevideo.com,*.gstatic.cn,*.gstatic.com,*.gvt1.com,*.gvt2.com,*.urchin.com,*.url.google.com,*.youtube-nocookie.com,*.youtube.com,*.youtubeeducation.com,*.ytimg.com,android.com,g.co,goo.gl,google-analytics.com,google.com,googlecommerce.com,urchin.com,youtu.be,youtube.com,youtubeeducation.com

引用自:https://unix.stackexchange.com/questions/67203