OpenBSDおよびRHELのssh-keygenおよび-Zオプション

OpenBSDおよびRHELのssh-keygenおよび-Zオプション

フォローするSSH証明書のかなり良いテキスト現在、OpenBSDシステムで例をエミュレートしようとしてRHEL 6 openssh-5.3p1-94.el6(約10年前)用に書かれています。

一例ShowはホストCAキーを生成し、ホストのRSAキーに署名します。

ssh-keygen -s ~/.ssh/ca_host_key -I host_name -h -Z host_name.example.com -V -1w:+54w5d /etc/ssh/ssh_host_rsa.pub
Enter passphrase:
Signed host key /root/.ssh/ssh_host_rsa-cert.pub: id "host_name" serial 0 for host_name.example.com valid from 2015-05-15T13:52:29 to 2016-06-08T13:52:29

OpenBSDでこれを試しても出力は出ませんfor host_name.example.com。テキストは言う

この-Zオプションは、この証明書をドメイン内の特定のホストに制限します。

...これについて少し混乱しています。OpenBSD マニュアルssh-keygen(1)-Zオプションはまったく言及されていません。私もssh-keygen文句を言わず、この文書化されていないオプションを受け入れることについて混乱しています。

見ているソースコードssh-keygen-Zオプションはい許可されますが、ホスト名よりも「パスワード形式」(または「パスワード形式」)に関連しているようです(正しいコードを見ていると仮定)。

case 'Z':
    openssh_format_cipher = optarg;
    break;

以前のバージョンのコードを見るといつも「パスワード形式」に関連しています。

OpenSSHリリースノート言及する必要はありません-Z

Q:ssh-keygenRHEL 6のRedHat専用パッチでパッチを適用しましたか(該当するバージョンが関連しているかどうかはわかりませんが、RHEL 7またはRHEL 8用のSSH証明書に関する同等の文書がないようです)-Z。違いますか?

答え1

長すぎる博士。最新バージョンのOpenSSHでは、サブジェクト(ホスト名やユーザーなど)を設定する-n代わりにこのオプションを使用する必要があります。-Z

ソースコードを見ると、ssh-keygenその-Zオプションは許可されますが、「パスワード形式」に関連しているようです。

はい、エラーが発生しない理由は、openssh_format_cipher証明書を生成するときに変数が使用されず、パスワードでキーを生成するときにのみ使用されるためです。

キー生成を有効にしてssh-keygen -f ./path -Z some_garbageパスワードを設定すると、エラーメッセージが表示されます。

動作を異ならせるRHEL 6のssh-keygenRedHat関連パッチでパッチされていますか?-Z

はい、昔もそうでした。openssh-5.3p1-ssh-certificates.patchで見ることができますここ:

+               case 'Z':
+                       cert_principals = optarg;
+                       break;
                case 'p':

このパッチは、最新のrpmでは使用されなくなりました。

答え2

@mosvyの答えはコメントより少し長いので拡張されます。

RHEL6は2009年からOpenSSH 5.3p1と一緒にリリースされており(元は以前のバージョンのようですが、今は持っていません)、長年にわたってSSH用の機能を含むアップストリームで新機能が実装またはバックポートされました。証明書

しかし、それははるかに後でした。 NSSによるスマートカードの長年の初期サポート(2007年以降の変更ログ)以降、NSSがどのように機能するかを説明します-nssh-keygenこの2008年のブログ投稿で(このパッチがアップストリームで提案されたのか、なぜ拒否されたのかはわかりませんが、標準のPKCS#11インターフェイスを介してスマートカードが直接使用されます。) keys.patchを参照してください。

OpenSSH 5.4p1がリリースされ、証明書をサポートしてからしばらくして、この特定の機能をバックポートすることにしました(2013年にさかのぼる変更ログで)、既存のスイッチ(今はすべてのアルファベットssh-keygen文字を使用するスイッチ)と競合します。よく覚えておいてください)、この機能をバックポートする唯一の方法は、オプションを別のスイッチに移動し(既存のシナリオはマイナーな更新で中断できない)文書化することでした。

それがすべてです。

関連情報