ssh-keygen のデフォルトの証明書署名アルゴリズムを変更する

ssh-keygen のデフォルトの証明書署名アルゴリズムを変更する

現在、OpenSSH 7.8 (Fedora 28/Arch) は、証明書署名キーを使用して OpenSSH 7.4 (CentOS 7) サーバーとネゴシエートすることができません。RedHatのBugzillaに報告されたバグOpenSSH リリースノート署名ネゴシエーションアルゴリズムの変更を示すには、明示的に定義する必要があります。2つの新しい署名アルゴリズムが許可されていますが(7.7以降)、バグまたは意図により、[メールアドレス]ユーザー証明書は認証に使用できなくなります。

再現する手順:

  1. ssh-keygen -t rsa -b 2048 -f テスト
  2. ssh-keygen -s cert.key -I "signedcert" -n testuser test.pub
  3. ssh -i テスト -vvv ユーザ@サーバIP

私は、証明書の署名プロセスで使用されるアルゴリズムを変更することで、この問題を回避しようとしています。

ssh-keygen -L -f test.crt
test.crt:
    Type: [email protected] user certificate
    Public key: RSA-CERT SHA256:<fingerprint>
    Signing CA: RSA SHA256:<fingerprint>

ssh-keygenのデフォルトは、キーに署名することです。[メールアドレス]

OpenSSH 7.8 ドキュメントによると、PROTOCOL.certkeys。

All certificate types include certification information along with the
public key that is used to sign challenges. In OpenSSH, ssh-keygen
performs the CA signing operation.

Certified keys are represented using new key types:

    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]

Two additional types exist for RSA certificates to force use of
SHA-2 signatures (SHA-256 and SHA-512 respectively):

    [email protected]
    [email protected]

使用可能なキー タイプが 7 つあることがわかります。ssh-keygen 証明書署名プロセスで 1 つを指定するにはどうすればよいでしょうか。

ご注意ください:

  • クライアントまたはサーバーでの次の構成変更が機能しません。

    公開鍵承認キータイプ rsa-sha2-256、rsa-sha2-512、[メールアドレス][メールアドレス][メールアドレス]

  • ed25519 形式でキーに署名することは、CentOS 6 などの openssh 5.3 を搭載したサーバーとの下位互換性がないため、解決策とはみなされません。

ここでは 2 つの解決策が考えられます。

  1. 適切な回避策を見つけて[メールアドレス] ユーザー証明書を再度取得します。
  2. ssh-keygen で証明書署名アルゴリズムを変更する方法を見つけます。

更新: ( 1日後 )

#openssh のユーザーによると、証明書の署名アルゴリズムは、秘密鍵の署名に使用されるキーによって設定されます。つまり、RSA アルゴリズムを RSA:SHA1 から RSA:SHA2 に変更する方法がわかれば、証明書の署名アルゴリズムを sha2-256 に強制できる可能性があります。これは、追加の回避策を講じることで、両側で可能です。

更新: ( 12日後 )

提出されたバグレポートを見ると、ほとんど進展がないように見えます。私は RHEL の従業員と非公式に会話することができました。その従業員は私のバグを見て、適切な人がそれを見ていると述べました。これは RHEL にも影響しているので、RHEL/CentOS 7.6 で修正される可能性があります。

答え1

リンクされた記事次のアプローチを文書化します。

ssh-keygen -s cert.key -I "signedcert" -n testuser  -t rsa-sha2-256 test.pub

鍵となるのは-t rsa-sha2-256パラメータです。

関連情報