回答:
あなたがいる場合はopenssl
インストールされ、あなたは実行することができます。
openssl x509 -noout -subject -in server.pem
openssl x509 -noout -subject -in server.pem | sed -n '/^subject/s/^.*CN=//p'
sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-]*\).*$/\1/'
CNの後に追加の詳細があったので、@ MatthewBuckettが言ったことを修正し、ドメインのみを取得するために使用しました。有効なCNに対する非常に厳密なマッチングではありませんが、ほとんどの場合は機能します。よりスラックで置き換え[a-zA-Z0-9\.\-]
てもかまい[^/]
ませんが、常に機能するかどうかはわかりません。
\*
のワイルドカードドメインをサポートするために使用さ@flungoものに:sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-\*]*\).*$/\1/'
([^/]
ただし、私の場合には動作します)
sed
証明書に共通名(CN)の後に指定された相対識別名(RDN)、たとえばOU(OrganizationalUnit)またはC(国)がある場合、上記のコマンドは機能しません。そのような場合に応える1つの方法は追加sed
です:openssl x509 -noout -subject -in server.pem | sed 's/^.*CN=//' | sed sed 's/\/.*$//'
。
openssl x509 -noout -subject -nameopt multiline | grep commonName
または値のみ| sed -n 's/ *commonName *= //p'
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
certtool
gnutlsの一部です。インストールされていない場合は、検索してください。GnuTLSは、OpenSSL、IMOよりも少し優れています。
gnutls-certtool
でインストールされたものを使用する必要がありましたbrew install gnutls
gnutls-bin
上記の答えを見つけて、それが非常に有用であることがわかりましたが、certtool
コマンド構文(今日のUbuntu Linuxで)は、出力と同様にgoldilocksで記述されたものとは著しく異なることもわかりました。ですから、その優れた答えを「今日のバージョン」に更新するのが最善だと思いました。
"i"
オプション(今は?)によると、「輸入」の略でman certtool
、適切なコマンドがあるように思われるので、"d"
「ディスプレイ。」したがって、このコマンド:
certtool d myfoo.crt
(私の場合のファイル拡張子は、たまたまそうではあり.crt
ません.pem
...これは関係ありません。)
...関連する部分で、次のような出力が生成されます。
Common Name : Foobar
疑いもなく、goldilocksが正しかったのです。この場合よりも、certtool
出力の方がはるかに簡単に作業できopenssl
ます。
certtool
、通常の演算子(-
または--
)なしでオプションをとったバージョンを見たことがありませんman certtool
。v。3.5.8(debian)、3.5.16(fedora、その後のアップストリーム安定ブランチの唯一のバージョンは3.5.17からです) 1か月前)、GnuTLSのオンラインドキュメント、そして実際、Ubuntu 17.10(現在のdebianと同じバージョン)のオンラインマニュアルページはすべて、以下を参照しています