OpenSSL

Allikas: Kuutõrvaja

Sissejuhatus

OpenSSL http://www.openssl.org/ on vaba tarkvaraline Secure Sockets Layer (SSL v2/v3) ja Transport Layer Security (TLS v1) protokollide implementatsioon. OpenSSL tarkvara sisaldab nii utiliite kui teeke, mis sobivad nt erinevates programmeerimiskeeltes OpenSSL funktsionaalsuse kasutamiseks.

Tänapäeval on OpenSSL iseseisev tarkava, kusjuures ta põhineb Eric A. Young ja Tim J. Hudson poolt arendatud SSLeay teegil.

OpenSSL hetkel kasutusel olevat versiooni näeb käsuga

# openssl version
OpenSSL 0.9.8n 24 Mar 2010

Kontrollsummade arvutamine

  • SHA1
$ openssl dgst -sha1 /etc/fstab 
SHA1(/etc/fstab)= d3e23e40e9dcefcba35052dfdca2ba2bdcfba2eb
  • MD5
$ openssl dgst -md5 /etc/fstab 
MD5(/etc/fstab)= 88d91737675acdb76fd5777f1a45400a

Andmete krüptimine

  • base64, kusjuures tegu on nö teisendusega, mitte krüptimisega, echo -n ütleb mitte lisada reavahetust tulemuse lõppu
$ echo "Loomaaed" | openssl enc -base64
TG9vbWFhZWQK

$ echo TG9vbWFhZWQK  | openssl enc -base64 -d
Loomaaed
  • AES
$ openssl enc -aes-256-cbc -a -salt -in /etc/fstab -out /tmp/fstab.crypted
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

$ openssl enc -d -aes-256-cbc -a -in /tmp/fstab.crypted -out /tmp/fstab
enter aes-256-cbc decryption password:

Sertifikaadipäringu moodustamine

Sõltuvalt vajadustest võib kasutada avalikku teenust pakkuva PKI asutuse teenuseid, moodustada ise oma PKI (nt tarkvara TinyCA abil, http://tinyca.sm-zone.net/) või lihtsalt genereerida sama veebiserveri sertifikaadile vastava salajase võtmega allkirjastatud veebiserveri sertifikaat - endasigneeritud sertifikaat (ingl. k. self-signed certificate)

 $ openssl req -nodes -new -keyout www.loomaaed.tartu.ee.key -newkey rsa:1024 > www.loomaaed.tartu.ee.csr
 ...
 Country Name (2 letter code) [AU]: EE
 State or Province Name (full name) [Some-State]: Tartu
 Locality Name (eg, city) []:Tartu
 Organization Name (eg, company) [Internet Widgits Pty Ltd]: Tartu Loomaaed
 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []: www.loomaaed.tartu.ee
 Email Address []:

kus

  • CN - common name, peab langema kokku selle teenuse aadressis kasutatava domeenimega, kus sertifikaati kasutama kavatsetakse hakata
  • parooli küsimusele vastata Enteriga.

Endasigneeritud sertifikaadi moodustamine

Endasigneeritud (ingl. k. self-signed) sertifikaadi tekitamiseks sobib öelda

  $ openssl x509 -req -days 3650 -in www.loomaaed.tartu.ee.csr -signkey www.loomaaed.tartu.ee.key \ 
  -out www.loomaaed.tartu.ee.crt

Moodustatud sertifikaadi sisu saab esitada öeldes

 $ openssl x509 -in www.loomaaed.tartu.ee.crt -noout -text

Wildcard sertifikaadipäringu moodustamine

Wildcard sertifikaat erineb nö tavalisest sertifikaadist selle poolest, et CN väärtuseks ei ole üks konkreetne domeeninimi, vaid nt

CN=*.loomaaed.tartu.ee

mis tabab kõiki neljanda taseme nimesid, nt mail.loomaaed.tartu.ee, www.loomaaed.tartu.ee jne, aga mitte pop3.mail.loomaaed.tartu.ee.

Sertfikaadi moodustamiseks sobib öelda nt

TODO

Šiffrid

$ openssl ciphers -v 'HIGH:MEDIUM:!ADH:!SSLv2'
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-DSS-AES256-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(256)  Mac=SHA1
AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
DHE-DSS-AES128-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(128)  Mac=SHA1
AES128-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA1
EDH-RSA-DES-CBC3-SHA    SSLv3 Kx=DH       Au=RSA  Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA    SSLv3 Kx=DH       Au=DSS  Enc=3DES(168) Mac=SHA1
DES-CBC3-SHA            SSLv3 Kx=RSA      Au=RSA  Enc=3DES(168) Mac=SHA1
RC4-SHA                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=SHA1
RC4-MD5                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=MD5 

TLSv1

Klient

TODO

Server

TODO

OSCP

Klient

TODO

Server

TODO

Süsteemi koormustest

openssl utiliidi abils saab teha süsteemile koormustesti, nt kasutades RSA algoritmi

$ openssl speed rsa -multi 4 
...

timing function used: 
                  sign    verify    sign/s verify/s
rsa  512 bits 0.000100s 0.000008s   9981.7 126197.5
rsa 1024 bits 0.000462s 0.000020s   2162.9  49540.8
rsa 2048 bits 0.002469s 0.000062s    405.0  16227.5
rsa 4096 bits 0.015087s 0.000204s     66.3   4908.0

kus

  • rsa -
  • multi 4 - käivitatakse kõrvuti neli openssl protsessi

Parooli räsi arvutamine

man -l /usr/share/man/man1/passwd.1ssl.gz

$ openssl passwd -1 -salt FuuD4O1n parool
$1$FuuD4O1n$C5GFPLbrf4acwHd8new5

PKCS#12

PKCS#12 faili omaduste esitamiseks sobib öelda

$ openssl pkcs12 -in failinimi.p12 -info -noout
Enter Import Password:
MAC Iteration 1024
MAC verified OK
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 1024
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 1024
Certificate bag

C ertificate bag

Märkused

  • Privaatse võtme ja sertifikaadi klappimise kontrolliks sobib öelda
# openssl x509 -in /etc/ssl/certs/cyrus-imap.pem -noout -modulus | md5sum
0dbf4513a3ecf45d64fff50776c1d1ad  -
# openssl rsa -in /etc/ssl/private/cyrus-imap.key -noout -modulus | md5sum
0dbf4513a3ecf45d64fff50776c1d1ad  -
  • avaliku võtme omaduste küsimine
$ cat voti.pem
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxSrHPphy8fR9ryqnJqXvk8clh
TMcUM1ce03mec/8l8VW6Z8I0n5dcytAfJogJ03aaNcgxIkft8S1z8cYTDhkMGKKT
GpeMntYTQ9eVW1yjWWCWRM6B2U0U0ezQ44Aysl393t4BCofmSzOUJZQduinojkiI
PgqwokpuOfi61E+qjwIDAQAB
-----END PUBLIC KEY-----
$ openssl rsa -pubin -in voti.pem -noout -text
Modulus (1024 bit):
   00:b1:4a:b1:cf:a6:1c:bc:7d:1f:6b:ca:a9:c9:a9:
   7b:e4:f1:c9:61:4c:c7:14:33:57:1e:d3:79:9e:73:
   ff:25:f1:55:ba:67:c2:34:9f:97:5c:ca:d0:1f:26:
   88:09:d3:76:9a:35:c8:31:22:47:ed:f1:2d:73:f1:
   c6:13:0e:19:0c:18:a2:93:1a:97:8c:9e:d6:13:43:
   d7:95:5b:5c:a3:59:60:96:44:ce:81:d9:4d:14:d1:
   ec:d0:e3:80:32:b2:5d:fd:de:de:01:0a:87:e6:4b:
   33:94:25:94:1d:ba:29:e8:8e:48:88:3e:0a:b0:a2:
   4a:6e:39:f8:ba:d4:4f:aa:8f
Exponent: 65537 (0x10001)

Kasulikud lisamaterjalid