37
L’eina OpenSSL Seguretat en Xarxes de Computadors Febrer 2005 Índex 1 El shell OpenSSL 2 2 Criptografia simètrica 3 2.1 Comandes d’algorismes de criptografia simètrica ............................ 3 2.2 Opcions de les comandes de criptografia simètrica ............................ 4 3 Funcions hash 5 3.1 Comandes de funcions hash ....................................... 5 3.2 Opcions de les comandes de funcions hash ................................ 6 4 Criptografia de clau pública 6 4.1 Generació de claus RSA: la comanda genrsa ............................. 6 4.2 Processament de claus RSA: la comanda rsa .............................. 7 4.3 Xifratge i desxifratge RSA: la comanda rsautl ............................ 8 4.4 Signatures RSA amb la comanda dgst ................................. 10 4.5 Altres algorismes de clau pública ..................................... 10 5 Certificats X.509 11 5.1 El fitxer de configuració openssl.cnf ................................ 11 5.2 Peticions de certificació PKCS #10: la comanda req .......................... 11 5.2.1 Creació de peticions PKCS #10: req -new .......................... 11 5.2.2 Processament de peticions PKCS #10 amb la comanda req .................. 13 5.3 Certificats X.509: la comanda x509 ................................... 14 5.3.1 Generació de certificats X.509: x509 -CA ........................... 14 5.3.2 Processament de certificats X.509 amb la comanda x509 ................... 16 5.4 Funcions de CA: la comanda ca ..................................... 17 5.5 Verificació de certificats X.509: la comanda verify .......................... 20 6 Llistes de revocació de certificats (CRL) 20 6.1 Generació de llistes de revocació ..................................... 20 6.2 Processament de llistes de revocació: la comanda crl ......................... 21

OpenSSL

Embed Size (px)

Citation preview

Page 1: OpenSSL

L’eina OpenSSLSeguretat en Xarxes de Computadors Febrer 2005

Índex

1 El shell OpenSSL 2

2 Criptografia simètrica 3

2.1 Comandes d’algorismes de criptografia simètrica. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 Opcions de les comandes de criptografia simètrica. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Funcionshash 5

3.1 Comandes de funcionshash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.2 Opcions de les comandes de funcionshash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

4 Criptografia de clau pública 6

4.1 Generació de claus RSA: la comandagenrsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

4.2 Processament de claus RSA: la comandarsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4.3 Xifratge i desxifratge RSA: la comandarsautl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4.4 Signatures RSA amb la comandadgst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4.5 Altres algorismes de clau pública. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5 Certificats X.509 11

5.1 El fitxer de configuracióopenssl.cnf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5.2 Peticions de certificació PKCS #10: la comandareq . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5.2.1 Creació de peticions PKCS #10:req -new . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5.2.2 Processament de peticions PKCS #10 amb la comandareq . . . . . . . . . . . . . . . . . . 13

5.3 Certificats X.509: la comandax509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

5.3.1 Generació de certificats X.509:x509 -CA . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

5.3.2 Processament de certificats X.509 amb la comandax509 . . . . . . . . . . . . . . . . . . . 16

5.4 Funcions de CA: la comandaca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.5 Verificació de certificats X.509: la comandaverify . . . . . . . . . . . . . . . . . . . . . . . . . . 20

6 Llistes de revocació de certificats (CRL) 20

6.1 Generació de llistes de revocació. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

6.2 Processament de llistes de revocació: la comandacrl . . . . . . . . . . . . . . . . . . . . . . . . . 21

Page 2: OpenSSL

1. El shell OpenSSL 2

7 Missatges S/MIME 22

7.1 Creació de missatges S/MIME amb la comandasmime . . . . . . . . . . . . . . . . . . . . . . . . . 22

7.2 Lectura de missatges S/MIME amb la comandasmime . . . . . . . . . . . . . . . . . . . . . . . . . 24

7.3 Processament de dades PKCS #7: la comandapkcs7 . . . . . . . . . . . . . . . . . . . . . . . . . . 25

7.4 Creació d’estructures PKCS #7 amb només certificats i/o CRL: la comandacrl2pkcs . . . . . . . 26

8 Fitxers PKCS #12 26

8.1 Generació de fitxers PKCS #12: la comandapkcs12 -export . . . . . . . . . . . . . . . . . . . 26

8.2 Processament de fitxers PKCS #12 amb la comandapkcs12 . . . . . . . . . . . . . . . . . . . . . . 28

9 El protocol SSL/TLS 29

9.1 Servidor SSL/TLS genèric: la comandas_server . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

9.2 Client SSL/TLS genèric: la comandas_client . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

10 Altres comandes OpenSSL 35

10.1 Versió de la llibreria: la comandaversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

10.2 Llista d’algorismes criptogràfics: la comandaciphers . . . . . . . . . . . . . . . . . . . . . . . . 35

10.3 Mesura del rendiment dels algorismes: les comandesspeed i s_time . . . . . . . . . . . . . . . . 36

10.4 Claus privades en format PKCS #8: la comandapkcs8 . . . . . . . . . . . . . . . . . . . . . . . . . 37

1 El shell OpenSSL

L’objectiu del projecte OpenSSL (http://www.openssl.org/ ) és desenvolupar una implementació“opensource”del protocol SSL/TLS (Secure Sockets Layer/ Transport Layer Security). Com a eines auxiliars inclou llibre-ries amb les funcions criptogràfiques més usades en aquest protocol. També proporciona un senzillshell, anomenatopenssl , que permet cridar aquestes funcions des d’una línia de comandes.

Hi ha dues maneres d’utilitzar elshell openssl : el mode interactiu i el mode de comanda única. Per usar el pro-gramaopenssl en mode interactiu només cal cridar-lo sense arguments i introduir les comandes des del seuprompt(“OpenSSL>”), fins a una comanda que sigui “exit ”, “ quit ” o “ q” (o fins al final de l’entrada). Per exemple:

$ openssl

OpenSSL> md5 exemple.txt

MD5(exemple.txt)= d41d8cd98f00b204e9800998ecf8427e

OpenSSL> q

$

Per usar elshellen mode comanda única, se li passen com a arguments la comanda i els seus paràmetres. Per exemple:

$ openssl md5 exemple.txt

MD5(exemple.txt)= d41d8cd98f00b204e9800998ecf8427e

$

Qualsevol comanda o opció invàlida (p. ex., “?”) fa que elshellmostri les comandes o opcions vàlides en cada cas.

Page 3: OpenSSL

2. Criptografia simètrica 3

2 Criptografia simètrica

2.1 Comandes d’algorismes de criptografia simètrica

El shell openssl proporciona la comandaenc per cridar les funcions corresponents als algorismes de xifratgesimètric. Fent per exemple “enc ? ” s’obté una llista dels algorismes suportats. Alguns d’aquests algorismes són:

Algorisme ComandaDES des- . . .

Triple DES (amb 2 o 3 claus) des-ede- . . ., des-ede3- . . .

IDEA idea- . . .

Blowfish bf- . . .

RC2 rc2- . . .

RC4 rc4

RC5 rc5- . . .

CAST cast5- . . .

AES (clau de 128, 192 o 256 bits)aes-128- . . ., aes-192- . . ., aes-256- . . .

La majoria dels algorismes de bloc (tots els anteriors menys l’RC4) es poden utilitzar en algun dels 4 modes d’operaciósegüents:

Mode d’operació ComandaECB (Electronic Codebook) . . .-ecb

CBC (Cipher Block Chaining) . . .-cbc

CFB (Cipher Feedback) . . .-cfb

OFB (Output Feedback) . . .-ofb

D’altra banda, algunes de les comandes anteriors es poden escriure de forma abreujada amb un “àlies”:

Comanda Àliesdes-cbc des

des-ede3-cbc des3

idea-cbc idea

bf-cbc bf (o blowfish )rc2-cbc rc2

rc5-cbc rc5

cast5-cbc cast

aes-128-cbc aes128

aes-192-cbc aes192

aes-256-cbc aes256

Per xifrar un text es pot cridar la comandaenc passant-li com a opció l’algorisme desitjat, com per exemple:

enc -des-ede3-cbc

o bé directament cridar la comanda corresponent a l’algorisme:

des-ede3-cbc

Page 4: OpenSSL

2. Criptografia simètrica 4

Quan es crida sense opcions, una comanda de xifratge simètric realitza les següents accions:

1. Demana una contrasenya secreta. Aquesta contrasenya serà la que caldrà donar en el moment de desxifrar lesdades per recuperar el text original.

2. Torna a demanar la contrasenya per verificar que no ens haguem equivocat.

3. Genera aleatòriament uns bits de “sal”.

4. A partir de la contrasenya i els bits de sal, aplicant-los tantes vegades com calgui una funcióhash, obté una sèriede bytes que s’usaran com a clau de xifratge i, si cal, uns altres bytes que s’usaran com a vector d’inicialització.

5. Llegeix de l’entrada estàndard les dades a xifrar.

6. Aplica l’algorisme criptogràfic especificat a les dades llegides, fent servir la clau i el vector d’inicialitzacióobtinguts.

7. Escriu per la sortida estàndard els bits de sal (que no són secrets) i les dades xifrades.

2.2 Opcions de les comandes de criptografia simètrica

Les comandes corresponents als algorismes de criptografia simètrica (§2.1) admeten les següents opcions:

-e

Indica que s’ha de realitzar l’operació de xifratge (aquesta és l’opció per defecte).

-d

Indica que s’ha de realitzar l’operació inversa, és a dir, el desxifratge.

-pass pass: CONTRASENYA

Permet especificar directament la contrasenya en la línia de comandes.

-pass env: VARIABLE

Indica que la contrasenya a utilitzar és el valor de la variable d’entornVARIABLE.

-pass file: FITXER

Indica que la contrasenya a utilitzar està en la primera línia del fitxerFITXER.

-pass stdin

Indica que la contrasenya a utilitzar s’ha de llegir de l’entrada estàndard (que podria ser per exemple unapipe).

-kfile FITXER

Equival a-pass file: FITXER.

-k CADENA

Permet especificar directament la clau com una cadena de caràcters.

-K BYTES

Permet especificar directament la clau de xifratge (o desxifratge) com una cadena de dígits hexadecimals.

-iv BYTES

Permet especificar directament el vector d’inicialització com una cadena de dígits hexadecimals.

Page 5: OpenSSL

3. Funcionshash 5

-S BYTES

Permet especificar directament els bits de sal com una cadena de dígits hexadecimals.

-nosalt

Indica que no s’han de fer servir bits de sal.

-p

Indica que la comanda mostri els valors dels bits de sal, clau de xifratge (o desxifratge) i vector d’inicialitzacióque farà servir.

-P

Igual que l’opció-p , però fa que la comanda només mostri els valors obtinguts, sense fer l’operació de xifratgeo desxifratge.

-nopad

Indica que no s’afegeixin bytes depaddinga les dades a xifrar (sense aquesta opció, sempre s’hi afegeixen entre1 i L bytes, d’acord amb l’especificació PKCS #5, onL és la longitud del bloc de xifrat en bytes). En aquest cas,la longitud de les dades a xifrar ha de ser múltipla deL.

-a | -base64

Indica que les dades xifrades es generin o s’interpretin en “base 64”.

-in FITXER_ENTRADA

Indica que les dades a xifrar (o desxifrar) s’han de llegir del fitxerFITXER_ENTRADA, en lloc de l’entradaestàndard.

-out FITXER_SORTIDA

Indica que les dades xifrades (o desxifrades) s’han d’escriure al fitxerFITXER_SORTIDA, en lloc de la sortidaestàndard.

3 Funcionshash

3.1 Comandes de funcionshash

El shellopenssl proporciona la comandadgst per cridar les funcions de càlcul de“message digest”o funcionshash. Fent per exemple “dgst -? ” s’obté una llista dels algorismes dehashsuportats. Aquests algorismes són:

Algorisme ComandaMD2 (obsolet) md2

MD4 (obsolet) md4

MD5 md5

MDC2 amb DES mdc2

SHA (obsolet) sha

SHA-1 sha1

RIPEMD-160 rmd160

Per calcular unhashes pot cridar la comandadgst passant-li com a opció l’algorisme desitjat, com per exemple:

dgst -sha1

Page 6: OpenSSL

4. Criptografia de clau pública 6

o bé directament cridar la comanda corresponent a l’algorisme:

sha1

Per defecte, la comandadgst sense l’opció de l’algorisme és equivalent a “dgst -md5 ”. D’altra banda, les opcions-DSA, -DSA-SHA, -dsaEncryption i -dsaWithSHA equivalen a-sha1 , i -ripemd160 equival a-rmd160 .

Quan es crida sense cap altra opció, una comanda de càlcul dehashllegeix dades l’entrada estàndard, i al final escriuel hashd’aquestes dades en hexadecimal.

3.2 Opcions de les comandes de funcionshash

Les comandes corresponents a les funcionshash(§ 3.1) admeten les següents opcions:

FITXER [. . .]

Si se li passa un o més noms de fitxers, la comanda calcula elhashde cadascun d’aquests fitxers, en lloc decalcular-lo de l’entrada estàndard.

-out FITXER_SORTIDA

Indica que el resultat s’escrigui al fitxerFITXER_SORTIDA, en lloc de la sortida estàndard.

-hex

Indica que elhashs’escrigui en hexadecimal. Aquesta és l’opció per defecte si no s’usa l’opció-sign (§ 4.4).

-binary

Indica que elhashs’escrigui directament en binari.

A més, aquestes comandes també es poden utilitzar amb l’opció-sign , -verify o -prverify , per generar overificar signatures, tal com s’explica a l’apartat sobre signatures RSA (§4.4) amb la comandadgst .

4 Criptografia de clau pública

La llibreria OpenSSL implementa funcions criptogràfiques corresponents a diversos algorismes de clau pública, coml’intercanvi de claus Diffie-Hellman, l’algorisme RSA, o l’estàndard DSS (que conté l’especificació de l’algorismeDSA). D’aquests, elshell openssl proporciona comandes per accedir a la majoria de funcions corresponents al’algorisme RSA: generació i processament de claus, xifratge i desxifratge.

4.1 Generació de claus RSA: la comandagenrsa

La comandagenrsa permet generar un parell de claus RSA. Quan es crida sense opcions, aquesta comanda realitzales següents accions:

1. Genera aleatòriament els components d’una clau RSA, per defecte de 512 bits. Mentre els genera, va escrivintper pantalla diversos símbols: “. ” per cada candidat a factor primer que va escollint, i “+” per cada iteració deltest de primeritat que va superant el candidat.

2. Escriu per pantalla el valor de l’exponent públic, que per defecte és 65537 (216+1).

3. Calcula els components de la clau privada (que inclouen els components de la clau pública) i els escriu per lasortida estàndard, en el format anomenat PEM (Privacy Enhanced Mail).

Page 7: OpenSSL

4. Criptografia de clau pública 7

La comandagenrsa admet les següents opcions:

-f4

Utilitza el número de FermatF4 (= 65537) com a exponent públic (aquesta és l’opció per defecte).

-3

Utilitza el número 3 com a exponent públic.

-out FITXER_CLAU_PRIVADA

Escriu la clau privada en fitxer, en lloc d’escriure-la per la sortida estàndard.

-des | -des3 | -idea | -aes128 | -aes192 | -aes256

Abans d’escriure els components de la clau privada, els xifra amb un algorisme de xifratge simètric: DES, TripleDES, IDEA, o AES amb clau de 128, 192 o 256 bits. Per defecte, demanarà una contrasenya per obtenir elsparàmetres de xifratge.

-passout pass: . . . | -passout env: . . . | -passout file: . . . | -passout stdin

Permet especificar la contrasenya de xifratge de la clau privada, amb la mateixa sintaxi que les opcions-pass

de les comandes de xifratge simètric (§2.2).

-rand FITXER_1 [: FITXER_2 . . .]

Utilitza el contingut dels fitxers especificats com a dades per al generador de números pseudo-aleatoris, si non’hi ha prou amb les fonts d’entropia del sistema (per exemple/dev/urandom ). Per defecte, s’usen els fitxers$RANDFILE o $HOME/.rnd .

N

Genera una clau deN bits, en lloc de 512. Si s’especifica aquesta opció, ha de ser l’última de la línia de comanda.

4.2 Processament de claus RSA: la comandarsa

La comandarsa permet processar una clau RSA. Quan es crida sense opcions, aquesta comanda realitza les següentsaccions:

1. Llegeix de l’entrada estàndard una clau privada en format PEM.

2. Si la clau està xifrada, demana la contrasenya corresponent i la desxifra.

3. Escriu per la sortida estàndard els components de la clau privada, sense xifrar, en format PEM.

Si es volen realitzar altres operacions amb la clau, la comandarsa es pot cridar amb les següents opcions:

-in FITXER_ENTRADA

Indica que la clau s’ha de llegir de fitxer, en lloc de l’entrada estàndard.

-inform DER

Indica que la clau a llegir no està en format PEM sinó en format DER (Distinguished Encoding Rules). (Elformat PEM s’obté a partir del DER aplicant la codificació “base 64” i, si cal, afegint-hi certes capçaleres.)

-pubin

Indica que la clau a llegir és una clau pública (no té els components privats).

Page 8: OpenSSL

4. Criptografia de clau pública 8

-passin pass: . . . | -passin env: . . . | -passin file: . . . | -passin stdin

Permet especificar la contrasenya de desxifratge de la clau privada, amb la mateixa sintaxi que les opcions-pass de les comandes de xifratge simètric (§2.2).

-out FITXER_SORTIDA

Indica que la clau s’ha d’escriure a fitxer, en lloc de la sortida estàndard.

-outform DER

Indica que la clau s’ha d’escriure en format DER, en lloc de PEM.

-pubout

Indica que només escrigui els components públics de la clau.

-des | -des3 | -idea | -aes128 | -aes192 | -aes256

Indica que la clau s’ha d’escriure xifrada simètricament, i l’algorisme a utilitzar. Per defecte, demanarà unacontrasenya per obtenir els paràmetres de xifratge. Només es pot xifrar la clau quan s’escriu en format PEM:per generar claus privades xifrades en format DER es poden usar les estructures PKCS #8 (§10.4).

-passout pass: . . . | -passout env: . . . | -passout file: . . . | -passout stdin

Permet especificar la contrasenya de xifratge de la clau privada, amb la mateixa sintaxi que les opcions-pass

de les comandes de xifratge simètric (§2.2).

-text

Indica que escrigui també a la sortida una representació llegible dels components de la clau.

-modulus

Igual que-text , però escrivint només el mòdul públic de la clau.

-check

Indica que faci una comprovació per veure si els components de la clau són correctes.

-noout

Indica que no escrigui la clau.

4.3 Xifratge i desxifratge RSA: la comandarsautl

La comandarsautl permet realitzar les operacions criptogràfiques de l’algorisme de clau pública RSA: xifratgeamb clau pública (opció-encrypt ), desxifratge amb clau privada (opció-decrypt ), xifratge amb clau privada(opció-sign ), i desxifratge amb clau pública (opció-verify ). Aquesta comanda té una opció obligatòria:

-inkey FITXER_CLAU_RSA

Indica el fitxer on hi ha la clau RSA per a l’operació de xifratge o desxifratge.

Quan es crida la comandarsautl sense cap altra opció (o amb l’opció-verify , que correspon a l’operació perdefecte), aquesta comanda realitza les següents accions:

1. Llegeix del fitxer indicat per l’opció-inkey una clau privada en format PEM.

2. Si la clau està xifrada, demana la contrasenya corresponent i la desxifra.

3. Llegeix de l’entrada estàndard les dades a desxifrar.

Page 9: OpenSSL

4. Criptografia de clau pública 9

4. Utilitza els components públics de la clau per fer el desxifratge amb clau pública de les dades llegides, interpretael resultat com un bloc PKCS #1, i escriu les dades desxifrades per la sortida estàndard.

L’operació a efectuar per la comandarsautl s’especifica amb una de les següents quatre opcions:

-encrypt

Utilitza els components públics de la clau per fer el xifratge amb clau pública de les dades d’entrada.

-decrypt

Realitza el desxifratge amb clau privada de les dades d’entrada (és l’operació inversa a-encrypt ).

-sign

Realitza el xifratge amb clau privada de les dades d’entrada.

-verify

Utilitza els components públics de la clau per fer el desxifratge amb clau pública de les dades d’entrada (ésl’operació inversa a-sign ). Aquesta és l’operació per defecte de la comandarsautl , tal com s’ha esmentatabans.

La comandarsautl també admet les següents opcions:

-keyform DER

Indica que la clau està en format DER.

-pubin

Indica que al fitxer especificat per l’opció-inkey hi ha una clau pública (no té els components privats).Aquesta opció només té sentit en les operacions-encrypt i -verify .

-certin

Indica que al fitxer especificat per l’opció-inkey hi ha un certificat X.509 (§5), el qual conté la clau públicaa utilitzar. Aquesta opció només té sentit en les operacions-encrypt i -verify .

-in FITXER_ENTRADA

Indica que les dades s’han de llegir de fitxer, en lloc de l’entrada estàndard.

-out FITXER_SORTIDA

Indica que el resultat s’ha d’escriure a fitxer, en lloc de la sortida estàndard.

-pkcs

Indica que les dades desxifrades es converteixin o s’interpretin com a blocs PKCS #1 (aquesta és l’opció perdefecte). D’acord amb l’especificació PKCS #1, la longitud de les dades a xifrar ha de ser com a màxim deK−11 bytes, onK és la longitud en bytes del mòdul de la clau (=N/8).

-raw

Indica que les dades desxifrades s’interpretin directament com a números binaris, sense aplicar-hi el formatPKCS #1.

-hexdump

Indica que les dades de sortida s’escriguin en hexadecimal.

-asn1parse

Indica que les dades de sortida s’interpretin com a dades ASN.1 i se n’escrigui la descodificació. Normalmentaquesta opció tindrà sentit quan es desxifrin o verifiquin certs tipus de dades, com per exemple determinadesestructures S/MIME (§7).

Page 10: OpenSSL

4. Criptografia de clau pública 10

4.4 Signatures RSA amb la comandadgst

Les operacions de xifratge amb clau privada (-sign ) i desxifratge amb clau pública (-verify ) de la comandarsautl (§ 4.3) són la base per a les signatures digitals, però aquestes operacions no es fan directament sobre lesdades signades sinó sobre el seuhash. Les comandes per al càlcul de funcionshash(§ 3.1) (md5, sha1 , etc.), a mésde les seves opcions pròpies (§3.2), també proporcionen les següents opcions per realitzar operacions amb signaturesRSA, en combinació amb els algorismes dehashcorresponents:

-sign FITXER_CLAU_PRIVADA

Calcula la signatura RSA de les dades d’entrada utilitzant la clau privada del fitxerFITXER_CLAU_PRIVADA.

-verify FITXER_CLAU_PUB -signature FITXER_SIGNATURA

Comprova, utilitzant la clau pública del fitxerFITXER_CLAU_PUB, si la signatura RSA que hi ha al fitxerFITXER_SIGNATURAés una signatura vàlida de les dades d’entrada.

-prverify FITXER_CLAU_PRIVADA -signature FITXER_SIGNATURA

Igual que-verify , però amb un fitxer de clau privada (de la qual s’utilitzaran només els components públics).

El fitxer que conté la clau RSA es llegeix per defecte segons el format PEM: si està en format DER cal especificarl’opció “ -keyform DER ”, com en la comandarsautl (§ 4.3).

4.5 Altres algorismes de clau pública

El shellopenssl proporciona comandes per generar i processar claus d’altres algorismes de clau pública:

dsaparam

Aquesta comanda permet generar i processar els paràmetres comuns (p, q, g) a un conjunt de claus DSA. Perexemple, amb “dsaparam N” s’obté un valor d’aquests paràmetres per a claus deN bits. Per processar elsparàmetres DSA es poden fer servir opcions com les de la comandarsa (§ 4.2): -inform , -outform ,-text , etc.

gendsa

Aquesta comanda permet crear una clau DSA a partir d’uns determinats paràmetres comuns. Per exemple, amb“gendsa FITXER_PARAM_DSA” s’obté una clau amb els paràmetres donats pel fitxer indicat, prèviamentgenerats ambdsaparam (amb les opcions-des , -des3 , -idea , etc. es pot xifrar la clau generada).

dsa

Aquesta comanda permet processar una clau DSA, amb opcions com les de la comandarsa (§ 4.2), comp. ex.-inform , -pubin , -passin , -outform , -pubout , -des , -des3 , -idea , -passout , -text ,-modulus , etc.

dhparam

Aquesta comanda permet generar i processar paràmetres (base i mòdul) per a l’algorisme d’intercanvi de claus deDiffie-Hellman. Per exemple, amb “dhparam N” s’obté un valor d’aquests paràmetres amb mòdul deN bits.La base per defecte és 2, però es pot canviar a 5 amb l’opció-5 . Per processar els paràmetres Diffie-Hellmanes poden fer servir opcions com les de la comandarsa (§ 4.2): -inform , -outform , -text , -check , etc.

Page 11: OpenSSL

5. Certificats X.509 11

5 Certificats X.509

5.1 El fitxer de configuracióopenssl.cnf

L’eina OpenSSL fa ús d’un fitxer de configuració,openssl.cnf , per obtenir valors per defecte de certs paràmetresque utilitzen algunes comandes, i en particular les comandes que processen certificats X.509. Aquest fitxer constad’un seguit de seccions, cadascuna encapçalada amb una línea de la forma:

[ nom_secció ]

i dins de cada secció hi ha línies amb assignacions de variables de la forma:

nom_variable =valor

En el fitxer de configuració apliquen certes regles sintàctiques bàsiques:

• El text que hi hagi entre un caràcter “#” i el final de línia és ignorat: es pot usar per posar-hi comentaris.

• Els espais en blanc al començament o al final del valor d’una variable són ignorats (si es volen incloure en elvalor, es pot usar el delimitador “" ”).

• El caràcter “\” permet incloure certs literals en un valor, com p. ex. “\n”, “ \t ”, “ \\”, etc. A més, un “\” a finalde línia indica que el valor continua en la línia següent.

Algunes comandes OpenSSL consulten el valor d’una determinada variable d’una determinada secció. Si hi ha mésd’una assignació per a la mateixa variable, només val l’última. Si interessa que una variable tingui múltiples valors,es poden afegir diferents prefixos al seu nom (p. ex. “1.OU”, “ 2.OU”, etc.) ja que el prefix fins al primer “. ” no es téen compte a l’hora de buscar una variable.

Quan una variable no es troba en la secció especificada, llavors es busca en la “secció per defecte”, que és la primeraque hi ha en el fitxer (i que habitualment no té cap nom explícit).

Si en el valor d’una variable apareix un text de la forma$var (o ${ var } ), aquest text és substituït pel valor de lavariablevar prèviament assignat en la secció actual. També es pot usar$secc :: var (o ${ secc :: var } ) perobtenir el valor de la variablevar de la secciósecc . A més, la secció predefinidaENVcorrespon a les variablesd’entorn, de manera que$ENV:: var equival a la variable d’entornvar .

La ubicació exacta del fitxer de configuració depèn de la instal·lació: pot ser/usr/local/ssl/openssl.cnf ,/etc/ssl/openssl.cnf , /opt/ssl/openssl.cnf , etc. El directori per defecte que s’usa en una determi-nada instal·lació es pot obtenir amb l’opció-d de la comandaversion (§ 10.1).

5.2 Peticions de certificació PKCS #10: la comandareq

El shellopenssl proporciona la comandareq per crear i processar peticions de certificació PKCS #10.

5.2.1 Creació de peticions PKCS #10:req -new

La comandareq , quan se li passa l’opció-new , realitza les següents accions:

1. Genera un parell de claus RSA com en la comandagenrsa (§ 4.1), amb el nombre de bits indicat per la variablede configuració (§5.1) req::default_bits . Si no existeix la variable, la clau serà de 512 bits.

2. Demana unapass phrase(contrasenya) per protegir la clau privada acabada de crear.

Page 12: OpenSSL

5. Certificats X.509 12

3. Torna a demanar lapass phraseper verificar que no ens haguem equivocat.

4. Busca la variable de configuració (§5.1) req::default_keyfile . El seu valor és el nom del fitxer ons’escriurà la clau privada generada, en format PEM (xifrada mitjançant lapass phraseamb l’algorismedes3 ).Si no existeix la variable, la clau s’escriu per la sortida estàndard.

5. Busca la variable de configuració (§5.1) req::distinguished_name . El seu valor és el nom d’una seccióque permet seleccionar els atributs que formaran el DN (X.500 Distinguished Name) del titular del certificat. Lesvariables de la secció poden ser, p. ex.,C, O, OU, CN, Email , etc. (també es poden utilitzar els noms llargs comcountryName , organizationName , etc.). Per a cada variableatr de la secció, la comanda demanarà elvalor de l’atribut corresponent, fent servir la pròpia variable com aprompt, i la variableatr _default com avalor per defecte (també hi pot haver variablesatr _min i atr _max per indicar la longitud mínima i màximadel valor, respectivament).

(Si hi ha una variablereq::prompt igual a “no”, la comanda no demana cap atribut del DN sinó que elsomple directament amb el valor per defecte per a cada atribut.)

6. Busca la variable de configuració (§5.1) req::attributes (opcional). Si existeix, aquesta variablepermet seleccionar atributs que s’inclouran en la petició PKCS #10, de la mateixa manera que la variablereq::distinguished_name .

7. Amb totes les dades obtingudes, genera la petició PKCS #10 en format PEM, i l’escriu per la sortida estàndard.

En comptes de-new es pot fer servir una d’aquestes opcions per especificar el tipus de clau a generar:

-newkey rsa: N

Indica que la clau generada serà una clau RSA deN bits.

-newkey dsa: FITXER_PARAM_DSA

Indica que la clau generada serà una clau DSA amb els paràmetres (§4.5) del fitxerFITXER_PARAM_DSA.

A l’hora de generar una petició PKCS #10 ambreq -new (o req -newkey ) també es poden usar aquestes opcions:

-batch

Llegir les dades d’entrada sense demanar-les interactivament.

-subj / ATR1=VALOR1/ ATR2=VALOR2. . .

Permet especificar directament el DN del titular.

-md5 | -sha1 | . . .

Indica l’algorisme dehashamb què es generarà la signatura de la petició PKCS #10. Per defecte és el donat perla variable de configuració (§5.1) req::default_md (o MD5, si no existeix la variable).

-x509

Indica que la petició de certificació no es generi en format PKCS #10 sinó com un certificat X.509 auto-signat.

-set_serial NUM

Quan es genera un certificat X.509 auto-signat, el número de sèrie seràNUM(per defecte, 0).

-days D

Quan es genera un certificat X.509 auto-signat, el període de validesa serà deD dies (per defecte, 30).

-out FITXER_SORTIDA

Indica que la petició PKCS #10 o certificat X.509 auto-signat s’escrigui en fitxer, en lloc de la sortida estàndard.

Page 13: OpenSSL

5. Certificats X.509 13

-outform DER

Indica que la petició PKCS #10 o certificat X.509 auto-signat s’escrigui en format DER, en comptes de PEM.

-keyout FITXER_CLAU_SORTIDA

Indica que la clau privada generada s’escrigui en el fitxerFITXER_CLAU_SORTIDA, en comptes del fitxer$req::default_keyfile .

-passout pass: . . . | -passout env: . . . | -passout file: . . . | -passout stdin

Permet especificar lapass phraseper protegir la clau generada, amb la mateixa sintaxi que les opcions-pass

de les comandes de xifratge simètric (§2.2). També es pot definir unapass phraseper defecte amb la variablede configuració (§5.1) req::output_password .

-nodes

Indica que la clau generada s’ha d’escriure sense cap protecció (és a dir, sense xifrar-la). Tampoc es protegirà sihi ha una variable de configuració (§5.1) req::encrypt_key igual a “no”.

-key FITXER_CLAU_PRIVADA

Indica que no s’ha de crear una clau nova, sinó que la petició PKCS #10 o certificat X.509 auto-signat s’ha degenerar a partir de la clau PEM del fitxerFITXER_CLAU_PRIVADA.

-keyform DER

Indica que la clau privada especificada per l’opció-key està en format DER, en comptes de PEM.

-passin pass: . . . | -passin env: . . . | -passin file: . . . | -passin stdin

Permet especificar lapass phraseper llegir la clau privada, amb la mateixa sintaxi que les opcions-pass deles comandes de xifratge simètric (§2.2). També es pot definir unapass phraseper defecte amb la variable deconfiguració (§5.1) req::input_password .

-reqexts SECC_EXT_PETIC

Indica el nom d’una secció de configuració (§5.1) que conté extensions a incloure en la petició PKCS #10(també es pot especificar el nom d’aquesta secció amb la variablereq::req_extensions ).

-extensions SECC_EXT_CERT

Indica el nom d’una secció de configuració (§5.1) que conté extensions a incloure en el certificat X.509auto-signat, quan s’usa l’opció-x509 (també es pot especificar el nom d’aquesta secció amb la variablereq::x509_extensions ).

-config FITXER_CONFIG

Indica que el fitxer de configuració (§5.1) a utilitzar ésFITXER_CONFIG, en comptes del fitxer per defecte.

També es pot especificar l’opció-rand , equivalent a la de la comandagenrsa (§ 4.1).

5.2.2 Processament de peticions PKCS #10 amb la comandareq

Quan es crida sense cap opció (i en particular sense l’opció-new o -newkey ), la comandareq realitza simplementles següents accions:

1. Llegeix de l’entrada estàndard una petició PKCS #10 en format PEM.

2. Escriu per la sortida estàndard la petició PKCS #10 llegida, en format PEM.

Page 14: OpenSSL

5. Certificats X.509 14

En aquest mode d’ús, la comandareq també admet algunes de les opcions per a la generació de peticions (§5.2.1),com-out , -outform , etc., i també aquestes altres:

-in FITXER_ENTRADA

Indica que la petició PKCS #10 d’entrada s’ha de llegir de fitxer, en lloc de l’entrada estàndard.

-inform DER

Indica que la petició PKCS #10 d’entrada està en format DER en comptes de PEM.

-verify

Indica que verifiqui la signatura de la petició PKCS #10.

-text

Indica que escrigui també a la sortida una representació llegible dels camps de la petició PKCS #10.

-noout

Indica que no escrigui la petició PKCS #10.

També es pot especificar l’opció-modulus , equivalent a la de la comandarsa (§ 4.2), o les opcions-subject i-pubkey , equivalents a les de la comandax509 (§ 5.3.2).

5.3 Certificats X.509: la comandax509

El shellopenssl proporciona la comandax509 per generar i processar certificats X.509.

5.3.1 Generació de certificats X.509:x509 -CA

Com hem vist abans, amb la comandareq es poden generar certificats X.509 auto-signats (§5.2.1) (mitjançant lesopcions-new -x509 ). La comandax509 , amb l’opció-CA, permet generar certificats X.509 signats amb qualsevolclau privada, que en aquest cas farà de clau de CA.

La comandax509 , quan se li passa l’opció “-CA FITXER_CERT_CA”, realitza les següents accions:

1. Llegeix del fitxerFITXER_CERT_CAel certificat X.509 de la CA, en format PEM.

2. Llegeix del mateix fitxerFITXER_CERT_CAla clau privada RSA de la CA, en format PEM (un fitxer PEMpot contenir diversos elements, com claus, certificats, etc., simplement concatenats un darrere l’altre).

3. Si la clau privada està xifrada, demana la contrasenya corresponent per desxifrar-la.

4. Llegeix el fitxer que conté el número de sèrie actual. Aquest fitxer té el mateix nom que el del certificat de la CA(FITXER_CERT_CA), però canviant (o afegint) l’extensió per “.srl ”. En la primera (o única) línia d’aquestfitxer hi ha d’haver el número de sèrie en hexadecimal (amb un nombre parell de dígits hexadecimals).

5. Llegeix de l’entrada estàndard un certificat X.509 en format PEM. Típicament es tractarà d’un certificat auto-signat que actuarà com a petició de certificació, com els generats ambreq -new -x509 (§ 5.2.1), però potser qualsevol certificat X.509 en general. Si no és auto-signat, es verifica la seva cadena de certificació com enla comandaverify (§ 5.5).

6. Genera un certificat X.509 emès per la CA especificada, amb el mateix titular que el certificat d’entrada, i ambel número de sèrie llegit del fitxer corresponent, i escriu aquest certificat per la sortida estàndard en format PEM.

7. Incrementa el número de sèrie i escriu el valor actualitzat al fitxer corresponent.

Page 15: OpenSSL

5. Certificats X.509 15

En comptes de l’opció-CA també es pot usar aquesta altra opció per generar un certificat:

-signkey FITXER_CLAU_PRIVADA

Indica que el certificat generat tindrà com a emissor i titular el titular del certificat d’entrada, com a número desèrie per defecte 0, com a clau pública la corresponent al fitxerFITXER_CLAU_PRIVADA, i estarà signat ambla clau privada d’aquest fitxer.

A l’hora de generar un certificat X.509 ambx509 -CA (o x509 -signkey ) també es poden usar aquestes opcions:

-req

Indica que a l’entrada no hi ha un certificat X.509 sinó una petició de certificació PKCS #10.

-in FITXER_ENTRADA

Indica que l’entrada s’ha de llegir de fitxer, en lloc de l’entrada estàndard.

-inform DER

Indica que l’entrada està en format DER en comptes de PEM.

-CAform DER

Indica que el certificat de la CA està en format DER en comptes de PEM.

-CAkey FITXER_CLAU_CA

Indica en quin fitxer es troba la clau privada de la CA, en cas que no estigui en el mateix fitxer que el certificatde la CA.

-CAkeyform DER

Indica que la clau privada de la CA està en format DER, en comptes de PEM.

-keyform DER

Quan s’usa l’opció-signkey , indica que el fitxer que conté la clau privada està en format DER, en comptesde PEM.

-passin pass: . . . | -passin env: . . . | -passin file: . . . | -passin stdin

Permet especificar lapass phraseper llegir la clau privada de la CA, amb la mateixa sintaxi que les opcions-pass de les comandes de xifratge simètric (§2.2).

-md5 | -sha1 | . . .

Indica l’algorisme dehashamb què es generarà la signatura del certificat X.509 (per defecte, MD5). Aquestaopció també indica amb quin algorisme s’ha de calcular elfingerprintde l’opció-fingerprint (§ 5.3.2).

-CAserial FITXER_NUM_SERIE

Indica que el fitxer que conté el número de sèrie actual ésFITXER_NUM_SERIE.

-CAcreateserial

Indica que, si el fitxer amb el número de sèrie no existeix, es crea i s’inicialitza amb el valor01 .

-set_serial NUM

Indica directament el número de sèrie que tindrà el certificat X.509 generat.

-days D

Indica el període de validesa en dies del certificat X.509 generat (per defecte, 30).

Page 16: OpenSSL

5. Certificats X.509 16

-extfile FITXER_EXT

Indica el nom d’un fitxer, amb format de fitxer de configuració (§5.1), que conté una secció d’extensions X.509.

-extensions SECC_EXT_CERT

Indica el nom de la secció de configuració (§5.1) on hi ha les extensions X.509, dins del fitxer especificatper l’opció -extfile (sense l’opció-extensions , la secció d’extensions és la donada per la variableextensions de la secció per defecte d’aquest fitxer o, si no existeix la variable, és la pròpia secció perdefecte). En aquesta secció, cada extensió que es vol incloure en el certificat s’especifica com una variable ambel valor corresponent.

-clrext

Indica que en el certificat generat no s’incloguin les extensions del certificat d’entrada (per defecte aquestesextensions s’inclouen en el certificat generat).

-out FITXER_SORTIDA

Indica que el certificat generat s’ha d’escriure a fitxer, en lloc de la sortida estàndard.

-outform DER

Indica que el certificat generat s’escrigui en format DER, en comptes de PEM.

-x509toreq

Quan s’usa l’opció-signkey , indica que la sortida sigui una petició de certificació PKCS #10, en comptesd’un certificat X.509 auto-signat.

5.3.2 Processament de certificats X.509 amb la comandax509

Quan es crida sense cap opció (i en particular sense l’opció-CA o -signkey ), la comandax509 realitza simplementles següents accions:

1. Llegeix de l’entrada estàndard un certificat X.509 en format PEM.

2. Escriu per la sortida estàndard el certificat X.509 llegit, en format PEM.

En aquest mode d’ús, la comandax509 també admet algunes de les opcions per a la generació de certificats (§5.3.1),com-in , -inform , -out , -outform , etc., i també aquestes altres:

-text

Indica que escrigui també a la sortida una representació llegible dels camps del certificat X.509.

-serial

Indica que escrigui el número de sèrie del certificat X.509.

-issuer

Indica que escrigui el DN de l’emissor del certificat X.509.

-subject

Indica que escrigui el DN del titular del certificat X.509.

-email

Indica que escrigui les adreces de correu electrònic que pugui tenir associades el titular del certificat (com aatribut del DN o com a extensions).

Page 17: OpenSSL

5. Certificats X.509 17

-startdate | -enddate | -dates

Indica que escrigui la data d’inici de validesa del certificat X.509, o la de caducitat, o totes dues.

-pubkey

Indica que escrigui la clau pública del titular del certificat X.509.

-purpose

Indica que escrigui els usos per als quals s’ha emès el certificat, d’acord amb les extensions corresponents.

-checkend S

Indica que comprovi si el certificat caduca en els pròximsS segons.

-fingerprint

Indica que escrigui elfingerprintdel certificat X.509 (calculat com elhashde la seva codificació DER).

-hash

Indica que escrigui unhashdel DN del titular. Aquesthashel fan servir certes comandes que busquen certificatsper nom del titular, comverify (§ 5.5), smime -verify (§ 7.2), pkcs12 -export (§ 8.1), s_server

(§ 9.1) o s_client (§ 9.2).

-noout

Indica que no escrigui el certificat X.509.

També es pot especificar l’opció-modulus , equivalent a la de la comandarsa (§ 4.2).

5.4 Funcions de CA: la comandaca

El shell openssl també proporciona la comandaca per realitzar les funcions bàsiques d’una CA. Quan es cridasense opcions, la comandaca realitza les següents accions:

1. Busca la variable de configuració (§5.1) ca::default_ca . El seu valor és el nom de la secció corresponenta la CA.

2. Busca la variable de configuració (§5.1) private_key en la secció de la CA. El seu valor és el nom del fitxeron hi ha la clau privada de la CA.

3. Si la clau privada de la CA està xifrada, demana lapass phrasecorresponent per desxifrar-la.

4. Busca la variable de configuració (§5.1) certificate en la secció de la CA. El seu valor és el nom del fitxeron hi ha el certificat de la CA.

5. Busca la variable de configuració (§5.1) database en la secció de la CA. El seu valor és el nom del fitxer onhi ha la base de dades de certificats emesos per la CA.

6. Comprova que la base de dades sigui correcta i escriu missatges d’error informatius si hi troba inconsistències.

A la comandaca se li especifiquen les funcions a realitzar mitjançant les següents opcions:

-in FITXER_PETIC

El fitxer especificat conté una petició de certificació PKCS #10. La comanda genera el certificat corresponent iactualitza la base de dades. El número de sèrie es pren del fitxer indicat per la variable de configuració (§5.1)serial de la secció de la CA. Aquest fitxer té el mateix ús i format que el que fa servir la comandax509

(§ 5.3.1). El certificat generat s’escriu per la sortida estàndard i també es desa, en format text i en format PEM,en un directori donat per la variablenew_certs_dir de la secció de la CA, amb un nom de fitxer format pelnúmero de sèrie i l’extensió “.pem ”.

Page 18: OpenSSL

5. Certificats X.509 18

-infiles FITXER_PETIC1 FITXER_PETIC2 . . .

Igual que l’opció-in , però permet especificar diversos fitxers alhora. En aquest cas, l’opció-infiles ha deser l’última de la línia de comanda.

-ss_cert FITXER_CERT

Igual que l’opció-in , però el fitxer conté un certificat X.509 auto-signat en comptes d’una petició PKCS #10.

-updatedb

La comanda actualitza la base de dades, fent que els certificats que han caducat quedin marcats com a caducats.

-revoke FITXER_CERT

El fitxer especificat conté un certificat a revocar. La comanda el revoca i actualitza la base de dades.

-gencrl

La comanda genera una CRL a partir dels certificats que estan marcats com a revocats a la base de dades.

-status NUM

La comanda mostra l’estat del certificat que té el número de sèrieNUM.

A més, la comandaca admet aquestes altres opcions:

-config FITXER_CONFIG

Indica que el fitxer de configuració (§5.1) a utilitzar ésFITXER_CONFIG, en comptes del fitxer per defecte.

-name SECC_CA

Indica que el nom de la secció de configuració (§5.1) de la CA ésSECC_CA, en lloc del donat per la variableca::default_ca .

-keyfile FITXER_CLAU_PRIVADA

Indica que el fitxer de la clau privada de la CA ésFITXER_CLAU_PRIVADA, en lloc del donat per la variablede configuració (§5.1) private_key .

-keyform DER

Indica que la clau de la CA està en format DER, en comptes de PEM.

-passin pass: . . . | -passin env: . . . | -passin file: . . . | -passin stdin

Permet especificar lapass phraseper llegir la clau privada de la CA, amb la mateixa sintaxi que les opcions-pass de les comandes de xifratge simètric (§2.2).

-cert FITXER_CERT_CA

Indica que el fitxer del certificat de la CA ésFITXER_CERT_CA, en lloc del donat per la variable de configu-ració (§5.1) certificate .

-subj / ATR1=VALOR1/ ATR2=VALOR2. . .

Permet especificar el DN del titular del certificat generat, ignorant el que figuri a la petició de certificació.

-startdate AAMMDDHHMMSSZ

Indica la data d’inici de validesa del certificat generat. Per defecte és la donada per la variable de configuració(§ 5.1) default_startdate de la secció de la CA, o la data actual si no existeix la variable.

-days D

Indica el període de validesa en dies del certificat generat. Per defecte és el donat per la variable de configuració(§ 5.1) default_days de la secció de la CA.

Page 19: OpenSSL

5. Certificats X.509 19

-enddate AAMMDDHHMMSSZ

Indica la data de caducitat del certificat generat. Per defecte és la donada per la variable de configuració (§5.1)default_enddate de la secció de la CA, o la data d’inici més els dies per defecte si no existeix la variable.

-md ALGORISME

Indica l’algorisme dehasha usar en la signatura del certificat o CRL. Per defecte és el donat per la variable deconfiguració (§5.1) default_md de la secció de la CA.

-extfile FITXER_EXT

Indica el nom d’un fitxer de configuració (§5.1) que conté una secció d’extensions X.509. Sense aquesta opció,s’usa el fitxer de configuració per defecte (openssl.cnf ).

-extensions SECC_EXT_CERT

Indica el nom de la secció del fitxer de configuració (§5.1) on hi ha les extensions X.509 que s’inclouran enels certificats. Sense aquesta opció, es fa servir la secció donada per la variableextensions de la secció perdefecte del fitxer indicat per l’opció-extfile , o la pròpia secció per defecte si no existeix la variable. Sitampoc s’ha indicat un fitxer de configuració, s’usa la secció donada per la variablex509_extensions delfitxer per defecte.

-policy SECC_POLIT

Indica el nom de la secció de configuració (§5.1) que conté variables que especifiquen quins camps dels cer-tificats són obligatoris, quins han de coincidir amb els de la CA, etc. Per defecte és el donat per la variablepolicy de la secció de la CA.

-crldays D

Quan es genera una CRL, indica el nombre de dies fins a la següent CRL. Per defecte és el donat per la variablede configuració (§5.1) default_crl_days de la secció de la CA, o 0 si no existeix la variable.

-crlhours H

Quan es genera una CRL, indica el nombre d’hores (a sumar als dies) fins a la següent CRL. Per defecte és eldonat per la variable de configuració (§5.1) default_crl_hours de la secció de la CA, o 0 si no existeixla variable.

-crlexts SECC_EXT_CRL

Indica el nom de la secció de configuració (§5.1) on hi ha les extensions que s’inclouran en les CRL. Per defecteés el donat per la variablecrl_extensions de la secció de la CA.

-crl_reason R

Quan es revoca un certificat, indica el motiu de revocació.

-crl_hold OID | -crl_compromise AAMMDDHHMMSSZ | -crl_CA_compromise AAMMDDHHMMSSZ

Depenent del motiu de revocació d’un certificat, aquestes opcions permeten especificar els corresponents parà-metres.

-out FITXER_SORTIDA

Indica que el certificat o CRL generat no s’escrigui a la sortida estàndard sinó al fitxerFITXER_SORTIDA.

-outdir DIR_SORTIDA

Indica que el certificat generat es desi al directoriDIR_SORTIDA, en lloc del donat per la variable de configu-ració (§5.1) new_certs_dir .

-notext

Indica que només es desi el certificat generat en format PEM, sense el corresponent text.

Page 20: OpenSSL

6. Llistes de revocació de certificats (CRL) 20

-batch

Indica que la comanda treballi en mode no interactiu (sense fer cap pregunta).

-verbose

Indica que la comanda escrigui missatges informatius sobre les accions que va realitzant.

5.5 Verificació de certificats X.509: la comandaverify

La comandaverify del shell openssl permet verificar certificats o cadenes de certificats. Quan es crida senseopcions, aquesta comanda realitza les següents accions:

1. Llegeix de l’entrada estàndard un certificat X.509 en format PEM.

2. Verifica el certificat llegit i escriu un missatge informatiu del resultat de la verificació.

La comandaverify admet les següents opcions:

-CAfile FITXER_CERT_CA

Indica que al fitxerFITXER_CERT_CAhi ha el certificat de la CA emissora del certificat a verificar. Per defectes’usa el fitxer$SSL_CERT_FILE, o bé un fitxercert.pem que estigui en el mateix directori on es busca elfitxer de configuració (§5.1).

-untrusted FITXER_CERTS_NO_CONF

Indica un fitxer que conté certificats en format PEM que poden ser necessaris per seguir la cadena del certificata verificar (cadascun dels quals haurà de ser verificat al seu torn).

-trusted FITXER_CERTS_CONF

Indica un fitxer que conté certificats de CA de confiança en format PEM (quan un certificat de CA és de confi-ança, no cal continuar verificant més certificats de la cadena).

-CApath DIR_CERTS_CA

Indica un directori que conté certificats de CA de confiança. Per poder trobar un certificat a partir del DN deltitular, cal que el nom del fitxer (o d’un enllaç que apunti al fitxer) estigui basat en elhashque s’obté ambl’opció -hash de la comandax509 (§ 5.3.2). Per defecte s’usen un subdirectoricerts que estigui en elmateix directori on es busca el fitxer de configuració (§5.1), i el directori$SSL_CERT_DIR.

-purpose PROP

Verificar si el certificat (d’acord amb les seves extensions, si en té) és vàlid per al propòsit indicat, que pot sersslclient , sslserver , smimesign , smimeencrypt , crlsign , any , etc.

FITXER_CERT_1 . . .

Indica que el certificat o certificats a verificar s’han de llegir de fitxer(s), en lloc de l’entrada estàndard. Sis’especifiquen fitxers de certificats, han d’anar al final de la línia de comanda.

6 Llistes de revocació de certificats (CRL)

6.1 Generació de llistes de revocació

La comandaca (§ 5.4) delshellopenssl , que permet realitzar les funcions bàsiques d’una CA, inclou entre les sevesoperacions la generació de llistes de revocació (CRL). Per a això només cal fer servir l’opció-gencrl d’aquestacomanda.

Page 21: OpenSSL

6. Llistes de revocació de certificats (CRL) 21

6.2 Processament de llistes de revocació: la comandacrl

El shellopenssl també proporciona la comandacrl per al processament de llistes de revocació (CRL). Quan escrida sense opcions, aquesta comanda realitza simplement les següents accions:

1. Llegeix de l’entrada estàndard una CRL en format PEM.

2. Escriu per la sortida estàndard la CRL llegida, en format PEM.

La comandacrl admet les següents opcions:

-in FITXER_ENTRADA

Indica que la CRL s’ha de llegir de fitxer, en lloc de l’entrada estàndard.

-inform DER

Indica que la CRL d’entrada està en format DER en comptes de PEM.

-out FITXER_SORTIDA

Indica que la CRL s’ha d’escriure a fitxer, en lloc de la sortida estàndard.

-outform DER

Indica que la CRL s’escrigui en format DER, en comptes de PEM.

-text

Indica que escrigui també a la sortida una representació llegible dels camps de la CRL.

-issuer

Indica que escrigui el DN de la CA emissora de la CRL.

-lastupdate

Indica que escrigui la data d’emissió de la CRL.

-nextupdate

Indica que escrigui la data màxima d’emissió de la següent CRL.

-CAfile FITXER_CERT_CA

Indica que verifiqui la signatura de la CRL mitjançant el certificat de la CA emissora, que es troba al fitxerFITXER_CERT_CA.

-CApath DIR_CERTS_CA

Igual que-CAfile , però buscant el certificat de la CA en el directoriDIR_CERTS_CA. Per poder-hi trobar uncertificat cal que el fitxer tingui un nom com el que espera la comandaverify (§ 5.5) quan s’usa amb l’opció-CApath .

-noout

Indica que no escrigui la CRL.

A més, la comandacrl també admet les opcions-fingerprint i -hash , anàlogues a les de la comandax509

(§ 5.3.2).

Page 22: OpenSSL

7. Missatges S/MIME 22

7 Missatges S/MIME

El shellopenssl proporciona la comandasmime per crear i processar missatges de correu electrònic segur S/MIMEsignats i/o xifrats.

7.1 Creació de missatges S/MIME amb la comandasmime

Per generar un missatge S/MIME cal cridar la comandasmime amb una d’aquestes dues opcions:

-encrypt

Generar missatge xifrat. Quan s’usa aquesta opció cal especificar un o més fitxers al final de la línia de comanda:

FITXER_CERT_1 . . .

Aquests fitxers han de contenir els certificats dels destinataris del missatge.

En aquest cas la comanda llegeix dades de l’entrada estàndard (que haurien de ser una part de missatge MIME,amb la seva capçalera i el seu cos), genera un missatge S/MIME amb sobre digital, que conté aquestes dadesxifrades per als titulars dels certificats especificats, i escriu el missatge per la sortida estàndard.

-sign

Generar missatge signat. Quan s’usa aquesta opció cal especificar aquesta altra:

-signer FITXER_CERT

Aquest fitxer ha de contenir el certificat i la clau privada del signant en format PEM, com en l’opció-CA

de la comandax509 (§ 5.3.1).

En aquest cas la comanda llegeix la clau privada del signant (demanant lapass phraseper desxifrar-la, si estàprotegida), llegeix dades de l’entrada estàndard (que haurien de ser una part de missatge MIME, amb la sevacapçalera i el seu cos), genera un missatge S/MIME signat amb aquestes dades en clar (“detached”), i escriu elmissatge per la sortida estàndard.

(Com que la comanda necessita llegir dues vegades les dades a signar, l’entrada estàndard ha de ser un fitxerd’accés no seqüencial, és a dir, no pot ser un terminal o unapipe.)

Per generar un missatge S/MIME signat i xifrat s’han de seguir dos passos: primer cridar la comandasmime persignar (o xifrar) el missatge, i després utilitzar el resultat com a entrada de la pròpia comandasmime per xifrar (osignar). (Si volem fer això mitjançant unapipe, el primer pas ha de ser la signatura i el segon el xifratge, pel que s’hacomentat abans.)

Quan s’usa per generar un missatge amb-encrypt o -sign , la comandasmime admet aquestes altres opcions:

-in FITXER_ENTRADA

Indica que les dades s’han de llegir de fitxer, en lloc de l’entrada estàndard.

-out FITXER_SORTIDA

Indica que el resultat s’ha d’escriure a fitxer, en lloc de la sortida estàndard.

-text

Indica que les dades d’entrada no tenen format MIME sinó que són un text arbitrari. El que fa aquesta opció éssimplement afegir una capçalera “Content-Type:” a les dades per indicar que són de tipus text.

Page 23: OpenSSL

7. Missatges S/MIME 23

-binary

Indica que les dades d’entrada són dades binàries arbitràries i no s’han de convertir a forma canònica (és a dir,representant els finals de línia amb CR–LF).

-to CADENA

Indica que el missatge generat inclogui una capçalera “To:” igual aCADENA.

-from CADENA

Indica que el missatge generat inclogui una capçalera “From:” igual aCADENA.

-subject CADENA

Indica que el missatge generat inclogui una capçalera “Subject:” igual aCADENA.

Les següents opcions són específiques de la generació de missatges xifrats (smime -encrypt ):

-des | -des3 | -rc2-40 | -rc2-64 | -rc2-128 | -aes128 | -aes192 | -aes256

Indica l’algorisme de xifratge simètric a utilitzar (per defecte-rc2-40 ).

També es pot especificar l’opció-rand , equivalent a la de la comandagenrsa (§ 4.1).

Les següents opcions són específiques de la generació de missatges signats (smime -sign ):

-inkey FITXER_CLAU_PRIVADA

Indica en quin fitxer es troba la clau privada del signant, en cas que no estigui en el mateix fitxer que el certificatdonat per l’opció-signer .

-keyform DER

Indica que la clau privada del signant està en format DER, en comptes de PEM.

-passin pass: . . . | -passin env: . . . | -passin file: . . . | -passin stdin

Permet especificar lapass phraseper llegir la clau privada del signant, amb la mateixa sintaxi que les opcions-pass de les comandes de xifratge simètric (§2.2).

-nodetach

Indica que el missatge signat tingui les dades incloses (“attached”), és a dir, que no usi el format de dadessignades en clar.

-certfile FITXER_CERTS

Indica que la signatura PKCS #7 inclogui el certificat o certificats que hi ha al fitxerFITXER_CERTSenformat PEM. Això és útil per incloure una cadena de certificats en el missatge signat (es pot especificar l’opció-certfile tantes vegades com calgui).

-nocerts

Indica que la signatura PKCS #7 generada no inclogui cap certificat (ni el del signant).

-noattr

Indica que la signatura PKCS #7 generada no inclogui atributs autenticats (que típicament són la data de signa-tura i els algorismes de xifratge suportats).

Page 24: OpenSSL

7. Missatges S/MIME 24

7.2 Lectura de missatges S/MIME amb la comandasmime

A l’hora de llegir un missatge S/MIME, la comandasmime permet desxifrar-lo si és un missatge xifrat, o verificarla seva signatura si és un missatge signat. També és possible extreure les dades PKCS #7 que hi ha dins el missatgeS/MIME. Per fer aquestes operacions s’ha d’utilitzar una de les següents opcions:

-decrypt

Desxifrar un missatge xifrat. Quan s’usa aquesta opció cal especificar aquesta altra:

-recip FITXER_CERT

Aquest fitxer ha de contenir el certificat i la clau privada d’un dels destinataris del missatge en formatPEM, com en l’opció-CA de la comandax509 (§ 5.3.1).

En aquest cas la comanda llegeix la clau privada del destinatari (demanant lapass phraseper desxifrar-la, siestà protegida), llegeix de l’entrada estàndard un missatge S/MIME xifrat, el desxifra aplicant la clau de sessióobtinguda mitjançant la clau privada, i escriu el resultat per la sortida estàndard.

-verify

Verificar la signatura d’un missatge signat. La comanda llegeix de l’entrada estàndard un missatge S/MIMEsignat, comprova que hi hagi una signatura vàlida i, si no hi ha error, escriu les dades signades per la sortidaestàndard, tant si són dades incloses (“attached”) com no incloses (“detached”).

-pk7out

Escriure per la sortida estàndard, en format PEM, les dades PKCS #7 del missatge S/MIME llegit de l’entradaestàndard. El resultat obtingut pot ser processat amb la comandapkcs7 (§ 7.3).

Quan s’usa per llegir un missatge amb-decrypt , -verify o -pk7out , la comandasmime també admet lesopcions-in i -out , com en el cas de la generació de missatges S/MIME (§7.1).

Les següents opcions són específiques del desxifratge de missatges xifrats (smime -decrypt ):

-inkey FITXER_CLAU_PRIVADA

Indica en quin fitxer es troba la clau privada del destinatari, en cas que no estigui en el mateix fitxer que elcertificat donat per l’opció-recip .

-keyform DER

Indica que la clau privada del destinatari està en format DER, en comptes de PEM.

-passin pass: . . . | -passin env: . . . | -passin file: . . . | -passin stdin

Permet especificar lapass phraseper llegir la clau privada del destinatari, amb la mateixa sintaxi que les opcions-pass de les comandes de xifratge simètric (§2.2).

Les següents opcions són específiques de la verificació de missatges signats (smime -verify ):

-certfile FITXER_CERTS

Indica un fitxer que conté un o més certificats addicionals en format PEM a utilitzar en la verificació, en casque no estiguin inclosos en la signatura PKCS #7 del missatge. Es pot especificar l’opció-certfile diversesvegades, per afegir tants certificats com calgui a la cadena de verificació.

-nointern

Indica que en la verificació s’utilitzin només els certificats especificats amb l’opció-certfile , ignorant elsque hi hagi dins la signatura PKCS #7.

Page 25: OpenSSL

7. Missatges S/MIME 25

-CAfile FITXER_CERT_CA

Indica un certificat que ha de ser considerat com a certificat de CA de confiança (no cal continuar verificant méscertificats de la cadena).

-CApath DIR_CERTS_CA

Indica un directori que conté certificats de CA de confiança, amb noms de fitxer com els que espera la comandaverify (§ 5.5) quan s’usa amb l’opció-CApath .

-content FITXER

Si la signatura PKCS #7 té les dades no incloses (“detached”), aquesta opció indica que les dades signadesestan al fitxerFITXER (el contingut del missatge S/MIME, si en té, serà ignorat).

-signer FITXER_CERTS_SORTIDA

Indica un fitxer on s’escriuran, en format PEM, els certificats dels signants si la verificació és correcta.

7.3 Processament de dades PKCS #7: la comandapkcs7

La comandapkcs7 del shell openssl permet processar dades PKCS #7. Quan es crida sense opcions, aquestacomanda realitza les següents accions:

1. Llegeix de l’entrada estàndard una estructura de dades PKCS #7 en format PEM.

2. Escriu per la sortida estàndard l’estructura de dades PKCS #7 llegida, en format PEM.

La comandapkcs7 admet les següents opcions:

-in FITXER_ENTRADA

Indica que les dades PKCS #7 s’han de llegir de fitxer, en lloc de l’entrada estàndard.

-inform DER

Indica que les dades PKCS #7 d’entrada estan en format DER en comptes de PEM.

-out FITXER_SORTIDA

Indica que les dades PKCS #7 s’han d’escriure a fitxer, en lloc de la sortida estàndard.

-outform DER

Indica que les dades PKCS #7 s’escriguin en format DER, en comptes de PEM.

-print_certs

Indica que no escrigui l’estructura de dades PKCS #7 sencera per la sortida estàndard sinó que, si les dades sónde tipusSignedData o SignedAndEnvelopedData , escrigui el DN del titular i l’emissor de cada certi-ficat del campcertificates juntament amb el certificat corresponent en format PEM, i una representacióllegible de cada CRL del campcrls juntament amb la CRL corresponent en format PEM.

-text

Quan s’usa l’opció-print_certs , indica que escrigui una representació llegible de cada certificat en comp-tes de només el DN del titular i l’emissor.

-noout

Indica que no escrigui les dades PKCS #7 o, quan s’usa l’opció-print_certs , que no escrigui els certificatsi les CRL en format PEM.

Page 26: OpenSSL

8. Fitxers PKCS #12 26

7.4 Creació d’estructures PKCS #7 amb només certificats i/o CRL: la comandacrl2pkcs

La comandacrl2pkcs delshellopenssl permet crear estructures de dades PKCS #7 que serveixen de contenidorde certificats i/o CRL, és a dir, estructures del tipusSignedData sense dades signades (campcontent ) ni signa-tures (campsignerInfos ), i que per tant només tenen informació en els campscertificates i/o crls . Quanes crida sense opcions, la comandacrl2pkcs realitza les següents accions:

1. Llegeix de l’entrada estàndard una CRL en format PEM.

2. Escriu per la sortida estàndard una estructura de dades PKCS #7 en format PEM, de tipusSignedData , quesimplement conté en el seu campcrls la CRL llegida.

La comandacrl2pkcs admet les següents opcions:

-in FITXER_ENTRADA

Indica que la CRL s’ha de llegir de fitxer, en lloc de l’entrada estàndard.

-inform DER

Indica que la CRL d’entrada està en format DER en comptes de PEM.

-out FITXER_SORTIDA

Indica que l’estructura de dades PKCS #7 s’ha d’escriure a fitxer, en lloc de la sortida estàndard.

-outform DER

Indica que l’estructura de dades PKCS #7 s’escrigui en format DER, en comptes de PEM.

-certfile FITXER_CERTS

Indica que l’estructura de dades PKCS #7 inclogui en el seu campcertificates el certificat o certificatsque hi ha al fitxerFITXER_CERTSen format PEM. Es pot especificar l’opció-certfile diverses vegades,per incloure tants certificats com es vulgui en l’estructura PKCS #7.

-nocrl

Indica que no llegeixi cap CRL de l’entrada estàndard, i que per tant el campcrls de l’estructura PKCS #7generada estigui buit (l’estructura només contindrà els certificats especificats amb l’opció-certfile , si n’hiha).

8 Fitxers PKCS #12

El shellopenssl proporciona la comandapkcs12 per crear i processar fitxers PKCS #12 que contenen informaciód’identificació personal: claus privades, certificats, CRL, etc.

8.1 Generació de fitxers PKCS #12: la comandapkcs12 -export

La comandapkcs12 , quan se li passa l’opció-export , realitza les següents accions:

1. Llegeix de l’entrada estàndard una clau privada (demanant lapass phraseper desxifrar-la, si està protegida), iun o més certificats, tot en format PEM.

2. Comprova que almenys un dels certificats llegits correspongui a la clau privada, és a dir, que sigui el certificatd’usuari (a aquest certificat i a la clau privada se’ls assignarà automàticament un atribut“local key identifier”en el fitxer PKCS #12).

Page 27: OpenSSL

8. Fitxers PKCS #12 27

3. Demana una “contrasenya d’exportació” (dues vegades, per verificar), a partir de la qual s’obtenen les claus ques’utilitzaran per protegir el fitxer PKCS #12 generat. La protecció consisteix en proporcionar confidencialitatmitjançant xifratge simètric, i autenticitat mitjançant un codi MAC.

4. Escriu per la sortida estàndard un fitxer PKCS #12 que conté la clau privada i els certificats llegits, protegit ambla contrasenya d’exportació.

A l’hora de generar un fitxer PKCS #12 ambpkcs12 -export també es poden usar aquestes opcions:

-in FITXER_ENTRADA

Indica que les dades d’entrada (clau privada i certificats) s’han de llegir de fitxer, en lloc de l’entrada estàndard.

-inkey FITXER_CLAU_PRIVADA

Indica que la clau privada s’ha de llegir del fitxerFITXER_CLAU_PRIVADA, en comptes de l’entrada estàndardo el fitxer indicat per l’opció-in .

-certfile FITXER_CERTS

Indica que, a més dels certificats llegits de l’entrada estàndard (o del fitxer indicat per l’opció-in ), afegeixitambé al fitxer PKCS #12 els certificats que hi ha al fitxerFITXER_CERTS.

-chain

Indica que s’afegeixin al fitxer PKCS #12 els certificats de la cadena de certificació necessaris per verificar elcertificat d’usuari.

-CAfile FITXER_CERT_CA

Quan s’usa l’opció-chain , indica en quin fitxer es pot trobar el certificat o certificats de CA per a la cadenade certificació, com l’opció-CAfile de la comandaverify (§ 5.5).

-CApath DIR_CERTS_CA

Quan s’usa l’opció-chain , indica un directori que conté certificats de CA per a la cadena de certificació, coml’opció -CApath de la comandaverify (§ 5.5).

-name NOM

Indica que la clau privada i el certificat d’usuari tinguin associat un atribut“friendly name” igual aNOMen elfitxer PKCS #12 generat.

-caname NOM

Indica que el certificat de CA (és a dir, diferent del d’usuari) tingui associat un atribut“friendly name” igual aNOMen el fitxer PKCS #12 generat. Es pot especificar l’opció-caname diverses vegades, si hi ha més d’uncertificat de CA (els noms s’associen als certificats per ordre d’aparició).

-out FITXER_SORTIDA

Indica que les dades generades (estructura PKCS #12) s’han d’escriure a fitxer, en lloc de la sortida estàndard.

-twopass

Indica que demani dues contrasenyes diferents per a la protecció del fitxer PKCS #12 (dues vegades cadascuna,per verificar): primer una contrasenya per obtenir la clau del codi MAC, i després la contrasenya d’exportació,que en aquest cas s’usa només per obtenir la clau de xifratge. Sense aquesta opció, la mateixa contrasenyad’exportació s’usa per obtenir totes dues claus (la de xifratge i la del codi MAC).

-passout pass: . . . | -passout env: . . . | -passout file: . . . | -passout stdin

Permet especificar la contrasenya d’exportació amb què es protegirà el fitxer PKCS #12 (tant per al xifratge comper al codi MAC), amb la mateixa sintaxi que les opcions-pass de les comandes de xifratge simètric (§2.2).

Page 28: OpenSSL

8. Fitxers PKCS #12 28

-password pass: . . . | -password env: . . . | -password file: . . . | -password stdin

Quan s’usa amb l’opció-export , l’opció -password és equivalent a-passout .

-keypbe ALGORISME

Indica la combinació d’algorismes a usar per xifrar la clau privada i per obtenir la clau de xifratge a partir de lacontrasenya. Per defecte s’usa la combinació d’algorismes “pbeWithSHA1And3-KeyTripleDES-CBC ”(que equival al nom abreujat “PBE-SHA1-3DES”).

-certpbe ALGORISME

Igual que -keypbe , però per al xifratge dels certificats. Per defecte s’usa la combinació d’algorismes“pbeWithSHA1And40BitRC2-CBC ” (que equival al nom abreujat “PBE-SHA1-RC2-40 ”).

-descert

Equival a “-certpbe pbeWithSHA1And3-KeyTripleDES-CBC ” (el mateix algorisme que s’usa perdefecte en el xifratge de la clau privada).

També es pot especificar l’opció-rand , equivalent a la de la comandagenrsa (§ 4.1).

8.2 Processament de fitxers PKCS #12 amb la comandapkcs12

Quan es crida sense cap opció (i en particular sense l’opció-export ), la comandapkcs12 realitza les següentsaccions:

1. Llegeix de l’entrada estàndard un fitxer PKCS #12.

2. Demana la “contrasenya d’importació”, és a dir, la contrasenya que es va usar com a contrasenya d’exportacióper protegir el fitxer PKCS #12.

3. A partir de la contrasenya comprova l’autenticitat del fitxer PKCS #12 mitjançant el codi MAC, i escriu elresultat de la comprovació.

4. Si la contrasenya és correcta (és a dir, si la comprovació d’autenticitat no ha donat error), l’usa per desxifrar elselements xifrats del fitxer PKCS #12: claus privades, certificats, etc.

5. Per a cada element del fitxer PKCS #12:

• Si és una clau privada, escriu els atributs que té associats en el fitxer PKCS #12, demana unapass phraseper protegir-la (dues vegades, per verificar), i escriu per la sortida estàndard la clau privada en format PEM,protegida mitjançant lapass phrase.

• Si és un certificat, escriu per la sortida estàndard els atributs que té associats en el fitxer PKCS #12, el DNdel titular i l’emissor, i el propi certificat en format PEM.

En aquest mode d’ús, la comandapkcs12 també admet algunes de les opcions per a la generació de fitxers PKCS #12(§ 8.1), com-in , -out i -twopass , i també aquestes altres:

-passin pass: . . . | -passin env: . . . | -passin file: . . . | -passin stdin

Permet especificar la contrasenya d’importació amb què està protegit el fitxer PKCS #12 (tant per al desxifratgecom per al codi MAC), amb la mateixa sintaxi que les opcions-pass de les comandes de xifratge simètric(§ 2.2).

-password pass: . . . | -password env: . . . | -password file: . . . | -password stdin

Quan s’usa sense l’opció-export , l’opció -password és equivalent a-passin .

Page 29: OpenSSL

9. El protocol SSL/TLS 29

-nomacver

Indica que se salti la comprovació d’autenticitat, és a dir, que no verifiqui el codi MAC.

-des | -des3 | -idea | -aes128 | -aes192 | -aes256

Indica l’algorisme de xifratge simètric a utilitzar per protegir les claus privades (per defecte-des3 ).

-nodes

Indica que les claus privades s’escriguin sense cap protecció (és a dir, sense xifrar-les).

-nokeys

Indica que desxifri les claus privades però no escrigui la informació sobre elles.

-nocerts

Indica que desxifri els certificats però no escrigui la informació sobre ells.

-noout

Equival a especificar-nokeys i -nocerts alhora.

-clcerts

Indica que escrigui la informació sobre els certificats “de client” (és a dir, d’usuari), però no sobre els certificatsde CA (es considera que un certificat és de client si té associat un atribut“local key identifier” en el fitxerPKCS #12).

-cacerts

Indica que escrigui la informació sobre els certificats de CA, però no sobre els certificats “de client”.

-info

Indica que escrigui informació addicional sobre l’estructura PKCS #12: tipus de sub-estructures que conté,algorisme de xifratge de cadascuna, nombre d’iteracions dels algorismes de MAC i de càlcul de claus a partirde la contrasenya, etc.

9 El protocol SSL/TLS

9.1 Servidor SSL/TLS genèric: la comandas_server

El shellopenssl proporciona la comandas_server que implementa un servidor basat en el protocol SSL/TLS.Quan es crida sense opcions, aquesta comanda realitza les següents accions:

1. Llegeix del fitxerserver.pem el certificat del servidor i la seva clau privada en format PEM (demanant lapass phraseper desxifrar-la, si està protegida), com en l’opció-CA de la comandax509 (§ 5.3.1).

2. Entra en el bucle del servidor, que comprèn els següents passos:

(a) Escriu “ACCEPT” per la sortida estàndard i es queda escoltant peticions de connexió TCP pel port 4433.

(b) Quan arriba una petició de connexió d’un client, realitza la negociació SSL/TLS. Si la negociació éscorrecta, escriu per la sortida estàndard els paràmetres de la sessió en format PEM, les dades del certificatde client si n’hi ha, la llista de jocs d’algorismes criptogràfics comuns a client i servidor, el joc que haescollit el servidor, i si s’està reutilitzant una sessió anterior. (Elshell openssl proporciona una altracomanda,sess_id , que amb l’opció-text permet obtenir una representació llegible dels paràmetresde la sessió a partir del format PEM.)

Page 30: OpenSSL

9. El protocol SSL/TLS 30

(c) Un cop establerta la connexió SSL/TLS, les dades que arribin del client per aquesta connexió s’escriuenper la sortida estàndard en clar, i les dades que es llegeixin de l’entrada estàndard són enviades al clientper la connexió SSL/TLS.

(d) Quan no hi ha més dades per llegir, escriu “DONE” per la sortida estàndard, tanca la connexió, i escriu“CONNECTION CLOSED” per la sortida estàndard. Si on s’han acabat les dades és a l’entrada estàndard(final de fitxer), surt del bucle del servidor. Si on s’han acabat les dades és a la connexió SSL/TLS (perquèl’ha tancat el client), torna al començament del bucle.

3. Acabat el bucle del servidor, escriu per la sortida estàndard un resum estadístic de les connexions rebudes, i surt.

Mentre hi ha una connexió SSL/TLS establerta amb un client, per l’entrada estàndard es poden introduir les següentslínies que seran interpretades com a comandes:

• Una línia que comenci per “Q” indica que s’acabi el bucle del servidor (com si hi hagués un final de fitxer al’entrada estàndard).

• Una línia que comenci per “q” indica que s’acabi la connexió actual i torni a començar el bucle del servidor.

• Una línia igual a “r ” indica que es faci una renegociació de la sessió actual.

• Una línia igual a “R” indica que es faci una renegociació de la sessió actual, demanant un certificat al client pera la seva autenticació (com si s’hagués especificat l’opció-verify amb valor per defecte igual a 0).

• Una línia que comenci per “S” indica que s’escrigui per la sortida estàndard un resum estadístic de les connexi-ons que hi ha hagut fins ara.

• Una línia que comenci per “P” indica que s’enviï al client una cadena de caràcters en clar, que hauria de provocarun error del protocol.

La comandas_server admet les següents opcions:

-cert FITXER_CERT

Indica el fitxer d’on s’ha de llegir el certificat del servidor, en comptes del fitxer per defecteserver.pem .

-key FITXER_CLAU_PRIVADA

Indica el fitxer d’on s’ha de llegir la clau privada, en comptes del mateix fitxer on hi ha el certificat.

-dcert FITXER_CERT

Si en la negociació SSL/TLS es poden usar algorismes d’autenticació basats en diferents tipus de certificats,aquesta opció permet especificar un certificat de servidor de tipus diferent al de l’opció-cert (p. ex., l’opció-cert pot especificar un certificat RSA i l’opció-dcert un certificat DSS).

-dkey FITXER_CLAU_PRIVADA

Indica el fitxer d’on s’ha de llegir la clau privada corresponent al certificat de l’opció-dcert (per defecte laclau privada es llegeix del mateix fitxer on hi ha aquest certificat).

-nocert

Indica que el servidor no s’autentiqui davant el client, i per tant no utilitzi cap certificat ni clau privada. Enaquest cas es durà a terme un intercanvi de claus anònim (amb el qual el client no podrà saber si és víctima d’unatac del tipus“man-in-the-middle”).

-accept PORT| -port PORT

Indica que el servidor escolti pel port TCPPORT, en comptes del 4433 (es pot expressar numèricament, p. ex.“443 ”, o amb un nom de servei, p. ex. “https ”).

Page 31: OpenSSL

9. El protocol SSL/TLS 31

-ssl2 | -ssl3 | -tls1

Indica que les connexions s’estableixin seguint únicament el protocol SSL 2.0, SSL 3.0 o TLS 1.0, respectiva-ment (per defecte, el servidor admet connexions amb tots tres protocols).

-no_ssl2

Indica que el servidor no utilitzi el protocol SSL 2.0.

-no_ssl3

Indica que el servidor no utilitzi el protocol SSL 3.0.

-no_tls1

Indica que el servidor no utilitzi el protocol TLS 1.0.

-cipher ALGORISMES_1: ALGORISMES_2: . . .

Indica els jocs d’algorismes criptogràfics que pot usar el servidor (en la negociació SSL/TLS, el servidor escullper defecte el primer joc de la llista del client que també sigui suportat pel servidor). Cada joc està formatper 4 algorismes: d’intercanvi de claus de sessió, d’autenticació d’entitat, de xifratge, i de MAC. Dels jocsespecificats amb aquesta opció, només seran tinguts en compte els que suporti la versió de la llibreria OpenSSLque s’estigui utilitzant (i, en el cas d’algorismes que necessitin un cert tipus de certificat o clau pública, elscorresponents als certificats o claus públiques disponibles).

El valor d’aquesta opció té el mateix format que l’argument de la comandaciphers (§ 10.2).

-serverpref

Indica que el servidor no esculli el primer joc d’algorismes de la llista del client que també sigui suportat pelservidor, sinó el primer per ordre de preferència del servidor que també estigui en la llista del client.

-dhparam FITXER_PARAM_DH

Si per a l’intercanvi de claus de sessió s’utilitza l’algorisme de Diffie-Hellman “efímer” (amb parells de claustemporals generatsad hoc), aquesta opció indica que en el fitxerFITXER_PARAM_DH, generat per exempleamb la comandadhparam (§ 4.5), hi ha els paràmetres per generar els parells de claus (per defecte es busquenels paràmetres en el mateix fitxer del certificat del servidor, i si no n’hi ha, s’usen uns paràmetres predefinits).

-no_dhe

Indica que per a l’intercanvi de claus de sessió no s’utilitzi l’algorisme de Diffie-Hellman “efímer”.

-no_tmp_rsa

En certs casos (quan s’usen jocs d’algorismes “exportables”, és a dir, amb pocs bits de clau, i el servidor té unaclau RSA amb més bits) l’intercanvi de claus de sessió pot fer-se amb claus RSA temporals generadesad hoc(signades amb la clau RSA del servidor). L’opció-no_tmp_rsa fa que no s’utilitzin claus RSA temporals.

-verify NIVELL_MAX

Indica que en la negociació SSL/TLS el servidor demani un certificat al client per a la seva autenticació. Siel client respon amb un certificat, el servidor el verifica i escriu el resultat per la sortida d’error estàndard, isi la verificació dóna error o necessita una cadena de més deNIVELL_MAX certificats, el servidor consideraràinvàlida l’autenticació del client i tancarà la connexió. Si per contra el client no envia cap certificat, la negociaciócontinuarà sense autenticació de client.

-Verify NIVELL_MAX

Aquesta opció és equivalent a-verify , però amb autenticació de client obligatòria. Per tant, si el client noenvia cap certificat el servidor també donarà error d’autenticació i tancarà la connexió.

Page 32: OpenSSL

9. El protocol SSL/TLS 32

-CAfile FITXER_CERT_CA

Indica en quin fitxer es pot trobar el certificat o certificats de CA per a les cadenes de certificació, com l’opció-CAfile de la comandaverify (§ 5.5). Aquests certificats tenen tres finalitats:

• Serveixen, si fan falta, per construir la cadena de certificació del servidor que s’enviarà al client.

• Si s’usa l’opció-verify o -Verify , els DN d’aquests certificats s’enviaran en la petició de certificatde client com a llista de CA acceptables pel servidor.

• També si s’usa l’opció-verify o -Verify , serveixen per verificar el certificat del client.

-CApath DIR_CERTS_CA

Indica un directori que conté certificats de CA per a les cadenes de certificació, com l’opció-CApath de lacomandaverify (§ 5.5). Els certificats d’aquest directori s’afegeixen als especificats per l’opció-CAfile

per a dues finalitats:

• Per construir la cadena de certificació del servidor que s’enviarà al client.

• Si s’usa l’opció-verify o -Verify , per verificar el certificat del client.

-crlf

Indica que els caràcters LF (ASCII 10) llegits a l’entrada estàndard siguin enviats al client com a seqüènciesCR–LF (ASCII 13–10), d’acord amb l’especificació del protocol TELNET.

-www

Indica que el servidor no enviï al client les dades llegides de l’entrada estàndard, sinó que actuï com un servidorHTTPS que simplement retorna informació sobre les connexions SSL/TLS. El bucle del servidor queda llavorsmodificat de la següent manera:

• Quan es connecta un client, després de la negociació SSL/TLS el servidor espera rebre una petició HTTP,és a dir, una línia que comenci per “GET . . .” (el contingut de la resta de la línia és irrellevant).

• El servidor envia al client una resposta HTTP que conté una pàgina HTML amb la següent informació: lalínia de comanda amb què s’ha arrencat el servidor, la llista de jocs d’algorismes criptogràfics suportatspel servidor, els jocs comuns a client i servidor, la versió del protocol i el joc d’algorismes en ús, unarepresentació llegible dels paràmetres de la sessió, el resum estadístic de les connexions rebudes fins arapel servidor, i el certificat del client, si n’hi ha (en forma textual i en format PEM).

• Un cop enviada la resposta al client, el servidor tanca la connexió i torna al començament del bucle.

-WWW

Indica que el servidor no enviï al client les dades llegides de l’entrada estàndard, sinó que actuï com un senzillservidor HTTPS que retorna fitxers estàtics. El bucle del servidor queda llavors modificat de la següent manera:

• Quan es connecta un client, després de la negociació SSL/TLS el servidor espera rebre una petició HTTP,és a dir, una línia que comenci per “GET /fitxer . . .” (el contingut de la resta de la línia és irrellevant).

• El servidor comprova que el nom de fitxer demanat no tingui components “.. ” i busca un fitxer ambaquest nom a partir del directori actual. Si el troba, escriu el nom per la sortida estàndard i envia al clientuna resposta HTTP, amb una capçalera que indica el tipus de contingut (HTML si el nom del fitxer acabaen .html , .htm o .php , o text per defecte), i amb el contingut del fitxer en el cos. Com a cas especial,si el nom del fitxer demanat és/stats el servidor envia la mateixa resposta que amb l’opció-www.

• Un cop enviada la resposta al client, el servidor tanca la connexió i torna al començament del bucle.

-HTTP

Aquesta opció és equivalent a-WWW, però sense que el servidor generi la capçalera HTTP (per tant, el propifitxer hauria de contenir aquesta capçalera al començament), i sense tractar el nom/stats com a cas especial.

Page 33: OpenSSL

9. El protocol SSL/TLS 33

-state

Indica que escrigui per la sortida d’error estàndard els estats pels quals van passant els autòmats que gestionenla negociació i els missatges d’alerta i error del protocol SSL/TLS.

-msg

Indica que escrigui per la sortida estàndard, en hexadecimal, el contingut en clar dels missatges de negociació,de canvi de xifratge i d’alerta del protocol SSL/TLS.

-debug

Indica que escrigui per la sortida estàndard, en hexadecimal, el contingut de tots els paquets enviats i rebuts pelservidor.

-quiet

Indica que no escrigui la informació sobre les connexions que per defecte escriu a la sortida estàndard (tret ques’usi també l’opció-msg o -debug ). Si no s’usen les opcions-www, -WWWo -HTTP, el servidor hi escriurànomés les dades que rebi del client, i li enviarà tot el que llegeixi de l’entrada estàndard (incloent les líniescorresponents a comandes).

També es pot especificar l’opció-rand , equivalent a la de la comandagenrsa (§ 4.1).

9.2 Client SSL/TLS genèric: la comandas_client

El shell openssl també proporciona la comandas_client que implementa un client SSL/TLS. Quan es cridasense opcions, aquesta comanda realitza les següents accions:

1. Inicia una connexió TCP al port 4433 del servidorlocalhost (és a dir, a l’adreça deloopback127.0.0.1), i siaconsegueix establir la connexió escriu “CONNECTED” per la sortida estàndard.

2. Després de connectar-se amb el servidor, realitza la negociació SSL/TLS. Si la negociació és correcta, verificael certificat del servidor, si n’hi ha, i escriu el resultat (la connexió continua encara que la verificació doni error),i a continuació escriu per la sortida estàndard la següent informació: els DN dels titulars i emissors de la cadenade certificats que ha enviat el servidor, el certificat del servidor en format PEM i el DN del seu titular i del seuemissor, els DN de les CA acceptables pel servidor per a la verificació del client, la llista de jocs d’algorismescriptogràfics comuns a client i servidor (si el servidor ha enviat una llista, és a dir, només en SSLv2), quantsbytes s’han transmès en la negociació, altres informacions sobre la connexió SSL/TLS (si la sessió és nova orepresa, la versió del protocol, el joc d’algorismes en ús i la longitud de la clau pública del servidor), i unarepresentació llegible dels paràmetres de la sessió.

3. Un cop establerta la connexió SSL/TLS, les dades que arribin del servidor per aquesta connexió s’escriuen perla sortida estàndard en clar, i les dades que es llegeixin de l’entrada estàndard són enviades al servidor per laconnexió SSL/TLS.

4. Quan no hi ha més dades per llegir de l’entrada estàndard (final de fitxer), escriu “DONE” per la sortida d’errorestàndard i tanca la connexió.

Mentre hi ha una connexió SSL/TLS establerta amb el servidor, per l’entrada estàndard es poden introduir les següentslínies que seran interpretades com a comandes:

• Una línia que comenci per “Q” indica que s’acabi la connexió amb el servidor (com si hi hagués un final defitxer a l’entrada estàndard).

• Una línia que comenci per “R” indica que es faci una renegociació de la sessió actual.

Page 34: OpenSSL

9. El protocol SSL/TLS 34

La comandas_client admet les següents opcions:

-connect SERVIDOR: PORT

Indica que es connecti al port TCPPORTdel servidorSERVIDOR, en comptes del port 4433 del servidorlocalhost (tant el servidor com el port es poden expressar numèricament, p. ex. “195.27.176.155 ” o“443 ”, o amb un nom, p. ex. “www.openssl.org ” o “ https ”).

-verify NIVELL_MAX

Indica que no continuï la negociació si el servidor envia el seu certificat (autenticació no anònima) i la verificaciód’aquest certificat dóna error o necessita una cadena de més deNIVELL_MAX certificats.

-cert FITXER_CERT

Indica el fitxer on hi ha el certificat del client, i opcionalment la clau privada corresponent, en format PEM.Aquest certificat s’utilitzarà si el servidor el demana per a l’autenticació de client.

-key FITXER_CLAU_PRIVADA

Indica el fitxer d’on s’ha de llegir la clau privada del client, en format PEM, si no està en el mateix fitxer que elcertificat.

-CAfile FITXER_CERT_CA

Indica en quin fitxer es pot trobar el certificat o certificats de CA per a les cadenes de certificació, com l’opció-CAfile de la comandaverify (§ 5.5). Aquests certificats tenen dues finalitats:

• Serveixen per verificar el certificat del servidor.

• Si es realitza autenticació de client, serveixen, si fan falta, per construir la cadena de certificació del clientque s’enviarà al servidor.

-CApath DIR_CERTS_CA

Indica un directori que conté certificats de CA per a les cadenes de certificació, com l’opció-CApath de lacomandaverify (§ 5.5). Els certificats d’aquest directori s’afegeixen als especificats per l’opció-CAfile .

-showcerts

Indica que, en la fase de negociació, no mostri només els titulars i emissors de la cadena de certificats delservidor, sinó que escrigui tots els certificats sencers en format PEM.

-serverpref

Si en la negociació inicial el servidor envia una llista de jocs d’algorismes criptogràfics (és a dir, només enSSLv2), aquesta opció indica que el client no esculli el primer joc de la seva pròpia llista que també estigui enla llista del servidor (el criteri per defecte), sinó el primer de la llista del servidor que també estigui en la sevapròpia llista.

-reconnect

Aquesta és una opció de prova que fa que, després d’establerta la connexió SSL/TLS, la tanqui i la torni aestablir 5 vegades (fent servir el mateix identificador de sessió) abans de començar la transferència de dadesentre client i servidor.

-starttls PROTOCOL_APLIC

Indica que no comenci directament la negociació SSL/TLS un cop establerta la connexió, sinó que assumeixique s’ha connectat a un servidor del protocolPROTOCOL_APLIC(comsmtp o pop3 ) i li enviï la comandaprevista en aquest protocol per sol·licitar l’inici de la negociació SSL/TLS.

Page 35: OpenSSL

10. Altres comandes OpenSSL 35

-ign_eof

Indica que no tanqui la connexió quan trobi un final de fitxer a l’entrada, i que tracti les línies corresponents acomandes (les que comencen per “Q” o “ R”) com qualsevol altra.

-quiet

Indica que no escrigui la informació sobre les connexions que per defecte escriu a la sortida estàndard (tret ques’usi també l’opció-msg o -debug ). A més, aquesta opció té també els efectes de l’opció-ign_eof .

-prexit

Indica que també escrigui la informació sobre la connexió (certificats, paràmetres de sessió, etc.) després detancar-la. Aquesta informació es mostrarà encara que hagi fallat la negociació, i pot servir per trobar la causa del’error.

A més, la comandas_client admet les opcions-ssl2 , -ssl3 , -tls1 , -no_ssl2 , -no_ssl3 , -no_tls1 ,-cipher , -crlf , -state , -msg i -debug , equivalents a les de la comandas_server (§ 9.1).

També es pot especificar l’opció-rand , equivalent a la de la comandagenrsa (§ 4.1).

10 Altres comandes OpenSSL

El shellopenssl proporciona una sèrie de comandes addicionals, entre les quals es troben les següents:version ,ciphers , speed , s_time i pkcs8 .

10.1 Versió de la llibreria: la comandaversion

La comandaversion escriu per la sortida estàndard la versió de la llibreria OpenSSL que s’està utilitzant. Perexemple:

OpenSSL 0.9.7b 10 Apr 2003

Aquesta comanda també admet les següents opcions:-d per obtenir el directori on es busquen per defecte certs fitxersauxiliars, com el fitxer de configuració (§5.1) o els certificats per a les cadenes de certificació que fan servir per defectecomandes comverify (§ 5.5), -b per obtenir la data de compilació,-p per obtenir la plataforma de compilació,-f per obtenir la línia de comanda amb què es va compilar cada mòdul (compilador i opcions),-o per obtenir lesopcions de configuració de certs mòduls criptogràfics,-v per obtenir la versió (igual que si es crida la comanda sensecap opció), i-a per obtenir tota la informació anterior.

10.2 Llista d’algorismes criptogràfics: la comandaciphers

Quan es crida sense cap opció ni argument, la comandaciphers escriu una llista ordenada (per ordre de preferència)dels jocs d’algorismes criptogràfics que la llibreria OpenSSL pot utilitzar per defecte en les connexions SSLv2/v3,com les que fan servir les comandess_server (§ 9.1) i s_client (§ 9.2). Si s’usen les opcions-ssl2 , -ssl3

o -tls1 , la llista serà la corresponent a les connexions SSLv2, SSLv3 o TLS, respectivament.

Cada joc està format per un algorisme d’intercanvi de claus (DHo, per defecte,RSA), un algorisme de signatura per al’autenticació (DSSo RSA, per defecte aquest últim si l’intercanvi de claus també ésRSA), un algorisme de xifratgesimètric (DES-CBC, DES-CBC3, RC2-CBC, RC4, IDEA-CBC, AES128, AES256, etc.), i un algorisme dehashperal codi MAC (MD5o SHA), amb el prefix opcionalEXPsi s’usa una versió “exportable” dels algorismes (amb pocsbits de clau).

Page 36: OpenSSL

10. Altres comandes OpenSSL 36

A la comandaciphers també se li pot passar, com a últim argument de la línia de comanda, una especificació de jocsd’algorismes. Llavors la comanda farà servir aquesta especificació per generar la llista. El format de l’especificacióconsisteix en un o més elements separats per “: ” (la comanda també accepta “, ” o espai com a separador), i cadaelement pot ser:

• Un joc complet d’algorismes, p. ex. “DHE-DSS-RC4-SHA”.

• Un algorisme concret, p. ex. “DH”, “ kRSA” (intercanvi de claus RSA), “aRSA” (autenticació RSA), “DSS”,“aNULL” (autenticació nul·la), “eNULL” (xifratge nul), “3DES”, “ SHA”, etc., o una versió del protocol,“SSLv2”, “ SSLv3” o “ TLSv1 ”. Equival a la llista de jocs que inclouen aquest algorisme o que es fan ser-vir amb aquesta versió del protocol.

• Diversos components (algorismes o jocs) units amb l’operador “+”, que correspon a l’operació AND, p. ex.“RSA+RC4+SHA”.

• Un element precedit per l’operador “- ” indica que de la llista formada pels elements anteriors s’han d’eliminarels jocs que corresponen a aquest element, p. ex. “RSA:-DES:DES-CBC-SHA ”. Si en comptes de “- ” s’usal’operador “! ”, els jocs s’esborren de la llista total, és a dir, la formada pels elements anteriors i posteriors al’actual.

• També poden aparèixer determinades paraules clau com a elements de la llista: “ALL” (totes els jocs, excepteels que tenen xifratge nul), “DEFAULT” (la llista de jocs per defecte), “HIGH”, “ MEDIUM”, “ LOW”, “ EXP” (jocsque usen algorismes amb claus llargues, mitjanes, curtes o molt curtes, respectivament), “@STRENGTH” (indicaque la llista total quedi ordenada per ordre decreixent de longitud de clau dels algorismes), etc.

Amb l’opció -v , la comandaciphers genera una llista més detallada: per a cada joc, indica a quina versió delprotocol correspon, quins algorismes concrets el formen, i amb quines longituds de clau.

10.3 Mesura del rendiment dels algorismes: les comandesspeed i s_time

Les comandesspeed i s_time permeten calcular la velocitat d’alguns dels algorismes de la llibreria OpenSSL.

• La comandaspeed realitza, durant un temps predeterminat, una sèrie de bucles d’operacions criptogràfiques:càlcul de funcionshash(md2, mdc2, md4, md5, hmac, sha1 , rmd160 ) amb entrades de diferents longituds,xifratge simètric (rc4 , des-cbc , des-ede3 , aes-128-cbc , aes-192-cbc , aes-256-cbc , idea ,rc2 , rc5 , bf , cast ) amb entrades de diferents longituds, i xifratge amb clau privada i desxifratge amb claupública (rsa , dsa ) amb diferents longituds de clau. Quan acaba, escriu per la sortida estàndard informaciósobre la versió de la llibreria com la que dóna la comandaversion (§ 10.1), les funcions usades per al càlculde temps, i els resultats dels bucles anteriors expressats en bytes per segon (i per als algorismes de clau pública,també en segons per operació).

A la comandaspeed se li poden passar com a arguments un o més dels algorismes anteriors (amb o senseindicació de longitud de clau: “aes-128-cbc ” o “ aes ”, “ rsa1024 ” o “ rsa ”, etc.), per fer les mesuresnomés amb aquests algorismes. També es poden usar les següents opcions:-evp NOM_ALGORISMEperespecificar un algorisme concret amb el mateix nom que usen les comandesenc (§ 2.1) o dgst (§ 3.1) com aopció (p. ex. “-evp des-ecb ”, “ -evp sha ”, etc.), -decrypt per fer mesures de desxifratge en comptesde xifratge (quan s’usa l’opció-evp ), -multi N per executar els bucles enN processos fills en paral·lel,-elapsed per donar els resultats sobre el temps total transcorregut en comptes del temps de CPU, i-mr perescriure els resultats en un format compacte més fàcilment processable per programa.

• La comandas_time realitza, durant un cert temps (per defecte 30 segons), un bucle de connexions SSL/TLSamb identificadors de sessió diferents, i a continuació un bucle de connexions SSL/TLS amb el mateix identifi-cador de sessió. Les connexions es fan per defecte al port 4433 del servidorlocalhost . Per cada connexió

Page 37: OpenSSL

10. Altres comandes OpenSSL 37

establerta escriu “2” si usa SSL 2.0, “3” si usa SSL 3.0, “t ” si usa TLS 1.0, o “r ” si correspon a una sessióanterior represa. Al final de cada bucle escriu com a resultat el nombre total de connexions, el temps de CPUusat, les connexions per segon de CPU, i el nombre de bytes de dades llegits del servidor.

Amb la comandas_time es poden usar algunes de les opcions de la comandas_client (§ 9.2): -connect ,-ssl2 , -ssl3 , -cipher , -cert , -key , -CAfile i -CApath . També es poden usar les següents opcions:-new per fer només el bucle de sessions noves (identificadors diferents),-reuse per fer només el bucle de ses-sions represes (mateix identificador),-time N perquè cada bucle s’executi durantN segons en comptes de 30,i -www RECURSper enviar al servidor en cada connexió una petició HTTP “GET RECURSHTTP/1.0 ”.

10.4 Claus privades en format PKCS #8: la comandapkcs8

La comandapkcs8 permet crear i processar paquets PKCS #8 que contenen claus privades.

La comandapkcs8 per defecte llegeix de l’entrada estàndard un paquet PKCS #8 en format PEM, demana la contra-senya amb què està protegit, el desempaqueta, i escriu per la sortida estàndard la clau privada resultant en format PEM(sense xifrar).

Amb l’opció -topk8 , la comandapkcs8 realitza el procés invers: llegeix de l’entrada estàndard una clau privadaen format PEM (demanant lapass phraseper desxifrar-la, si està protegida), demana una contrasenya (dues vegades,per verificar), i escriu per la sortida estàndard un paquet PKCS #8 que conté la clau privada, xifrat amb aquestacontrasenya, en format PEM. En aquest cas, es pot utilitzar l’opció-passout per especificar la contrasenya, i tambéaquestes altres opcions:

-v1 ALGORISME

Indica la combinació d’algorismes per al xifratge del paquet PKCS #8 i per a la generació de la clau de xifratgea partir de la contrasenya, aplicant el mètode de l’especificació PKCS #5 v. 1.5. Per defecte s’usa la combinaciód’algorismes “pbeWithMD5AndDES-CBC” (que equival al nom abreujat “PBE-MD5-DES”).

-v2 ALGORISME

Indica la combinació d’algorismes per al xifratge del paquet PKCS #8 i per a la generació de la clau de xifratgea partir de la contrasenya, aplicant el mètode de l’especificació PKCS #5 v. 2.0.

-noiter

Indica que no s’apliqui el nombre d’iteracions per defecte (2048) en la generació de la clau de xifratge a partirde la contrasenya, sinó només una sola iteració.

Tant en un cas com en l’altre (llegir o generar PKCS #8) també es pot utilitzar l’opció-nocrypt , que indica que nodemani contrasenya de xifratge, perquè el paquet PKCS #8 d’entrada no està xifrat (en el cas de la comandapkcs8 ),o el paquet PKCS #8 de sortida s’ha d’escriure sense xifrar (en el cas de la comandapkcs8 -topk8 ). A més, lacomanda també admet les opcions habituals-in , -inform , -passin , -out i -outform .