SSH証明書が指定されたSSH CA秘密鍵で署名されていることを確認する方法は?

SSH証明書が指定されたSSH CA秘密鍵で署名されていることを確認する方法は?

以下を使用してSSH設定を強化しようとしています。この資料。うまくいきますが、答えを見つけるのに苦労している質問があります。

SSH CAのSSHホスト/ユーザー証明書署名を確認する方法があるかどうかを知っている人はいますか?そのホストの証明書を保持しているホストにSSHを介して接続しようとする可能性があります。ただし、自動化タスクを作成しており、証明書ファイルが正しく機能していることを確認するプログラムが必要です。 CA署名で生成されます。ssh-keygenコマンドであれ何でも教えてください。

修正する:

@PKappが提案したように:

2つの出力、つまりサーバー側の証明書署名CAの指紋とCA自体の指紋を比較できます。

sudo ssh-keygen -L -f /etc/ssh/ssh_host_ed25519_key-cert.pub | fgrep "Signing CA" | sed 's/^[ \t]*//' | cut -d ' ' -f 4
SHA256:LkdPQLdx4tuZp7pG0g6nAJqilFd6ZzjGdgVEV9elrdA

sudo ssh-keygen -l -f /etc/ssh/id_ed25519-HostCA.pub | cut -d ' ' -f 2
SHA256:LkdPQLdx4tuZp7pG0g6nAJqilFd6ZzjGdgVEV9elrdA

フィルタリングされた出力が同じ場合、証明書は一致します。

答え1

SSH ホスト証明書をリモートで取得するには、次のものを使用できますssh-keyscan -c <hostname>(この-cオプションがない場合は、ホスト鍵のみ取得できます).特定の証明書タイプを制限するには、を含めるか、必要に応じて-t type使用しないことがありますssh-rsa[email protected]

その後、.zipファイルを使用して署名CAの公開鍵を含む証明書の詳細を抽出できますssh-keygen -L -f <certfile>。 (小文字)を使用すると、-lすべてのssh-keygen証明書要素ではなく、証明書に含まれる基本(公開)ホストキーに関する情報のみが出力されます。

答え2

内部SSHの署名を設定していません。しかし、imapに対してこれを実行しながら、簡単な確認方法を学びました。

バラよりhttps://www.feistyduck.com/library/openssl-cookbook/online/ch-testing-with-openssl.htmlもっと学ぶ。

デフォルトでは、"openssl s_client ..."を使用すると便利なデータがたくさん得られます。

たとえば、私の署名されていない(CA unsigned)ssh(注 - クライアントCA名は送信されません。私のimapsテストの「自己署名」レポートと比較してください)

openssl s_client -connect x072:22
CONNECTED(00000003)
804401144:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:825:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1526335517
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

ただし、imapsサービスに接続すると(深さ:0自己署名)、証明書チェーンが表示されます。

root@x071:[/root]openssl s_client -connect x063:993
CONNECTED(00000003)
depth=0 C = NL, ST = N. Holland, L = Amsterdam, O = ROOTVG, OU = aixtools
verify error:num=18:self signed certificate
verify return:1
depth=0 C = NL, ST = N. Holland, L = Amsterdam, O = ROOTVG, OU = aixtools
verify error:num=26:unsupported certificate purpose
verify return:1
depth=0 C = NL, ST = N. Holland, L = Amsterdam, O = ROOTVG, OU = aixtools
verify return:1
---
Certificate chain
 0 s:/C=NL/ST=N. Holland/L=Amsterdam/O=ROOTVG/OU=aixtools
   i:/C=NL/ST=N. Holland/L=Amsterdam/O=ROOTVG/OU=aixtools
---
Server certificate
-----BEGIN CERTIFICATE-----
snip...

これはssh-keygenを使用することとは異なるため、直接調査する必要があります。しかし、私は違いのためopenssl s_clientを使い続けるべきだと思います。

関連情報