En este artículo vamos a ver como se crea una estructura
de clave pública (PKI) a partir de OpenSSL. OpenSSL es un trabajo
derivado de SSLeay.
SSLeay fue desarrollado originalmente por Eric A. Young y Tim J. Hudson en 1995. En Diciembre de 1998, el desarrollodeSSLeay fue interrumpido y la primera versión de OpenSSL fue liberada (0.9.1c) , utilizando SSLeay 0.9.1b como punto de partida. OpenSSL se compone de dos partes:
1.librería criptográfica2.conjunto de aplicaciones SSL
Existen versiones para distintas plataformas. Se puede descargar de: http://www.openssl.org vamos a ver el funcionamiento básico de openssl y cómo construir una infraestructura de clave pública o PKI(Public Key Infraestrure) con ella.
#Comandos disponibles:
OpenSSL> Standard commands
asn1parsecacipherscrlcrl2pkcs7dgstdhdhparamdsadsaparam encengineerrstrgendhgendsagenrsanseqocsppasswdpkcs12 pkcs7pkcs8randreqrsarsautls_clients_servers_timesess_id smimespeedspkacverifyversionx509 Message Digest commands (see the `dgst' command for more details)
md2md4md5rmd160shasha1 Cipher commands (see the `enc' command for more details)
aes-128-cbcaes-128-ecbaes-192-cbcaes-192-ecbaes-256-cbcaes-256-ecbbase64bfbf-cbcbf-cfbbf-ecbbf-ofbcastcast-cbccast5-cbc cast5-cfbcast5-ecbcast5-ofbdesdes-cbc des-cfbdes-ecbdes-ededes-ede-cbcdes-ede-cfbdes-ede-ofbdes-ede3 des-ede3-cbcdes-ede3-cfbdes-ede3-ofb des-ofbdes3desxrc2rc2-40-cbrc2-64-cbcrc2-cbcrc2-cfbrc2-ecbrc2-ofb
#Algunas operaciones básicas:
[root@nesys209 ssl]# openssl version OpenSSL 0.9.7a Feb 19 2003
[root@nesys209 ssl]# openssl version -d OPENSSLDIR: "/usr/share/ssl"
[root@nesys209 ssl]# ls -sla total 36 4 drwxr-xr-x 7 root root 4096 sep 7 22:30 . 4 drwxr-xr-x 161 root root 4096 jun 29 13:45 .. 4 drwx------ 3 root root 4096 jun 14 09:42 CA 0 lrwxrwxrwx 1 root root 19 jun 14 09:42 cert.pem -> certs/ca-bundle.crt 4 drwxr-xr-x 2 root root 4096 jun 24 19:10 certs 4 drwxr-xr-x 2 root root 4096 mar 25 2004 lib 4 drwxr-xr-x 3 root root 4096 jun 16 12:01 misc 8 -rw-r--r-- 1 root root 7655 sep 7 22:30 openssl.cnf 4 drwxr-xr-x 2 root root 4096 jun 24 19:10 private
[ CA_default ] dir = /tmp/newca # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir/crl # Where the issued crl are kept database = $dir/index.txt # database index file. new_certs_dir = $dir/certs # default place for new certs. certificate = $dir/cacert.pem # The CA certificate serial = $dir/serial # The current serial number crl = $dir/crl.pem # The current CRL private_key = $dir/private/privkey.pem # The private key RANDFILE = $dir/private/.rand # private random number file x509_extensions = usr_cert # The extentions to add to the cert . . . # crl_extensions = crl_ext default_days = 365 # how long to certify for default_crl_days= 30 # how long before next CRL default_md = md5 # which md to use. preserve = no # keep passed DN ordering [ req ] default_bits = 2048 default_keyfile = privkey.pem distinguished_name = req_distinguished_name
#Ahora construimos la Autoridad de Certificación
+ Construyendo el certificado de la CA autofirmado #openssl req -x509 -days 3650 -newkey rsa -out cacert.pem -outform PEM
Información del certificado #openssl x509 -in cacert.pem -text -noout
+ Transferencia de confianza entre CAs (CA2 da confianza a CA) CA2-CA
#Generación de un certificado a partir del request #openssl ca -in certreq.pem ... -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIBATANBgkqhkiG9w0BAQQFADCBhDELMAkGA1UEBhMCRVMx EDAOBgNVBAgTB3ZpemNheWExEDAOBgNVBAcTB1NvbmRpY2ExDjAMBgNVBAoTBU5F U1lTMQwwCgYDVQQLEwNQS0kxETAPBgNVBAMTCG5lc3lzMjA5MSAwHgYJKoZIhvcN ... IppRmJrZ7HCOsgOkhsoYe4EIYcZRoqgZFK0dehcRWG4/auXmKFO+XtdYorjYEU0/ 07PI2LtOyEjA2lgCEk5pH/khbAI= -----END CERTIFICATE-----
#Revocación de certificados # cp certs/01.pem testcert.pem # openssl ca -revoke testcert.pem Using configuration from openssl.cnf Enter PEM pass phrase: Revoking Certificate 01. Data Base Updated