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