OpenSSL

De SergiTurWiki

Share/Save/Bookmark
Dreceres ràpides: navegació, cerca
Aquesta wiki forma part dels materials d'un curs
Curs: SambasobreLDAP, LinuxAdministracioAvancada, SeguretatXarxesInformàtiques
Fitxers: TecniquesCriptografiques.pdf (TecniquesCriptografiques.odp),AutenticacioiAutoritzacionsLinux.pdf
Repositori SVN: https://anonymous@svn.projectes.lafarga.cat/svn/iceupc/SambaSobreLDAP
Usuari: anonymous
Paraula de pas: sense paraula de pas
Autors: Sergi Tur Badenas

Contingut

Instal·lació

$ sudo apt-get install openssl

Comandes:

$ dpkg -L openssl | grep bin
/usr/bin
/usr/bin/openssl


Fitxers de configuració:

$ dpkg -L openssl | grep etc
/etc
/etc/ssl
/etc/ssl/certs
/etc/ssl/private
/etc/ssl/openssl.cnf

Fitxers de documentació:

$ dpkg -L openssl | grep doc
/usr/share/doc
/usr/share/doc/openssl
/usr/share/doc/openssl/README.gz
/usr/share/doc/openssl/NEWS.gz
/usr/share/doc/openssl/README.optimization
/usr/share/doc/openssl/README.Debian
/usr/share/doc/openssl/CHANGES.SSLeay.gz
/usr/share/doc/openssl/copyright
/usr/share/doc/openssl/changelog.gz
/usr/share/doc/openssl/changelog.Debian.gz

Exemples d'ús

A la pàgina oficial d'openssl podeu trobar a l'apartat docs un HOWTO:

http://www.openssl.org/docs/HOWTO/

Hi han 3 fitxers HOWTO:

  • certificates.txt: Com crear certificats
  • keys.txt: Com crear claus
  • proxy_certificates.txt:

Creació d'una clau RSA de 1024 bits amb DES

$ openssl genrsa -des -out key.pem 1024
Generating RSA private key, 1024 bit long modulus
.....................................................++++++
..................++++++
e is 65537 (0x10001)

Us demanarà una paraula de pas per tal d'utilitzar la clau:

Enter pass phrase for key.pem:
Verifying - Enter pass phrase for key.pem:

La clau es guarda en format ASCII:

$ file key.pem
key.txt: ASCII text

al fitxer key.pem:

$ cat key.pem 
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-CBC,3685A1B034850FF2

U6a/q+UWHDvCwEsTFCmksqSj57AEYnLoTQklaGo6FwpZ9+L/iTfXJa75W6k3GS6r
cLiEyfcPliQdBbdnjVX/ke2l7W93Eka2sEfkfVS+ngHLZJKHclceQLk3j3yQLPpK
QvApSl5Xd3ET0fGBdw40N/BZavZsf8h6OGWk0ebUeVe120yTRE5kbAnqUzdwB2Qh
ojLRa3FQ0q/wRg/fd8QaVhpN7GyErH2fJKQ14hrSWyqis7u6/Cj8FuWBLxYHNmV2
CFsWCvIvX6BVckNS20HqGmFHU8D6llSW30Q2tkUV4OsqxJDzzIbSlpbHyWntDya1
ZG8Zv4pw+/8sPjR0NI+woF4521ykQr1iy8Ftpm0rSnwpj85lnL2ECcpSvQjbCagc
K6h3MAIX7tche1mQXj/TswbUuhytOPfvb9yK7tPyYMAva0/wg44O+Gt81r0RW7Az
aMQxm75uOntx4Mrk/mkzkURjBUWzxOaxYf4Z4ML8du15oha71jXXl2ZvZfGdWnqo
/FILJyI6rv51p305I/lBipWbL0IBJmg31n8m8qr3BhuMStuhTZSq+6HddU6A/eXQ
l0xMWZupKpJNg1vjH7C4LX76MRaveq6n3Le3ieQX8WBsGtHeqlGN5PW2ODBPv0oG
DMew5vBFD1b3BQQOtOW1DGTz6qeLPgAcU/9fHRflEkkLaIk7zK6OPxpvGdSdkZfR
y9wQlCitogSdDYveAKX06iujVCLyUlRDj0D6VirszUTpKQa8+eAFni0nBge5iF2S
m6SPGp9cePCLmBkblifxf8CyU/kuteXz50l95Y7bbp8f1mf2ltpsig==
-----END RSA PRIVATE KEY-----

Aquest fitxer conté tant la clau pública com la privada. Consulteu l'apartat Obtenir la clau pública des d'una clau privada per tal de saber com extreure la clau pública

Recursos:

Obtenir la clau pública des d'una clau privada

$ openssl rsa -in key.pem -out key_public.pem -outform PEM -pubout 

Us demanara la paraula de pas per accedir a la clau privada i crearà el fitxer key_public.pem:

$ cat key_public.pem 
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDELfAjyZpi2bvayR8QJm11xeUg
Kq0WigN+Lr5QPRiT6VsKg+5yzMms4D+xrqWHAecdSnhIC+IZ8hDjIv9f8yk0fZrG
7M736eH4974PITbFy8MNozbX+xHb+arFm9RJP8vLBNR4PxNcZNMzwrp+9kt+vaNN
KrNc6OOnDbzme+s3uwIDAQAB
-----END PUBLIC KEY-----

Creació d'una clau DSA de 1024 bits amb DES

$ openssl gendsa -des -out privkey.pem dsaparam.pem

Sense DES

$ openssl dsaparam -out dsaparam.pem 1024

Recursos:

Generar un parell de claus RSA de 1024 bits i el corresponent certificat X.509

$  openssl req -new -x509 -out certificat.pem 
Generating a 1024 bit RSA private key
...................++++++
..++++++
writing new private key to 'privkey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Barcelona
Locality Name (eg, city) []:Barcelona 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:UOC
Organizational Unit Name (eg, section) []:Informatica            
Common Name (eg, YOUR name) []:Sergi Tur Badenas
Email Address []:sergi.tur@upc.edu

Per generar la clau pública:

$ openssl rsa -in privkey.pem -out key.pem -outform PEM -pubout

El resultat són els següents fitxers:

$ ls -l
total 8
-rw-r--r-- 1 sergi sergi 1338 2008-11-30 13:04 certificat.pem
-rw-r--r-- 1 sergi sergi    0 2008-11-30 12:52 key.pem
-rw-r--r-- 1 sergi sergi  963 2008-11-30 13:04 privkey.pem

Altres opcions:

$ sudo openssl req -new -x509 -nodes -out certificat.pem -keyout certificat.pem -days 365

Exemples DES. Criptografia simètrica

Xifrar un fitxer de text amb DES

Creeu un fitxer:

$ joe test.txt

I escriviu un text. Per exemple:

hola!

Ara podeu utilitzar openssl per xifrar el text:

$ openssl des -in test.txt -out testcodificat.txt

Us demanarà una clau.

El resultat és un fitxer binari codificat en format binari:

$ file testcodificat.txt
testcodificat.txt: data

El podeu passar a format text (base64) amb la comanda:

$ openssl base64 -in testcodificat.txt -out testcodificatbase64.txt

Ara el podeu llegir, executant:

$ cat testcodificatbase64.txt
U2FsdGVkX1/DHwVqA1KQJtv3fRu8gnG1oXB47u4Uk40kAyuqGDQtBCl68BmGmelQ
abjnHuJEom0=

Tingueu en compte que cada cop que es xifra amb DES el resultat del xifratge es diferent per que s'utilitza SALT. Si consulteu

$ man enc
 -salt
          use a salt in the key derivation routines. This option should ALWAYS be used unless compatibility with previous versions of OpenSSL or SSLeay
          is required. This option is only present on OpenSSL versions 0.9.5 or above.

A les NOTES posa:

The -salt option should ALWAYS be used if the key is being derived from a password unless you want compatibility with previous versions of OpenSSL
and SSLeay.

Without the -salt option it is possible to perform efficient dictionary attacks on the password and to attack stream cipher encrypted data. The
reason for this is that without the salt the same password always generates the same encryption key. When the salt is being used the first eight
bytes of the encrypted data are reserved for the salt: it is generated at random when encrypting a file and read from the encrypted file when it
is decrypted.

Si tornem a xifrar el mateix text:

$ openssl des -in test.txt -out testcodificat.txt

I aquest cop guardem la versió de text (base64) en un altre fitxer:

$ openssl base64 -in testcodificat.txt -out testcodificat2base64.txt

El resultat és una clau diferent:

$ testcodificat2base64.txt
U2FsdGVkX193v1dfUBz4bEitCksb7GM8HbrxN+oLPBl+jCNcRbaWHXbbBd9NfZuL
ETdDEPHtpg0=

Podeu veure si dos fitxers són diferents amb la comanda diff:

$ diff testcodificatbase64.txt testcodificat2base64.txt 
1,2c1,2
< U2FsdGVkX1/DHwVqA1KQJtv3fRu8gnG1oXB47u4Uk40kAyuqGDQtBCl68BmGmelQ
< abjnHuJEom0=
---
> U2FsdGVkX193v1dfUBz4bEitCksb7GM8HbrxN+oLPBl+jCNcRbaWHXbbBd9NfZuL
> ETdDEPHtpg0=

Vegeu que la primera part

U2FsdGVkX1

és comuna. La resta varia. Això permet fer el xifratge més segur contra atacs de diccionari.

Tots dos es poden desxifrar obtenint el mateix resultat:

$ openssl base64 -d -in testcodificatbase64 | openssl des -d -k paraula_de_pas
hola!
$ openssl base64 -d -in testcodificat2base64 | openssl des -d -k paraula_de_pas
hola!

Si no voleu escriure la paraula de pas a la línia de comandes trèieu l'opció k:

$ openssl base64 -d -in testcodificatbase64 | openssl des -d 

Podeu observar com canvia el SALT i el vector t'inicialització amb l'opció -p:

$ openssl des -in test1.txt -out testenc1.txt -p
...
salt=92D5D56FDB04C6F6
key=F13F4CB0A7226792
iv =42DA75D1B7A8C513
$ openssl des -in test1.txt -out testenc1.txt -p
...
salt=0CA2EEADB7A420B9
key=FAEA0159E4AA61FF
iv =50AA26BA76FE30D8

Amb l'opció -nosalt la clau i el IV no varien:

$ openssl des -in test1.txt -out testenc1.txt -p -nosalt
enter des-cbc encryption password:
Verifying - enter des-cbc encryption password:
key=ABF8412B7C606F8A
iv =CD8B58968E9B4733
$ openssl des -in test1.txt -out testenc1.txt -p -nosalt
enter des-cbc encryption password:
Verifying - enter des-cbc encryption password:
key=ABF8412B7C606F8A
iv =CD8B58968E9B4733



Recursos:

$ man enc

Exemples S/MIME

Signar un missatge de text amb S/MIME

Primer cal tenir un certicat i les corresponents claus:

$  openssl req -new -x509 -out certificat.pem 
Generating a 1024 bit RSA private key
...................++++++
..++++++
writing new private key to 'privkey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Barcelona
Locality Name (eg, city) []:Barcelona 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Acacha
Organizational Unit Name (eg, section) []:Informatica            
Common Name (eg, YOUR name) []:Sergi Tur Badenas
Email Address []:sergi.tur@upc.edu

El resultat són els següents fitxers:

$ ls -l
total 8
-rw-r--r-- 1 sergi sergi 1338 2008-11-30 13:04 certificat.pem
-rw-r--r-- 1 sergi sergi    0 2008-11-30 12:52 key.pem
-rw-r--r-- 1 sergi sergi  963 2008-11-30 13:04 privkey.pem

Creem un fitxer de text:

 $ joe textProva.txt

Amb qualsevol text:

Hola! Això és una prova.

Creem el missatge S/MIME amb:

$ openssl smime -sign -in textProva.txt -text -out textProva.msg  \ -signer certificat.pem -inkey privkey.pem

El resultat és:

$ cat textProva.msg 

MIME-Version: 1.0

Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="----310830388D714A0AB32FBDD4DA5ADF1F"


This is an S/MIME signed message



------310830388D714A0AB32FBDD4DA5ADF1F

Content-Type: text/plain



Hola! Això és una prova.


------310830388D714A0AB32FBDD4DA5ADF1F
Content-Type: application/x-pkcs7-signature; name="smime.p7s"

Content-Transfer-Encoding: base64

Content-Disposition: attachment; filename="smime.p7s"

MIIF6gYJKoZIhvcNAQcCoIIF2zCCBdcCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3
DQEHAaCCA7IwggOuMIIDF6ADAgECAgkAni0PeOPFNOEwDQYJKoZIhvcNAQEFBQAw
gZcxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJh
cmNlbG9uYTEMMAoGA1UEChMDVU9DMRQwEgYDVQQLEwtJbmZvcm1hdGljYTEaMBgG
A1UEAxMRU2VyZ2kgVHVyIEJhZGVuYXMxIDAeBgkqhkiG9w0BCQEWEXNlcmdpLnR1
ckB1cGMuZWR1MB4XDTA4MTEzMDEyMDQ1N1oXDTA4MTIzMDEyMDQ1N1owgZcxCzAJ
BgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9u
YTEMMAoGA1UEChMDVU9DMRQwEgYDVQQLEwtJbmZvcm1hdGljYTEaMBgGA1UEAxMR
U2VyZ2kgVHVyIEJhZGVuYXMxIDAeBgkqhkiG9w0BCQEWEXNlcmdpLnR1ckB1cGMu
ZWR1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHCe3fe4GIR8buwQ2msXZX
de/ag/NTt31/SH+IzKgoMCGEnfqNy87PCtbIpcdSUULOhXySvdoozsU2RYt2LiD9
YcVu5UWJX8uGlAQjnshOUyp8UuVnWgh1iwoUgrwV8xtqRKNBWCZ89Zuk1KjqcHTJ
Vnir/t6l4miZ0UKkp4ze3QIDAQABo4H/MIH8MB0GA1UdDgQWBBR3EmwItCU1CIev
0hXmzdCKz9SHnTCBzAYDVR0jBIHEMIHBgBR3EmwItCU1CIev0hXmzdCKz9SHnaGB
naSBmjCBlzELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UE
BxMJQmFyY2Vsb25hMQwwCgYDVQQKEwNVT0MxFDASBgNVBAsTC0luZm9ybWF0aWNh
MRowGAYDVQQDExFTZXJnaSBUdXIgQmFkZW5hczEgMB4GCSqGSIb3DQEJARYRc2Vy
Z2kudHVyQHVwYy5lZHWCCQCeLQ9448U04TAMBgNVHRMEBTADAQH/MA0GCSqGSIb3
DQEBBQUAA4GBALdJMeLXqUKB/HgXCEZJL2+OzJ33eBC4SIjPQedraefOavi1DQMp
rE6NXPtDi4mudwzocAu1xKRItoQCop7yWOSr5ditVvNOGTxS8w8DfryU1oMOd1z2 
7svdfrPjsYph43+qisnsu6SASJ7cFV8FPZNbunzdULq+zPE3bJZdzeFPMYICADCC
AfwCAQEwgaUwgZcxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ
BgNVBAcTCUJhcmNlbG9uYTEMMAoGA1UEChMDVU9DMRQwEgYDVQQLEwtJbmZvcm1h
dGljYTEaMBgGA1UEAxMRU2VyZ2kgVHVyIEJhZGVuYXMxIDAeBgkqhkiG9w0BCQEW
EXNlcmdpLnR1ckB1cGMuZWR1AgkAni0PeOPFNOEwCQYFKw4DAhoFAKCBsTAYBgkq
hkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wODExMzAxMjE3
MTlaMCMGCSqGSIb3DQEJBDEWBBT4gybjI3rUxvmF34FY04ZX5M9F3zBSBgkqhkiG
9w0BCQ8xRTBDMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0D
AgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDANBgkqhkiG9w0BAQEFAASBgJ81
EEMpzJhsK8JWs9FD+ty60GzVinLiiNpGm1GNPikE2LqtTHD55cftH8PlSC5Qdv41
694Q3E+8N3zkgSS6L4xR4qr+OJHnDGNeVYd0CKwZIjx4rdwuXmeuIdubhFqFQFRc
HBj7q7rAAJiTX1bK9nWsqmr4ZwCP6NniYiXTyWMF

------310830388D714A0AB32FBDD4DA5ADF1F--

Recursos

Opaque. Text no clar

També es poden signar missatges i que el missatge no viatgi en clar. La opció és -nodetach

$ openssl smime -sign -in textPac4.txt -text -out textPac4Opaque.msg -nodetach -signer certificat.pem -inkey privkey.pem
Enter pass phrase for privkey.pem:

El resultat és

$ cat textPac4Opaque.msg 
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/x-pkcs7-mime; smime-type=signed-data; name="smime.p7m"
Content-Transfer-Encoding: base64

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
RAxqDvqMVvU=

El missatge “opac” és verifica de la mateixa forma que un missatge en clar.

Segons el manual de Unix:

$ man smime
...
 -nodetach

  when signing a message use opaque signing: this form is more resistant to 
  translation by mail relays but it cannot be read by mail agents that

  do not support S/MIME.  Without this option cleartext signing with the MIME 
  type multipart/signed is used.


El missatge firmat en clar és compatible amb tot tipus de lectors de correu electrònic encara que no suportin S/MIME (el missatge arribara sempre per què viatja en clar però aquest clients no podran verificar la identitat del signant). La opció de fer el missatge opac fa el missatge més resistent als canvis que se li puguin aplicar durant el seu pas per servidors de correu intermediaris (relays)

Verificar un missatge S/MIME

Per verificar un missatge

$ openssl smime -verify -in textPac4.msg -signer certificat.pem -out signedtext.txt
Verification failure
14137:error:21075075:PKCS7 routines:PKCS7_verify:certificate verify error:pk7_smime.c:245:Verify error:self signed certificate

Aquest error succeix quan el certificat utilitzar és un certificat autosignat. Podem dir-li a openssl que noverifiqui el certificat:

$ openssl smime -verify -in textPac4.msg -signer certificat.pem -out signedtext.txt -noverify
Verification successful

Normalment el certificat va inclòs en el missatge i no cal utilitzar l'opció -signer:

$ openssl smime -verify -in textPac4.msg -out signedtext.txt -noverify
Verification successful


Recursos

Xifrar un missatge signat amb S/MIME

Si ja teniu el missatge signat (suposem que és el fitxer textProva.msg)

$ openssl smime -encrypt -in textProva.msg -out MissatgeSignatiXifrat.msg -from usuari@upc.edu -to unaltreusuari@upc.edu -subject "Missatge sixrat i 
signat" -des3 certificat.pem

Si volem que el missatge utilitzi diferents certificats (per exemple, el volem enviar a múltiples destinataris), podem indicar altres certificats amb l'opció -certfile:

 $ openssl smime -encrypt -in textProva.msg -out MissatgeSignatiXifrat.msg -from usuari@upc.edu -to unaltreusuari@upc.edu -subject "Missatge sixrat i 
signat" -certfile cert2.pem -des3 certificat.pem

Signar i xifrar un missatge signat amb S/MIME

$ openssl smime -sign -in textProva.txt -text -signer certificat.pem -inkey privkey.pem | openssl smime -encrypt -out MissatgeSignatiXifrat.msg -from  
usuari@upc.edu -to usuari2@yahoo.es -subject "Missatge signat i xifrat" -des3 certificat.pem

Com verificar un certificat

$ openssl s_client -connect www.iescopernic.com:443

Canvis de format

Passar de format TXT+PEM a només PEM

$ openssl x509 -in irontec.com.txt.pem -out irontec.com.crt.pem

Passar de format DER a PEM

$ openssl x509 -in irontec.com.crt.der -inform DER -out irontec.com.crt.pem

Crear un certificat amb caCERT

Primer cal crear la clau:

$ openssl genrsa -out www.elmeudomini.com.key 1024

Creeu el fitxer de petició de certificat:

$ openssl req -new -key www.elmeudomini.com.key -out www.elmeudomini.com.csr

El fitxer:

www.elmeudomini.com.csr

És el fitxer que s'haurà de pujar a la web de caCERT. Primer és necessari que disposeu d'un compte de caCERT.

Creeu-vos un compte a:

https://www.cacert.org/index.php?id=1

Un cop hageu creat el compte accediu a l'apartat

“Server Certificates"

I feu clic a “New”. Copieu el contingut del fitxer *.csr.

Ara ja podeu seguir les passes de:

Apache#Configuraci.C3.B3_de_SSL

Per tal d'afegir el certificat a Apache.

Recursos'

Crear una petició de certificat per a una CA

Per crear una petició de certificat:

$ openssl req -new -key privkey.pem -out cert.csr

El fitxer cert.csr és el que es passa a l'entitat certificadora.

Error de SSL i Debian (maig 2008)

Consulteu l'article Error claus Openssl (SSH) a Debian (descoberta maig 2008).

Infraestructura de clau pública

Consulteu Infraestructura_de_clau_pública.PKI, concretament l'apartat Configuració SSL.

SSL a Apache

Consulteu l'apartat Configuració de SSL de l'article Apache.

SSL a Ldap

Consulteu l'article Ldap, concretament l'apartat Creació del certificat.

Recursos

Vegeu també

IES Nicolau Copèrnic