Você está na página 1de 4

howto openssl

http://www.dei.isep.ipp.pt/~nsilva/ensino/asi1/asi1 2005-2006/howto ...

How-to openSSL
Este documento derivado do documento http://www.madboa.com/geek/openssl/. Para informao terica sobre cifragem, autenticao, integridade e confidencialidade bem como sobre algoritmos de cifragem/decifragem, ver http://www.dei.isep.ipp.pt/~andre/documentos/criptografia.html e http://www.dei.isep.ipp.pt/~andre/documentos/assinatura-digital.html. Chaves RSA; Digest (ou Hash Codes); Certificados; Cifrar/Decifrar com algoritmos e passwords; Cifrar/Decifrar com chave RSA; Cifrar/Decifrar com certificados e chave RSA; Assinaturas digitais; Exerccio RSA+SSH.

Chaves RSA
Existem dois sub-comandos distintos para manipular chaves RSA: genrsa, serve para gerar chaves RSA; rsa, serve para realizar todas as restantes operaes sobre as chaves RSA.

Gerao
Na sua forma mais simples, para gera uma chave RSA pode-se usar o comando da seguinte forma: # default 512-bit key, sent to standard output openssl genrsa No entanto, muitas vezes conveniente usar a seguinte forma: openssl genrsa -out rsa_key_file [num_bits] Nesta forma, uma chave rsa gerada e guardada no ficheiro rsa_key_file. O parmetro num_bits opcional e define o tamanho da chave. Por omisso, a chave tem 512 bits de comprimento. # chave de 1024-bits, guardada em rsa_key_file openssl genrsa -out rsa_key_file 1024 tambm possvel encriptar a chave com uma palavra/frase secreta, de forma a que a chave rsa no possa ser usada sem o conhecimento dessa palavra/frase. # encriptada com uma palavra ou frase secreta openssl genrsa -des3 -out rsa_key_file 1024

Restantes operaes
Outras operaes sobre chaves RSA incluem: Desencriptao e encriptao da chave RSA; Gerao de chave pblica; Encriptao/desencriptao da chave pblica. Visualizao de parmetros de gerao da chave RSA. Desencriptao e encriptao da chave Para desencriptar a chave RSA basta usar o comando rsa sobre a chave RSA: openssl rsa -in rsa_key_file -out rsa_key_desenc_file Para encriptar a chave RSA, para alm de usar o prprio comando genrsa, pode-se usar o parmetro de encriptao (ex. des, des3): openssl rsa -des3 -in rsa_key_file -out rsa_key_enc_file

1 de 4

24/11/2010 18:29

howto openssl

http://www.dei.isep.ipp.pt/~nsilva/ensino/asi1/asi1 2005-2006/howto ...

Gerao de chave pblica A partir da chave RSA gerada anteriormente, pode-se (e tem de se) gerar uma chave pblica. Para isso tem de se usar o parmatro -pubout: openssl rsa -in rsa_key_file -pubout Visualizao de parmetros de gerao openssl rsa -in rsa_key_file [-text|modulus|...]

Digests (ou Hash Codes)


Criao de digests/hash. Assinatura de digests/hash.

Gerao de digests
Digests ou hashs so criados usando o sub-comando dgst: openssl dgst -func inputfile Em que -func corresponde ao algortmo de digest/hashing que se deseja usar (ex. md2, md5, sha, sha1). # MD5 digest openssl dgst -md5 filename # SHA1 digest openssl dgst -sha1 filename Para se saber a lista de algoritmos de digest/hashing pode-se executar o comando: openssl dgst help

Assinatura de digests/hash
Se se desejar garantir que o digest criado no modificado sem permisso pode-se assin-lo com uma chave privada (RSA por exemplo). openssl dgst -md5 -sign rsa_key_file -out signed_digest_file input_file Para se verificar que o digest no foi alterado desde a sua gerao, necessita-se do ficheiro original, do digest assinado e da chave pblica: openssl dgst -md5 -verify rsa_key_pub -signature signed_digest_file input_file

Certificados
Uma das formas mais simples de criar um certificado executando o comando: openssl req -x509 -new -newkey rsa:1024 -out mycert.pem -keyout rsa_key_file Depois de questionar o utilizador sobre determinada informao de localizao (ex. Pas, Cidade, mail) e organizao cria um certificado com 1024 bits de comprimento, cuja chave privada gerada para o ficheiro rsa_key_file. O comando seguinte no necessita que o utilizador introduza a informao atrs referida: openssl req -x509 -nodes -days 365 \ -subj '/C=PT/ST=Porto/L=Porto/CN=www.dei.isep.ipp.pt' \ -newkey rsa:1024 -keyout mycert.pem -out mycert.pem Se se desejar criar um certificado a partir duma chave rsa j existente, pode-se usar o seguinte comando: openssl req -x509 -new -key rsa_key_file -out mycert.pem Para se extrair a informao do certificado, pode-se usar o comando seguinte: openssl x509 -text -in mycert.pem

2 de 4

24/11/2010 18:29

howto openssl

http://www.dei.isep.ipp.pt/~nsilva/ensino/asi1/asi1 2005-2006/howto ...

Outros parmtros para o subcomando x509 permitem aceder a informao de forma mais direccionada. Por exemplo: # who issued the cert? openssl x509 -noout -in cert.pem -issuer # to whom was it issued? openssl x509 -noout -in cert.pem -subject # for what dates is it valid? openssl x509 -noout -in cert.pem -dates # the above, all at once openssl x509 -noout -in cert.pem -issuer -subject -dates # what is its hash value? openssl x509 -noout -in cert.pem -hash # what is its MD5 fingerprint? openssl x509 -noout -in cert.pem -fingerprint

Cifrar/Decifrar com algoritmos e passwords


Para se encriptar ou desencriptar um conjunto de bytes usa-se o sub-comando enc. Para encriptar um conjunto de bytes necessita-se de usar um algoritmo/mtodo de cifragem. Para se aceder a uma lsitaem dos algoritmos/mtodos de cigragem usa-se o comando: openssl list-cipher_commands Para alm dos "cifradores" disponveis, acede-se a uma lista de parmetros existentes para o sub-comando enc. Para se encriptar um ficheiro usa-se o comando: openssl enc -cipher -e -in input_file -encrypted_file O parmetro -cipher deve ser substitudo por um mtodo de encriptao disponvel (ex. des, des3, bf, idea). O parmetro -e refere-se a "encriptao". Se for substitudo -d faz-se a desencriptao: openssl env -cipher -d -in encrypted_file -decrypted_file Um parmetro normalmente bastante til nas tarefas anteriores tem a ver com a codificao da encriptao. Se se desejar que a condificao seja em base64 deve-se usar o parmetro -a. Com este parmetro, possvel visualizar o contedo do ficheiro e transferi-lo entre mquinas. openssl enc -des -e -a -in input_file -out encrypted_file

Cifrar/Decifrar com chave RSA


Para se cifrar e descifrar com chaves rsa usa-se o subcomando rsautl. # cifra o ficheiro input_file com a chave publica contida em rsa_key_file openssl rsautl -encrypt -in input_file -pubin -inkey rsa_pub_file -out output_file_encrypted # decifra o ficheiro input_file com a chave privada contida em rsa_key_file openssl rsautl -decrypt -in output_file_encrypted -inkey rsa_key_file -in decrypted_file

Cifrar/Decifrar com certificados e chave RSA


Para se decifrar com certificados e chave RSA vamos usar o subcomando smime. s/mime um standard para envio e recepo de dados MIME seguros, usado especialmente em mensagens de mail, mas que podem ser usadas noutras aplicaes. Para se cifrar um ficheiro usa-se o comando: openssl smime -in input_file -encrypt -out output_file_encrypted -des3 mycert.pem Para decifrarmos o ficheiro cifrado com o comando anterior usa-se:

3 de 4

24/11/2010 18:29

howto openssl

http://www.dei.isep.ipp.pt/~nsilva/ensino/asi1/asi1 2005-2006/howto ...

openssl smime -decrypt -in output_file_encrypted -recip mycert.pem -inkey rsa_key_file

Assinaturas digitais
Para gerar uma assinatura digital necessrio uma chave privada: openssl dgst -md5 -sign rsa_key_file input_file -out output_file_signature Para verificarmos uma assinatura digital: openssl dgst -md5 -verify -signature output_file_signature input_file

Exerccio: RSA e SSH


Gerar chave publica + privada (ssh-keygen); Copiar chave publica para $HOME/.ssh/authorized_keys na mquina remota (onde se deseja entrar sem necessidade de login); Usar mais do que uma chave privada; Usar o ssh-agent.

Last update: 2006-01-16

4 de 4

24/11/2010 18:29

Você também pode gostar