(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

opensslコマンドで「unable to load certificate」とエラーが出る

スポンサーリンク
事象

Linux環境でopensslコマンドを使い、証明書(cert.crt)のsubjectを表示しようとすると「unable to load certificate」で始まるエラーが出る

# openssl x509 -in cert.crt -noout -subject
unable to load certificate
....
解決策

引数-informにてDERと指定する。

# openssl x509 -in cert.crt -inform der -noout -subject
subject= /C=JP/ST=Tokyo....

以下、ポイントです。

ポイント

証明書関連のファイル拡張子はCertificateの略としてcrtとして配布されることがあります。

私のWindows環境でファイルエクスプローラーで確認すると、「セキュリティ証明書」として見え、ダブルクリックすると「暗号化シェル拡張」というプログラムによって内容が確認できます。

こちらをUNIX系のCUIで確認しようとするためにはopensslコマンドを用います。

ただし、opensslコマンドは特に指定しなければPEM形式としてファイルを認識することに注意しなければいけません。

PEMとDER

DERもPEMも、どちらも証明書を表現するフォーマットなのですが
DERはバイナリ、PEMはテキストです。

なのでCRTがどちらなのかをまず確認する必要があります。

crtファイルのタイプを確認

ファイルのタイプを確認する「file」コマンドを用いてみます。dataとなっていればバイナリーと思われます。

# file cert.crt
cert.crt: data

逆にpem形式であればPEM certificateと出力されます。

inform DER をつける

crtファイルがバイナリーと思われるので、冒頭のように「-inform DER」 をつけてあげれば実施したい処理を行います。

ちなみにこちらをPEMに変換したければ以下で可能なので合わせて記載しておきます。

# openssl x509 -in cert.crt -inform DER -out test.pem -outform pem


以上、備忘録でした。