記事 SSHを使用したスケーラブルで安全なアクセス で説明されているように、CA署名付きの公開sshキーを使用してアクセス制御を実装したいと考えています。
セキュリティチームがCA側でこれを管理する方法を考えています。私ができることの1つは、キーに署名した後、そのキーを「クエリ」して、そのキーに関する情報を取得することです。特に、特定のキーについて、知りたいのですが。
-I
ssh-keygenへのフラグ)-n
ssh-keygenフラグ)-V
)-z
)-O
)明らかに、sshdは、キーが提示されたときにこれらの属性をすべてデコードする必要があります。その情報を抽出するプログラム的な方法はありますか?セキュリティチームの管理側での健全性チェック、監査、報告について考えています。
編集:この投稿で誤った用語を使用していることに気付きました。 ssh-keygenのマンページから(私の強調):
ssh-keygenは、ユーザーまたはホスト認証に使用できるcertificatesを生成するための鍵の署名をサポートしています。 証明書は、公開鍵、いくつかの識別情報、0個以上のプリンシパル(ユーザーまたはホスト)で構成されています名前とオプションのセット...
アブラハムが以下に言及するように、キーは実際には単なるキーです。キーがCAによって署名されると、キーは単なるキーではなく、証明書になります。
最後に、RTFM Failの驚くべき表示では、ssh-keygen -L -f certificate
は私が必要としていることを正確に行います。
Gravitationalの私のコホートは、SSH証明書を解析してオンラインで実行する純粋なgolangツールを作成しました: https://ssh-certificate-parser.gravitational.com/ 署名されたSSH証明書の解析について質問がある場合ツールが証明書内で利用可能なすべてのデータを出力すると信じています。
ssh-keygen -L -f <cert-file>
実際の証明書ファイルがディスク上にある場合、一時的なSSH証明書のみがssh-agentに読み込まれていて、ディスク上の証明書ファイル:
ssh-add -l | ssh-keygen -L
ところで、「キー」と「証明書」という用語の混同は、おそらくOpenSSH証明書が新しいOpenSSHキータイプとして定義されているためです([email protected]など)。
仕様も参照してください: PROTOCOL.certkeys