`openssl`: 주제 대체 이름

`openssl`: 주제 대체 이름

일반 이름을 얻기 위해 이 코드를 작성했습니다.주제특정 도메인에 대한 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에서 주제 대체 이름 필드의 값을 어떻게 얻습니까?

답변1

모든 경우에 작동하지는 않지만 시도해 보세요.

openssl s_client -connect google.com:443 2>&1 | openssl x509 -text 쿼리 |

답변2

@stuart-p-bentley가 쓴 내용에 대해 생각하게 되었고 를 사용하여 "주제 대체 이름"의 쉼표로 구분된 목록을 얻는 방법을 생각해 냈습니다 openssl. 그의 답변에 있는 sed 줄은 모든 예에서 FreeBSD에서 작동하지 않습니다.awktr

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

답변3

이것은 버전입니다~ 할 것이다어떤 경우에도 작동하며 선행 공백을 제거합니다.

openssl s_client -connect google.com:443 2>&1 | openssl x509 -text |
  sed -nr '/^ {12}X509v3 Subject Alternative Name/{n;s/^ *//p}'

답변4

스위치를 사용할 수도 있습니다

-certopt no_pubkey,no_sigdump,no_validity,no_serial,no_header,no_issuer,no_version,no_aux,no_signame,no_subject

관련 정보