从SSL证书获取通用名称(CN)?


Answers:


89

如果已openssl安装,则可以运行:

openssl x509 -noout -subject -in server.pem

5
您可以使用以下方法从主题中提取CN:openssl x509 -noout -subject -in server.pem | sed -n '/^subject/s/^.*CN=//p'
Matthew Buckett 2014年

1
我修改了@MatthewBuckett所说的内容,并使用sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-]*\).*$/\1/'了CN后面的其他详细信息,只是用来获取域名。对于有效的CN,它不是非常严格的匹配,但是在大多数情况下,它可以工作,您可能会更加懈怠并用来代替[a-zA-Z0-9\.\-][^/]但我不确定那将始终有效。
flungo

1
添加\*到什么@flungo用于支持通配符域:sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-\*]*\).*$/\1/'[^/]在我的情况下工作,虽然)
布林

1
sed如果证书具有在通用名称(CN)之后指定的相对专有名称(RDN),例如OU(OrganizationalUnit)或C(Country),则上述建议的命令将无效。解决这种情况的一种方法是增加sedopenssl x509 -noout -subject -in server.pem | sed 's/^.*CN=//' | sed sed 's/\/.*$//'
Ohad Schneider

6
在主题名称中将CN与其他RDN / ATV 分开的简便方法openssl x509 -noout -subject -nameopt multiline | grep commonName或仅用于值| sed -n 's/ *commonName *= //p'
dave_thompson_085

7
certtool -i < whatever.pem | egrep "^\s+Subject:"

请注意,这是通过<而不是将其用作参数将文件定向到标准输入的。SANS egrep这将打印整个证书出来,但CN是在Subject:接近顶部场(小心也有一个CN值的Issuer:字段)。

X.509 Certificate Information:
    Version: 3
    Serial Number (hex): 01
    Issuer: [...] CN=unixandlinux.ex  <- Not this one.
    Validity: ...
    Subject: CN=goldilocks

certtool是gnutls的一部分,如果未安装,则进行搜索。GnuTLS比IMO的OpenSSL更好。


2
好的答案,+ 1。对于Mac OS X,我必须使用gnutls-certtool通过brew install gnutls
Mike D

在debian上安装gnutls-bin
rubo77

1

我找到了上面的答案,并发现它非常有用,但是我也发现certtool命令语法(今天在Ubuntu Linux上)与goldilocks所描述的明显不同,输出也是如此。因此,我认为最好用“今天的版本”更新该出色的答案。

根据,"i"选项(现在?)代表“导入” man certtool,因此正确的命令似乎是"d"“显示”。因此,此命令:

certtool d myfoo.crt

(文件扩展我的情况正好是.crt不是.pem...这是不相关的。)

...产生的输出在相关部分看起来像这样:

Common Name     : Foobar

毫无疑问,金凤花是正确:certtool输出是多少比更简单容易使用,openssl在这种情况下。


1
我怀疑我们在谈论完全不同的软件。我从未见过带有certtool选项的版本,没有普通的运算符(---),而man certtool对于3.5.8版(debian),3.5.16版(fedora,上游稳定分支之后的唯一版本是3.5.17版)一个月前)的GnuTLS的在线文档和,的确,为Ubuntu 17.10联机手册页(版本相同电流的Debian)都指:
金发姑娘

“ -i,-certificate-info:打印给定证书上的信息”,“ -d”则是“ --debug”。 很奇怪。喔
goldilocks

-1

我曾经用过: openssl x509 -noout -subject -in mycert.crt | awk -F= '{print $NF}'添加| sed -e 's/^[ \t]*//'如果您不能忍受空白

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.