インフラエンジニアbacchiのわかったことまとめ

bacchi.me

コマンドラインからクライアント認証のページにつなぐ

LinuxのコマンドラインからWindows用のクライアント証明書を使って、クライアント認証のページにつなぐことがあったのでメモ。

Windwos用のクライアント証明書(p12形式)のファイル名はclient.p12 とします。

Windows用のクライアント証明書をごにょごにょする

p12形式のクライアント証明書をLinuxにやさしい形にかえてあげます。

p12ファイルから秘密鍵を取り出す

まずは秘密鍵を取り出しましょう。

1つ目のコマンドで、p12形式のクライアント証明書から秘密鍵を取り出し、

2つ目のコマンドで、取り出した秘密鍵からパスワードをとばします。

# openssl pkcs12 -in client.p12 -nocerts -nodes -out client.key
# openssl rsa -in client.key -out keynp.pem

保存したkeynp.pemファイルが使えない場合、行頭に-----BEGIN RSA PRIVATE KEY-----が、行末に-----END RSA PRIVATE KEY-----が含まれているかを確認し、なければ追記する必要があります。

p12ファイルからサーバー証明書を取り出す

次にサーバー証明書を取り出しましょう。

# openssl pkcs12 -in client.p12 -clcerts -nokeys -out cert.pem

保存したcert.pemファイルが使えない場合、行頭に-----BEGIN CERTIFICATE-----が、行末に-----END CERTIFICATE-----が含まれているかを確認し、なければ追記する必要があります。

中間証明書を取り出す

検証した環境がオレオレ認証局のクライアント証明書なので試していないですが、以下のコマンドで中間証明書を取り出すことができます。

中間証明書が含まれていない場合には、空で出力されます。

# openssl pkcs12 -in client.p12 -cacerts -nokeys -out middle.pem

保存したmiddle.pemファイルが使えない場合、行頭に-----BEGIN CERTIFICATE-----が、行末に-----END CERTIFICATE-----が含まれているかを確認し、なければ追記する必要があります。

opensslを使って接続

以下のコマンドでクライアント証明書を使っての接続ができます。

openssl s_client -connect host:port -cert cert.pem -key keynp.pem
  • B!