OpenSSH 도구만으로는이를 수행 할 방법이 없을 수 있습니다.
그러나 OpenSSL 도구를 사용하면 매우 쉽게 수행 할 수 있습니다. 실제로 두 가지 방법이 있습니다. 아래 예에서는 ~/.ssh/id_rsa
개인 키입니다.
한 가지 방법은 dgst를 사용하는 것입니다 .
openssl dgst -sign ~/.ssh/id_rsa some-file
다른 하나는 pkeyutl을 사용 하고 있습니다 .
openssl pkeyutl -sign -inkey ~/.ssh/id_rsa -in some-file
이 두 가지 모두 이진 서명을 표준 출력에 씁니다. dgst-hex
옵션은 서명 형식에 대한 세부 정보와 함께 텍스트 표현을 인쇄 하는 옵션을 사용합니다. pkeyutl 은 -hexdump
조금 덜 유용한 옵션을 사용합니다. 둘 다 RSA 및 DSA 키를 모두 허용합니다. 출력 형식이 무엇인지 전혀 모른다. 두 명령은 다른 형식을 생성합니다. 나는 pkeyutl 이 dgst 보다 더 현대적이라고 생각된다 .
해당 서명을 확인하려면
openssl dgst -verify $PUBLIC_KEY_FILE -signature signature-file some-file
과:
openssl pkeyutl -verify -inkey $PUBLIC_KEY_FILE -sigfile signature-file -in some-file
여기서 문제는 $PUBLIC_KEY_FILE
입니다. OpenSSL은 OpenSSH의 공개 키 형식을 읽을 수 없으므로을 사용할 수 없습니다 id_rsa.pub
. 몇 가지 옵션이 있지만 이상적인 것은 아닙니다.
OpenSSH 버전이 5.6 이상인 경우 다음을 수행 할 수 있습니다.
ssh-keygen -e -f ~/.ssh/id_rsa.pub -m pem
공개 키를 PEM 형식의 표준 출력에 쓰고 OpenSSL에서 읽을 수 있습니다.
개인 키가 있고 RSA 키인 경우 공개 키를 추출 할 수 있습니다 (공개 키를 파생시킬 수 없기 때문에 PEM으로 인코딩 된 개인 키 파일에 공개 키 사본이 포함되어 있다고 가정합니다) 개인 키 자체에서)를 사용하고 다음을 사용하십시오.
openssl rsa -in ~/.ssh/id_rsa -pubout
DSA에 해당하는 것이 있는지 모르겠습니다. 이 방법을 사용하려면 개인 키 소유자의 협조가 필요합니다. 개인 키는 공개 키를 추출하여 원하는 검증 자에게 보내야합니다.
마지막으로 Lars라는 챕터 가 작성한 Python 프로그램을 사용 하여 공개 키를 OpenSSH에서 OpenSSL 형식으로 변환 할 수 있습니다 .