wolfSSHのX.509証明書サポート

wolfSSHはピアの認証にX.509証明書を利用できるようにしました。クライアントとサーバーの両方で利用できます。RFC6187に従い、x509v3-ecdsa-sha2-* および x509v3-ssh-rsa を鍵交換アルゴリズムに追加します。 公開鍵の代わりに、証明書全体が認証中にピアに渡され、CA証明書または承認された鍵ファイルを使用して検証されます。CA証明書を使用してクライアント証明書を検証する選択肢が追加されたため、有効な署名付き証明書を持つクライアントならばだれでも、承認された鍵ファイルを更新することなく接続できるようになりました。 この検証は、証明書チェーンの検証も含んでいます。

wolfSSHでX.509サポートを有効にするには”–enable-certs”をコンフィギュレーションオプションとして指定してビルドします。一つ注意すべきはwolfSSHはFPKI(連邦政府公開鍵インフラ)もサポートしているという点です。wolfSSHとリンクするwolfSSLが”–enable-all”を指定してビルドされているケースではFPKI証明書のチェックを行わないようにWOLFSSH_NO_FPKIマクロを指定してwolfSSHをビルド(–enable-certs CPPFLAGS=”-DWOLFSSH_NO_FPKI”)する必要があります。サンプルプログラムのechoserverにはX.509サポートが含まれていますが、SSHハンドシェイクの何箇所かでX.509検証を利用したい場合は、サーバー側では”–enable-sshd“を指定してビルドしたwolfSSHdアプリケーションを使用します。あるいはアプリケーション内でwolfSSHライブラリAPIを使用してX.509検証を有効にする必要があります。

wolfSSHでX.509証明書の使用例をご紹介します:

wolfSSHライブラリのコンフィグレーション:

./configure --enable-sshd --enable-certs CPPFLAGS="-DWOLFSSH_NO_FPKI" && make

sshdコンフィグレーションファイルの作成:

cat sshd_config
Port 22222
Protocol 2
LoginGraceTime 600

TrustedUserCAKeys /path/to/wolfssh/keys/ca-cert-ecc.pem
HostKey /path/to/wolfssh/keys/server-key.pem 
HostCertificate /path/to/wolfssh/keys/server-cert.pem

wolfSSHd アプリケーションの実行:

./apps/wolfsshd/wolfsshd -D -f ./sshd_config

wolfSSHクライアントを使ってwolfSSHdに接続:

./examples/client/client -u fred -i ./keys/fred-key.der -J ./keys/fred-cert.der -A ./keys/ca-cert-ecc.der

wolfSSHdアプリケーションは”fred”がシステムの有効なユーザーか検証し、クライアントはホストのIPアドレスをチェックすることに注意してください。サンプルプログラムでのIPアドレスは127.0.0.1に設定されています。

server-cert.pem:

X509v3 Subject Alternative Name: 
                DNS:example, IP Address:127.0.0.1

このサンプルプログラムで使用しているユーザー証明書 fred-cert.der はユーザー名 “fred”をUPN(User Pricipal Name)拡張で指定しています。これは<user>@<domain> のフォーマットを持つ「サブジェクトの別名」の別タイプの一つです。ユーザー名を証明書のこの拡張で指定することで、証明書とユーザー”fred”を関連付け、さらにその証明書を他のユーザ名で使えないようになります。

wolfSSHでX.509証明書の使用に関してのご質問がありましたら、info@wolfssl.jpまでお寄せください。

原文:https://www.wolfssl.com/wolfssh-with-x509-support/