認証にx509PKIを使用するようにOpenSSHを設定するにはどうすればよいですか?



How Set Up Openssh Use X509 Pki



解決:

OpenSSHは、x.509証明書ベースの認証を公式にサポートしていません。

開発者は、X.509証明書の複雑さが、sshdに許容できない攻撃対象領域をもたらすというスタンスを維持しています。代わりに、彼らは[最近]解析がはるかに簡単でリスクが少ない代替の証明書形式を実装しました。



..。

OpenSSHは、OpenSSLの低レベルの暗号化アルゴリズムを使用するだけです。



ただし、Roumen Petrovは、X.509サポートを含むOpenSSHビルドを公開しており、それらを試すことができます。

X.509証明書は、SSHの「公開鍵」および「ホストベース」認証で「ユーザーID」および/または「ホスト鍵」として使用できます。

Roumen Petrovのビルドは、このページからダウンロードできます。



これは、パスワードの代わりに認証キーを使用するSSHのDebianハウツーです。これは、ユーザー認証用にx509PKIを受け入れるようにOpenSSHを設定する場合にも役立つ可能性があります。


ネイティブ証明書ベースの認証は、変更されていないアップストリームOpenSSHで使用できます。ただし、x.509に基づくものではありません。

まず、CAを生成します。

ssh-keygen -f ssh-ca

次に、CAキーをにインストールします.authorized_keysとcert-authorityプレフィックス:

echo'cert-authority $(>。ssh / authorized_keys

その時点から、ユーザーがキーを生成するたびに、次のようになります。

ssh-keygen -freal-key

...パブリック部分はSSHCAによって署名できます。その後、そのキー自体が追加されることなく、サーバーによって信頼されます。authorized_keys:

ssh-keygen -s ssh-ca -I識別子_for_your_real_key_goes_herereal-key.pub 

OpenSSHではそれは不可能です。 @TildalWaveが言ったように、Roumen PetrovPKIXSSHのフォークを使用する必要があります。

X509証明書を取得したら 公開鍵を追加する必要はありませんauthorized_keysファイル。

で2つのことを構成する必要があります サーバ側

  • CAの証明書を追加します によって設定されたディレクトリ内のCACertificatePathディレクティブsshd_configファイル(通常は/ etc / ssh / ca /​​ crt、私は思う)証明書のハッシュへのリンク。

    リンクを作成するには、opensslを使用します。 CA証明書が下にコピーされたと仮定します/ect/ssh/ca/crt/ca.crtコマンドは次のようになります。

cd / etc / ssh / ca /​​ crt / ln -s ca.crt `openssl x509 -in ca.crt -noout -hash`.0
  • 追加します x509証明書の「サブジェクト」情報をauthorized_keysファイル ユーザーの (宛先サーバー内)

    秘密鍵とユーザーのX509証明書がssh / id_rsaを使用して、サブジェクトをクライアントで実行します。

openssl x509 -noout -subject -in .ssh / id_rsa

そしてそれらをサーバー上で、プレフィックスを付けてこの行を追加しますx509v3-sign-rsa subject =からauthorized_keys。

この行には、次のような内容が含まれます。

x509v3-sign-rsa subject = / C = ES / ST = Pontevedra / L = Vigo / CN = testssh / [メール保護]

ご覧のとおり、認証は実際に行われます ユーザーからの有効なx509証明書についてCAを信頼する 。新しい証明書を生成することができ、サーバー側の介入なしで受け入れられます。


数日間苦労した後、私はちょうど展開したブログに完全なプロセスを説明する投稿を書きました。 「OpenSSHwithX509certificatesHOWTO」で読むことができます。