web-dev-qa-db-ja.com

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

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

70
Naftuli Kay

opensslがインストールされている場合は、次のコマンドを実行できます。

openssl x509 -noout -subject -in server.pem
101
Jeff Smith
certtool -i < whatever.pem | egrep "^\s+Subject:"

引数として使用するのではなく、<を介してファイルを標準入力に送信していることに注意してください。 Sans egrepこれは証明書全体を出力しますが、CNは上部のSubject:フィールドにあります(Issuer:フィールドにもCN値があることに注意してください)。

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よりも少し優れています。

7
goldilocks

上記の答えを見つけ、それが非常に便利であることがわかりましたが、certtoolコマンド構文(Ubuntu Linuxでは今日)出力と同様に、goldilocksによって記述されたものとは著しく異なっていました。だから、私はそのすばらしい答えを「今日のバージョン」かもしれないもので更新するのが最善だと思いました。

_"i"_オプション(now?)は_man certtool_に従って「インポート」を表すため、適切なコマンドは_"d"_、「表示」。したがって、このコマンド:

_certtool d myfoo.crt
_

(私の場合、ファイル拡張子はたまたま_.crt_ではなく_.pem_ ...これは関係ありません。)

...出力は、関連する部分で次のようになります。

_Common Name     : Foobar
_

疑いもなく、goldilocksは正しかった:certtool出力は、この場合opensslよりもmuchの方が扱いが簡単です。

2
Mike Robinson