Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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|...]
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
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
3 de 4
24/11/2010 18:29
howto openssl
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
4 de 4
24/11/2010 18:29