wgetでクライアント証明書を使ってアクセスする方法

クライアント証明書で認証しているサイトに対して、wgetでアクセスする方法を紹介します。

クライアント認証を要求するサイトにアクセスしたい場合、通常であればクライアント証明書をWebブラウザに登録して利用します。

これをwgetで利用する場合、秘密鍵・CA証明書・クライアント証明書の3つを別々のファイルとして取り出す必要があります。

利用するクライアント証明書はPKCS12フォーマットのclient-cert.p12であるとしましょう。この場合に秘密鍵と証明書を取り出す方法は次の通りです。

$ openssl pkcs12 -in client-cert.p12 -clcerts -nokeys -out client-cert.crt.pem
Enter Import Password:
MAC verified OK
$ openssl pkcs12 -in client-cert.p12 -cacerts -nokeys -out ca-cert.crt.pem
Enter Import Password:
MAC verified OK
$ openssl pkcs12 -in client-cert.p12 -nocerts -nodes -out client-cert.key.pem
Enter Import Password:
MAC verified OK
$

これらのファイルをwgetコマンドラインオプションで指定することで、クライアント認証を使ったアクセスができます。

wget --certificate=client-cert.crt.pem --private-key=client-cert.key.pem --ca-certificate=ca-cert.crt.pem https://example.com/secret/

注意点など

この作業を行うと、秘密鍵を暗号化されていない状態で取り出すことになります。くれぐれも共用サーバなどで作業しないこと、また作業後はすみやかに取り出したファイルを削除することが必要です。