SSH 인증서가 지정된 SSH CA 개인 키로 서명되었는지 확인하는 방법은 무엇입니까?

SSH 인증서가 지정된 SSH CA 개인 키로 서명되었는지 확인하는 방법은 무엇입니까?

다음을 사용하여 SSH 설정을 강화하려고합니다.이 자료. 잘 작동하지만 답변을 찾는 데 어려움을 겪고 있는 질문이 있습니다.

SSH CA에 대해 SSH 호스트/사용자 인증서 서명을 확인하는 방법이 있는지 아는 사람이 있습니까? 해당 호스트에 대한 인증서를 보유하고 있는 호스트에 SSH를 통해 연결하려고 시도할 수 있다는 것을 알고 있으며, 연결되면 서명은 분명히 문제가 없습니다. 하지만 자동화 작업을 작성 중이고 인증서 파일이 제대로 작동하는지 확인하는 프로그래밍 방식이 필요합니다. CA 서명으로 생성됩니다. ssh-keygen명령이든 뭐든 말해보세요 .

고쳐 쓰다:

@PKapp이 제안한 대로:

두 가지 출력, 즉 서버측 인증서 서명 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를 계속 사용해야 한다고 생각합니다.

관련 정보