Verificação de assinatura usando o OpenSSL

2

Eu tenho experimentado com OpenSSL e OpenSSH e não consegui assinar e verificar usando pares de chaves RSA.

Eu fiz o seguinte

Pares de chaves gerados:

$ ssh-genkey -b 2048 -t rsa <key-name>

Eu então criei uma mensagem resumida por:

$ openssl sha1 -sign <key-name> -out rsasign.bin ~/tmp/test.txt

Eu tentei verificar a assinatura usando a chave pública correspondente:

$ openssl sha1 -verify <key-name>.pub -signature rsasign.bin ~/tmp/test.txt

Infelizmente, tentar isso retorna o erro:

unable to load key file

Alguém pode ver algum problema com o que estou fazendo?

Obrigado!

    
por Daeden 30.07.2013 / 22:32

1 resposta

2

Primeiramente, estou assumindo que você quer dizer ssh-keygen , não ssh-genkey (também, minha versão requer que o caminho seja especificado interativamente, não por meio da linha de comando, mas a saída é a mesma). :)

O problema é que o OpenSSL usa um formato diferente para chaves públicas que o SSH. Você ainda pode usar chaves geradas por SSH, mas precisa obter a chave pública em um formato que o OpenSSL possa entender. Você pode fazer isso com o seguinte comando:

openssl rsa -in <key-name> -pubout -out public-key.pem

Onde public-key.pem é o novo arquivo que você criará. Depois que fiz isso, o comando de verificação que você mencionou foi executado com êxito, emitindo apenas Verified OK para o arquivo de teste.

Note que o comando acima requer a chave private , não a chave pública; você pode converter uma chave pública de estilo SSH em uma chave pública no estilo OpenSSL executando:

ssh-keygen -f <key-name>.pub -e -m public-key.pem

Em que public-key.pem é mais uma vez o novo arquivo que você criará.

    
por 14.10.2013 / 03:52