SSL証明書から共通名(CN)を取得しますか?


64

PEM形式のSSL CRTファイルがあります。コマンドラインから証明書から共通名(CN)を抽出する方法はありますか?


3
ただし、マルチドメイン証明書では、CNにすべてが含まれているわけではないことに注意してください。
トーステンブロンガー

回答:


90

あなたがいる場合はopensslインストールされ、あなたは実行することができます。

openssl x509 -noout -subject -in server.pem

5
あなたはと対象外のCNを抽出することができます:openssl x509 -noout -subject -in server.pem | sed -n '/^subject/s/^.*CN=//p'
マシューBuckett

1
sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-]*\).*$/\1/'CNの後に追加の詳細があったので、@ MatthewBuckettが言ったことを修正し、ドメインのみを取得するために使用しました。有効な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(国)がある場合、上記のコマンドは機能しません。そのような場合に応える1つの方法は追加sedです:openssl x509 -noout -subject -in server.pem | sed 's/^.*CN=//' | sed sed 's/\/.*$//'
オハドシュナイダー

6
容易に分離する方法サブジェクト名の他のRDN / ATVでのCNを:openssl x509 -noout -subject -nameopt multiline | grep commonNameまたは値のみ| sed -n 's/ *commonName *= //p'
dave_thompson_085

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

<引数としてファイルを使用せずに、ファイルを標準入力にリダイレクトしていることに注意してください。サンズ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

certtoolgnutlsの一部です。インストールされていない場合は、検索してください。GnuTLSは、OpenSSL、IMOよりも少し優れています。


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

疑いもなく、goldilocksが正しかったのです。この場合よりも、certtool出力の方がはるかに簡単に作業できopensslます。


1
まったく異なるソフトウェアについて話しているのではないでしょうか。私はcerttool、通常の演算子(-または--)なしでオプションをとったバージョンを見たことがありませんman certtool。v。3.5.8(debian)、3.5.16(fedora、その後のアップストリーム安定ブランチの唯一のバージョンは3.5.17からです) 1か月前)、GnuTLSのオンラインドキュメント、そして実際、Ubuntu 17.10(現在のdebianと同じバージョン)のオンラインマニュアルページはすべて、以下を参照しています
。– goldilocks

「-i、-certificate-info:指定された証明書に関する情報を出力します」「-d」「--debug」です。 非常に奇妙な。O_o?
goldilocks

-1

使用しました: ホワイトスペースで生活できない場合はopenssl x509 -noout -subject -in mycert.crt | awk -F= '{print $NF}'追加し| sed -e 's/^[ \t]*//'ます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.