Answers:
openssl x509 -text < foo.crt
应该可以。
openssl x509 -text < $CRT | grep 'DNS:' | sed 's/\s*DNS:\([a-z0-9.\-]*\)[,\s]\?/\1 /g'
如果您只想查看 SAN,grep DNS:
那么显而易见的解决方案是。
如果您希望有一个更清洁的列表来进一步处理,可以使用此Perl正则表达式仅提取名称: @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 的开关使它一次读取整个输入,而不是逐行读取)
openssl s_client -showcerts -connect www.example.org:443 | openssl x509 -text