RSS

OpenSSL – La navaja suiza del cifrado

11 Ene

Hoy vamos a hacer una chuleta de como cifrar nuestros documentos y demás utilizando algo que todos aquellos que trabajamos con linux tenemos muy a mano, OpenSSL.

Casi todos lo usuarios de linux, sobre todo aquellos que lo llevéis en un portátil y uséis la conexión wifi, tendréis instalado OpenSSL, pero por lo menos en mi caso,suelo dejar que el sistema lo utilice automáticamente para las conexiones a redes inalámbricas y yo, no lo utilizaba para nada. Pero como la curiosidad a veces nos juega malas pasadas, el otro día me decidí a investigar si servía para algo más y se podía utilizar de forma manual, y vaya si se puede. Se pueden hacer un montón de cosas con él, eso si, todas ellas relacionadas con el cifrado y descifrado. Así que el siguiente artículo es una especie de recetario y de apuntes de como utilizarlo para no tener que llevarlo todo en la cabeza, que no se la vuestra, pero la mía se despista con facilidad. Por supuesto, todo lo que se va a comentar a continuación se va a hacer desde la consola.

Antes de empezar una recomendación, mirad bien lo que escribís porque ,al menos a mi, no me van los cursores para desplazarme sobre lo escrito. así que si tengo que rectificar algo me toca borrar y reescribir.

Acceder a openssl: Tecleamos en la consola

~# openssl

Nos saldrá un promt con el siguiente formato.

OpenSSL>

Salir de openssl:

OpenSSL> quit

OpenSSL> q

OpenSSL> exit

Ayuda:

OpenSSL> ?

Nos mostrará una lista de los comandos disponibles.

— Cifrado simétrico —

Encriptar

DES:

OpenSSL> enc -des -in entrada.txt -pass pass:contraseña -out salidaDes.txt

AES:

OpenSSL> enc -aes128 -in entrada.txt -pass pass:contraseña -out salidaAes.txt

Desencriptar

DES:

OpenSSL> enc -d -des -in salidaDes.txt -pass pass:contraseña -out salidaDes2.txt

AES:

OpenSSL> enc -d -aes128 -in salidaAes.txt -pass pass:contraseña -out salidaAes2.txt

— Cifrado asimétrico —

Generar llave del algoritmo asimétrico RSA: Vamos a generar una llave privada de 1020 bits

OpenSSL> genrsa -out privada1.key 1024

Cifrar la clave privada con DES para evitar su uso fraudulento:

OpenSSL> genrsa -out privada2.key -passout pass:contraseña -des 1024

Se realiza este cifrado porque la clave privada se genera como un fichero de texto que cualquiera podría leer, para evitar esto la ciframos.

Generar claves públicas derivadas:

OpenSSL> rsa -in privada1.key -pubout -out publica1.key

OpenSSL> rsa -in privada2.key -pubout -out publica2.key -passin pass:contraseña

Encriptar

OpenSSL> rsautl -pubin -encrypt -in entrada.txt -out salidaRsa.txt -inkey publica1.key

Desencriptar:

OpenSSL> rsautl -decrypt -in salidaRsa.txt -out salidaRsa2.txt -inkey privada1.key

— Funciones hash —

Generar:

OpenSSL> dgst -md5 -out entrada.hsh entrada.txt

— Firma digital —

Generar un par de claves RSA como hemos visto anteriormente:

OpenSSL> genrsa -out privada.key 1024

OpenSSL> rsa -in privada.key -pubout -out publica.key

Firmar el archivo digitalmente:

OpenSSL> dgst -c -sign privada.key -out firmado.sig entrada.txt

El archivo “firmado.sig” contendrá la firma digital en formato binario.

Verificar firma:

OpenSSL> dgst -c -verify publica.key -signature firmado.sig entrada.txt

OpenSSl mostrará un “Verified OK” si todo ha sido correcto, o un “Verification Failure” si algo ha fallado.

Conversión de firmas binarias a texto: Como ya he dicho antes las firmas generadas tienen un formato binario, con lo cual para su envió por correo, por ejemplo, es interesantes pasarlas a texto. Así que vamos a generar una versión en base64.

OpenSSL> base64 -in firmado.sig -out firmado.b64

Como puedes observar, el fichero generado es legible y fácilmente agregable a cualquier texto.

Conversión de firmas en texto a binarias: Para verificar las firmas que nos han llegado en modo texto tendremos que pasarlas a modo binario antes.

OpenSSL> base64 -d -in firmado.b64 -out firmado1.sig

— Certificados digitales —

Crear certificado y archivo de configuración de la autoridad certificadora (“CA”):

Generar un par de claves RSA como hemos visto anteriormente:

OpenSSL> genrsa -out CAprivada.key 1024

OpenSSL> rsa -in CAprivada.key -pubout -out CApublica.key

Crear el archivo de configuración:

Crear el archivo “CAconfig.conf” con el siguiente contenido:

[ req ]
default_bits            =  1024
default_keyfile         =  CAprivada.key
distinguished_name      =  req_distinguished_name
attributes              =  req_attributes
x509_extensions         =  v3_ca
dirstring_type          =  nobmp
[ req_distinguished_name ]
countryName             = Identificador del País (2 letras)
countryName_default     = MX
countryName_min         = 2
countryName_max         = 2
localityName            = Localidad (ej., ciudad)
organizationalUnitName  = Nombre de unidad organizacional (ej., oficina)
commonName              = Nombre común (ej., TU nombre)
commonName_max          = 64
emailAddress            = Dirección de correo electrónico
emailAddress_max        = 40
[ req_attributes ]
challengePassword       = Contraseña para “challenge”
challengePassword_min   = 4
challengePassword_max   = 20
[ v3_ca ]
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always,issuer:always
basicConstraints        = CA:true

Crear el certificado de la autoridad:

OpenSSL> req -new -key CAprivada.key -out ca.cer -config CAconfig.conf -x509 -days 3650

Generar claves para un usuario:

OpenSSL> genrsa -out privadaUser.key 1024

OpenSSL> rsa -in privadaUser.key -pubout -out publicaUser.key

Generar un requerimiento del certificado para este usuario:

OpenSSL> req -new -key privadaUser.key –out req.pem -config CAconfig.conf

Firmar el requerimiento y generar el certificado del usuario:

OpenSSL> x509 -inform PEM -outform PEM -keyform PEM -CAform PEM -CAkeyform PEM –in req.pem -out certUser.cer -days 365 -req -CA ca.cer -CAkey CAprivada.key -sha1 –CAcreateserial -text

Bueno, hasta aquí la chuleta de hoy. También debéis saber que OpenSSL permite la creación de de certificados digitales para sitios web, pero como esto da por si solo para un post completo, lo dejaremos para otro día si a alguien le interesa.

Espero que la chuleta os sirva de ayuda. Si alguien tiene alguna duda o algo que aportar, como siempre os animo a dejarlos en los comentarios. Nos vemos.

Anuncios
 
55 comentarios

Publicado por en 11 enero, 2009 en seguridad, técnicos

 

55 Respuestas a “OpenSSL – La navaja suiza del cifrado

  1. Ben

    23 septiembre, 2009 at 6:59 pm

    Justo lo que necesitaba muchas gracias se te agradece el excelente aporte,
    Saludos desde Guatemala 😀

     
    • svoboda

      23 septiembre, 2009 at 7:10 pm

      Saludos para ti también. Ma alegro que te sirva.

       
  2. Arturo Miranda

    9 noviembre, 2009 at 6:38 am

    Hola Israel,

    estoy implementando la factura electronica y lo unico que me falta es el sello digital, no lo genero correctamente y esque no se que funciones utilizar para que me salga,

    me puedes dar tus numeros telefonicos para que me puedas asesorar si eres tan amable??

     
    • svoboda

      9 noviembre, 2009 at 10:33 am

      Jejeje, hola Arturo. Lo primero, saludar, y lo segundo decir que yo no soy Israel, ese es un comentario de alguien que enlazo mi post en su blog, supongo que Israel será él.

      Y ya en tercer lugar, respondiendo a lo que comentas, pues mi número como imaginarás no te lo voy a dar, pero tienes a tu disposición el email y los comentarios, así que si explicas un poco más el problema que te ocurre intentaré ayudarte, o quizás algún otro lector pueda.

       
      • Arturo Miranda

        9 noviembre, 2009 at 4:48 pm

        Hola svoboda,

        disculpa por la confusion del nombre, mira te explico mi problema:

        1. Genero mi cadena original.
        ||2.0|1|2009-11-07T19:15:49|123456789|2009|ingreso|Pago en una sola exhibición|45000.00|51750.00|MIGI800920RF3|Facturacion Electronica|C.21-A X 38 Y 25|368|FRACC. CHENKU|MERIDA|MERIDA|YUCATAN|MEXICO|97219|CSI030408LA0|CENTRO DE SOLUCIONES INALAMBRICAS S.A. DE C.V.|CALLE 18 X 15 Y 13-A|97|301|COL. ITZIMNA|MERIDA|MERIDA|YUCATAN|MEXICO|97100|100|HORAS|SOPORTE TECNICO EN SITIO|450.00|45000.00|IVA|15.00|6750.00|6750.00||

        2. Genero el MD5.
        0e3d1b3bfd3dcdfd26cafa07e3842004

        3. Genero el sello. (Aqui tengo el problema). pues debo llegar a este sello que el SAT me marca como valido.

        BbrGyPaZJzrIENuMiKBswb24b0y81mYXqlznS8xntYVHzcjt59XHFdeH8ZRpDS0c7ZsPMUuTc+NUpnA6GI9fppXBz+Gu2ORgO/1A+c2tcPflKXge3pppls4cbpBZjY12jJTW8ntBt1ZyoyztOOrH45hI6eBXWZSwe5g1WDRHpzw=

        sin embargo no logro llegar a ese sello. utilizo las siguientes funciones desde PHP.

        a) openssl_sign($CadenaMD5, $sign, $pkeyid); y obtengo:
        WRAOF7YZ+639YZckcmTBxf/xAwtFrO7hFsgAMPLkRe0Vnvk/c0WSJOaGZuImwz8lK92RO13Cn6XO52dS0h4fyNhyea8DPOnA5QUW6j+hpm6EFWNvvHu/UuyN1sFOTDYUbSPf/zvND+2lqxJpI3+XUyzc2CyaYNPu+ROda3T27Bk=

        b) openssl_private_encrypt($CadenaMD5, $sign2, $pkeyid); y obtengo:
        XJ9LkHVGrhXuPYT14fUA4vQWXrRhutByvFi3gQxPDltb8w6e4teDDOqLE0idDZYuFS8QhSRJhVK6w0C7E3FxeifNa1aj5O/kUoY0G4wkN7Q0NpGJ8sMcsXvlONprgi/yGiIzHz5PbzHXhVs0jZ3sVrxgc1kBVrxrg9PUVCJr3c4=

        ninguno de esos sellos son validos cuando los copio y pego en el XML y hago la validacion con el validador del SAT

        que estoy haciendo mal, de antemano muchas gracias.
        saludos

         
  3. svoboda

    9 noviembre, 2009 at 6:41 pm

    Hola Arturo, no pasa nada por lo del nombre, no te preocupes.

    A ver, la verdad es que de validación de facturas digitales no he hecho nada solamente he leído algo desde el punto de vista teórico, pero, sobre la función “openssl_sign” que si que la he usado, deberías probar ponerle el parámetro “signature_alg” con el valor “OPENSSL_ALGO_MD5”, aquí te dejo un enlace con los posibles valores: http://www.php.net/manual/en/openssl.signature-algos.php

    Otra cosa, que supongo habrás mirado pero por si acaso, deberías de asegurarte de que la versión en la que estás trabajando y la que estás intentando validar sea la misma, si no recuerdo mal existe una versión 1 y una 2 y la validación no es igual.

    Y en tercer lugar, aunque quizás los hayas visto, te remito a un par de enlaces sobre donde se habla bastante de este tema que preguntas.

    http://www.forosdelweb.com/f18/facturacion-electronica-mexico-638882/

    http://phylevn.mexrom.net/index.php/blog/show/Script_PHP_para_generar_Sello_Digital_requerido_por_el_estandar_de_SAT_para_facturacin_ele.html

    Espero que te sirva de algo la información.

     
  4. Javier B Camacho Mtz (@vaLar)

    23 septiembre, 2011 at 8:14 pm

    Genial… aprendí más aquí que en el curso de criptografía!!!

     
    • svoboda

      24 septiembre, 2011 at 11:56 am

      Me alegra mucho que te haya sido útil. Gracias por el comentario.

       
  5. Dario Alvarez

    4 mayo, 2012 at 6:42 am

    Hola,

    He desarrollado una librería que permite generar la Factura electrónica y enviarla al PAC, esta biblioteca es totalmente gratuidad y puede ser usada en cualquier tipo de sistema; si te interesa puedes revisar mi pagina

     
    • svoboda

      4 mayo, 2012 at 8:02 pm

      Se le puede echar un ojo, nunca está de más ver cosas nuevas. Aunque me temo que la tengo que apuntar en la lista de tareas porque ahora mismo voy un poco saturado com habrás podido ver por la última fecha de actualización del blog.

       
    • Robert

      23 mayo, 2012 at 11:36 pm

      Hola,
      Me interesa probar tu libreria ya que estoy haciando algo sobre facturacion electronica cual es tu pagina para darle una revisada a la libreria que comentas?
      De antemano gracias!

      Saludos.

       
      • svoboda

        24 mayo, 2012 at 8:40 pm

        Si no me equivoco, su página es a la que llegas si haces click en su nombre, que viene a ser http://www.facturando.com.mx

         
  6. Noe Torres

    19 agosto, 2012 at 5:12 am

    Hola, muy interesante y útil el contenido de tu post, pero quería saber si tendrás algo de información sobre los algoritmos internos que se utilizan al generar las claves rsa y además qué métodos se utilizan al cifrar y descifrar un documento, todo esto de manera interna, es decir, si yo quisiera hacerlo manualmente, qué operaciones debería realizar

     
    • svoboda

      19 agosto, 2012 at 6:56 pm

      Tener información, no tengo. Pero el proyecto de openssl está al alcance de cualquiera, en su página tienes documentación e incluso el código fuente para ver como funciona todo internamente. La verdad es que es una buena herramienta y, a parte de estudiar como funciona RSA desde el punto de vista teórico, no he ido más allá.

       
  7. Anónimo

    5 diciembre, 2012 at 6:19 pm

    Una consulta, en la linea que dice “Generar claves públicas derivadas:” ambos comandos que les sigue (OpenSSL> rsa in privada1.key -pubout -out publica1.key , OpenSSL> rsa in privada2.key -pubout -out publica2.key -passin pass:contraseña), no deberían generar la misma clave publica?. Cuando reviso el contenido de ambas claves publicas derivadas tiene diferentes valores, porque es esto?.

     
    • svoboda

      11 diciembre, 2012 at 12:54 pm

      Hola, siento la tardanza.
      No entiendo exactamente la pregunta, ¿por qué afirmas que deberían ser iguales? privada1 y privada2 son diferentes, por lo tanto los resultados son diferentes.

       
  8. Anónimo

    31 enero, 2013 at 1:21 pm

    Ante todo quiero agradecerte el articulo, la verdad es que nos ha venido muy bien para entender con claridad el proceso y la utilidad de openssl.

    Imagino que a lo que se refiere mas arriba es que cree que siempre genera la misma clave, de hay que pregunte si ambas no serán al final la misma.

     
    • svoboda

      31 enero, 2013 at 7:37 pm

      Me alegro que sea de utilidad.

      Quizás tengas razon sobre el comentario anterior y sea eso lo que preguntaba.

       
  9. sdasad

    30 abril, 2013 at 2:06 pm

    Muchas gracias por solucionarnos las practicas de Arquitectura de Redes II!! Eres un genio!

     
    • svoboda

      30 abril, 2013 at 7:45 pm

      Jajaja, me alegro de que te haya servido.

       
  10. Jazzz

    12 julio, 2013 at 5:32 pm

    oye una duda donde generamos el archivo “CAconfig.conf ?

     
    • svoboda

      14 julio, 2013 at 7:33 am

      En principio, no hay ninguna restricción sobre esto, lo puedes crear donde quieras, luego cuando lo vayas a utilizar, solo tendrás que especificar la ruta correcta. Como ves yo lo creé en el directorio donde estaba trabajando por comodidad.

       
  11. Jazzz

    15 julio, 2013 at 7:09 pm

    si pero m manda error el mismo que todos aaaaaaaaaaaaa y no se como sabemos crear el fichero ni donde ni como ni cualllll por favor ayúdanos explica plisss

     
    • svoboda

      15 julio, 2013 at 9:09 pm

      Si necesitas una mano, necesito más datos. ¿Qué estás intentando hacer exactamente? ¿Estás siguiendo todos los pasos del post o solo haciendo algo en concreto? ¿Qué te da error exactamente? ¿Como estás intentando crear el fichero? Necesito que seas un poco más concreto sobre lo que te está pasando para ver si se te puede echar una mano.

       
  12. Jazzz

    16 julio, 2013 at 5:49 pm

    OpenSSL> req -new -key CApriv.key -out ca.cer -config CAconfig.cnf -x509 -days 3
    650
    error on line -1 of CAconfig.cnf
    4420:error:02001002:system library:fopen:No such file or directory:.\crypto\bio\
    bss_file.c:169:fopen(‘CAconfig.cnf’,’rb’)
    4420:error:2006D080:BIO routines:BIO_new_file:no such file:.\crypto\bio\bss_file
    .c:172:
    4420:error:0E078072:configuration file routines:DEF_LOAD:no such file:.\crypto\c
    onf\conf_def.c:197:
    error in req
    OpenSSL>

    este es el error, Si estoy siguiendo los pasos, y quiero crear un certificado electrónico que obtenga la firma y sello electrónico.

     
    • svoboda

      16 julio, 2013 at 8:13 pm

      Buenas. He conseguido reproducir el error que me comentas en mi máquina. El por qué de este, es porque alguno de los ficheros que le estás pasando en la instrucción que tratas de ejecutar no existe. En tu caso, se está quejando del “CAconfig.cnf” que dice que no existe:
      “error on line -1 of CAconfig.cnf” -> línea 1 del interprete de comandos de openssl (la que estás ejecutando)
      “4420:error:02001002:system library:fopen:No such file or directory:.\crypto\bio\
      bss_file.c:169:fopen(‘CAconfig.cnf’,’rb’)” -> Error del método de C para abrir el fichero a leer.
      Asegúrate bien de que para el fichero de la clave y el de configuración los nombres estén bien escritos, probablemente es un error tipográfico (a mi me pasa mucho). Es decir:
      – El nombre del fichero de clave: “CAprivada.key” en mi caso, se debe corresponder con el fichero en el que has generado la clave RSA.
      – El nombre de la configuración debe coincidir con el del fichero que has creado, en mi caso “CAconfig.conf”
      La secuencia de comandos toda junta es:
      1. genrsa -out ##CAprivada.key## 1024
      2. crear fichero ##CAconfig.conf##
      3. req -new -key ##CAprivada.key## -out ca.cer -config ##CAconfig.conf## -x509 -days 3650
      Al igual que el nombre del fichero en la propiedad “default_keyfile” dentro del fichero de configuración que también debe coincidir.
      Te he puesto entre ## los nombres que deberían ser iguales. Míralo detenidamente, porque estoy casi seguro que es un error tipográfico. En caso de que estés completamente seguro de que están bien escritos, vuelve a comentarlo y le doy un par de vueltas más para ver si consigo reproducirlo de otra forma. Espero que te sirva. Un saludo.

       
      • Jazzz

        18 julio, 2013 at 7:24 pm

        Gracias !!!! pero el fichero es una carpeta que se guarda en bin> y la creamos nosotros o el sistema lo debe de traer ?
        otra pregunta para descargar “”” OpenSSL””” se tiene que comprar la licencia?

         
  13. svoboda

    18 julio, 2013 at 10:52 pm

    No me deja responder a la respuesta, que raro.
    El fichero lo creamos nosotros.
    OpenSSL es gratuito, no hay que pagarlo. Como su nombre indica: The Open Source toolkit for SSL/TLS. De hecho todas o casi todas las distribuciones de linux traen un paquete con él, y viene instalado en sistemas Unix o Mac OS.

     
    • Laura

      6 febrero, 2016 at 4:30 am

      Cómo creamos el fichero CAconfig.cfg con las características que expones en el post? Y como podemos editarlo para poner las características que querramos ?

       
      • Laura

        6 febrero, 2016 at 4:33 am

        Cómo creamos el fichero CAconfig.cfg con las características que expones en el post? Y como podemos editarlo para poner las características que querramos ? Perdón es CAconfig.cfn

         
      • fjavierm

        7 febrero, 2016 at 6:59 pm

        No es más que un fichero de texto plano, no deberíais tener ningún problema para crearlo o editarlo. Podéis usar de base el que hay en el artículo, y modificarlo según vuestras necesidades. Un saludo

         
  14. Martín

    23 julio, 2013 at 10:46 pm

    Tengo una preguntita, por si alguno anda por ahí. Quiero generar un pedido de certificado y me está dando error el servidor. Estoy ejecutando el openssl en un Windows Server 2008. ¿Habrá algún problema si teniendo el archivo key, genero mi pedido de certificado desde Windows 7 en otra máquina?

     
    • svoboda

      24 julio, 2013 at 7:06 pm

      Andar alguno anda, pero en esta ocasión, me has pillado y no tengo ni idea. A ver si tienes suerte y alguien te puede ayudar. Un saludo.

       
  15. Anónimo

    9 septiembre, 2013 at 5:06 pm

    Muy bien explicado, ahora tengo un problema (Urgente). Tengo un documento digital firmado digitalmente por el usuario 1, y necesito que sea firmado digitalmente por el usuario 2. Y luego necesito verificar la integridad de las dos firmas. ¿Se pueden hacer múltiples firmas sobre un documento ya firmado? no lo he podido realizar todavía…. agradecería una respuesta cuanto antes, muchas gracias

     
    • svoboda

      9 septiembre, 2013 at 9:14 pm

      Gracias por lo primero, y sobre lo segundo, me temo que no te puedo ayudar. Nunca se me ha dado el caso de tener que hacer algo así y no lo he investigado nunca, no se si será posible o no. Una idea, aunque sin probar y sin tener ni idea, quizás puedas aplicar las firmas de forma consecutiva, y comprobarlas después de forma consecutiva también. Es decir, firma A, firma B, … compruebas la firma de B, compruebas la firma de A, … Pero vamos, lo dicho, ni idea, lo última idea es completamente a ciegas. Siento no poder ayudarte.

       
  16. Ralph

    4 octubre, 2013 at 5:20 pm

    Una plantilla que parece la carta de un restaurante para hablar de openSSL, jajajajajjajajajajajajajajajajajajajajajj——— SOOOY UNNN UNICOOORNIO RETRASAAAADOO !!, CORRE PLATANO

     
    • svoboda

      4 octubre, 2013 at 6:06 pm

      Dado el tono del comentario asumo que tiene poca seriedad o ninguna. Aún así voy a contestarlo. (Por supuesto, los demás comentarios que no aportaban nada más que este han sido marcados como SPAM)
      El artículo, es una chuleta de comandos para llevar a cabo ciertas acciones con OpenSSL, y esa función la cumplió perfectamente cuando se escribió, y la sigue cumpliendo a día de hoy. No pretende ni mucho menos, ser una explicación de que es OpenSSL ni nada alrededor de esto. Es lo que es.
      En futuras ocasiones, espero que tus comentarios aporten algo más de contenido, ya que aquí estamos todos para aprender. Un saludo.

      PD: Todos aquellos comentarios que sigan la misma tónica que los anteriores, serán marcados como SPAM sin mediar más palabra.

       
  17. Givoanni Lopez

    19 mayo, 2014 at 4:54 am

    Donde se almacenan esos certificados? Para exportarlos!

     
    • svoboda

      19 mayo, 2014 at 8:18 pm

      No entiendo muy bien la pregunta. Normalmente se almacenan en una ruta dentro de tu servidor, en el caso de Apache por ejemplo en APACHE_HOME/conf/ssl.crt, en otros servidores, en rutas similares. Para moverlos de un servidor a otro, los puedes copiar en cualquier parte. Si no es esta la respuesta que buscas, por favor, añade algo más texto a tu explicación. Un saludo

       
  18. Guillermo

    6 junio, 2014 at 11:12 am

    Buenos días
    Acudía a vosotros a ver si me podías echar una mano porque estoy un poco estancado y no consigo resolver este error.
    Tengo un fichero txt con una string en base64 y al ejecutar la siguiente comando para desencriptarlo:
    “openssl rsautl -decrypt -in base64.txt -out salida.txt -inkey privateKeyt.pem” me da el siguiente error: “rsa routines:RSA_EAY_PRIVATE_DECRYPT:data greater than mod len”
    He leído por ahí que puede ser problema de la estructura o el tamaño del base64 pero he puesto el fichero con una sola linea de string y me salía un error de padding.
    Por otro lado he probado a pasar el base64 a binario e intentar desencriptar ese fichero pero me salían los mismos errores de antes.

    Ya no se que más probar, a ver si me podéis echar una mano.
    Muchas gracias de antemano y saludos!!!

     
    • svoboda

      8 junio, 2014 at 9:08 pm

      Al desencriptar no lo he visto nunca, ya que suele ser un error que da al encriptar. En principio, creo que se debe a la característica del algoritmo que tiene un tamaño máximo de bloque. Suelen existir dos opciones:
      – Trocear el fichero a encriptar en trozos más pequeño que el tamaño máximo de bloque.
      – Utilizar alguna solución de encriptado basada en un password y luego cifrar dicho password con la clave pública/privada.

      La primara de ellas suele ser la más utilizada.

      ¿estás seguro que la encriptación del fichero fue correcta? A veces, he visto ese error cuando se está usando la clave pública para desencriptar, compruébalo para estar seguro, un despiste lo tiene cualquiera.

      Para finalizar, puedes lanzar una prueba encriptar y desencriptar con un fichero pequeñito a ver si todo el proceso te funciona de forma correcta.

      Espero que te sirva. Un saludo

       
  19. mkeydiluffy

    16 julio, 2014 at 8:45 am

    Hola buenos dias, ante todo muchas gracias por la explicacion es fantastica y facil de entender que con el tema que estamos tratando ya es un hito xD, y ahora mi problema en ciertos pasos aunque se genera lo que le pido ya sea la key privada o la del User y tal me dice al final
    unable to write random state.
    No se si eso es que no se ha realizado bien o no, ya que lo que es la key la genera pero al mostrar ese texto ya no lo se.

    Otra preguntilla una vez generado el certificado si tengo una maquina que me da problemas con el que posee instalandole este se solucionaria?, lo dicho gracias y espero una ayudilla.

     
    • svoboda

      18 julio, 2014 at 9:41 pm

      Sobre la primera “unable to write random state”: En las FAQ de OpenSSL tienes una respuesta: http://www.openssl.org/support/faq.html#USER2
      Básicamente, parece que tu usuario no tiene permisos de escritura sobre el fichero ~/.rnd, simplemente asígnale permisos a tu usuario sobre ese fichero y ya está. Te recomiendo que te leas la FAQ de todas formar. Si estás en window por un casual ocurre algo similar, puedes ejecutarlo todo como administrador para solucionarlo o setear una variable de entorno, no recuerdo bien ahora mismo.
      Sobre la segunda: estás generando un certificado válido si lo pones en la máquina y lo configuras todo correctamente pera usarlo, no te debería dar problemas.
      Un saludo

       
  20. Miguel Manzano

    2 junio, 2015 at 2:29 am

    Soy nuevo en este foro asi que pido toda la ayuda posible después de un tiempo que dejé mi federa en la versión 12 volví y reinstale el federa 16 , ocurre que necesito instalar paquetes como el gcc-c++ y también Java y netbeans pero cuando lo intente usando tu me devuelve error cannot retrieve from repositorio fedora. He leído todo lo que pude ya hice clean al clean al meta data ya coloque repositorios para adobe, gnomo y para rpm free no free updates etc pero sigo sin suerte pido si alguien me puede dar una ayuda.
    Miguel

     
    • fjavierm

      3 junio, 2015 at 6:01 pm

      Siento comentarte que esto no es un foro y el artículo en el que has comentado nada tiene que ver con lo que expones. Te recomiendo que te dirijas a algún foro que cubra la temática de tu incidencia o incluso a los propios foros de la comunidad de fedora. Un saludo y suerte

       
  21. Anónimo

    27 julio, 2015 at 7:05 pm

    Excelente tu artículo, justamente estoy trabajando en firmas y certificados digitales para documentos en pdf, esto me sirve para agregarles varias firmas? gracias 🙂

     
  22. Mouhssin

    3 diciembre, 2015 at 11:24 am

    Hola svoboda,
    Tengo un certificado digital (.pfx) con clave privada, el problema es que se me olvidó la contraseña. Hay forma de saber /quitar la contraseña? Gracias y un saludo.

     
  23. Laura

    6 febrero, 2016 at 4:22 am

    Saludos, me encantó tu post , estoy buscando referencias de OpenSSL en español , podrías proporcionarme algunas ? O alguna idea de cómo aprender bien el uso de OpenSSL para crear certificados con diferentes características? Cómo poder insertar más datos al certificado ? Habló de datos como fecha de nacimiento , edad o un número de matrícula ?, Por favor . De antemano muchas gracias.

     
    • fjavierm

      7 febrero, 2016 at 7:00 pm

      He respondido a tu pregunta más arriba. Sobre referencias, no tengo ninguna a mano ahora mismo, pero no creo que tengas dificultad en encontrarlas con un par de búsquedas. Un saludo.

       
  24. Moises David Carreño

    22 mayo, 2016 at 2:01 am

    svoboda Buen dia bro .amm sobre una duda sobre esta parte del tuto

    Conversión de firmas binarias a texto: Como ya he dicho antes las firmas generadas tienen un formato binario, con lo cual para su envió por correo, por ejemplo, es interesantes pasarlas a texto. Así que vamos a generar una versión en base64.

    OpenSSL> base64 -in firmado.sig -out firmado.b64

    Como puedes observar, el fichero generado es legible y fácilmente agregable a cualquier texto. el fichero generado es para compartirlo a quien yo quiera de mis contactos para que lo descifren

     
  25. Ivette

    6 diciembre, 2016 at 12:34 am

    Hola buen día. estoy trabajando con las constancias de retenciones de impuestos en Mexico, necesito obtener el sello digital del archivo key de la empresa y generar la cadena original encriptada para anexarlas a la forma37 en un pdf. Soy nueva en esto del openssl y no he encontrado alguien mas que este haciendo esto para las retenciones. Segun eso me comentaron que la cadena orginal se convertia a bsae 64, se le genera un hash y luego se encripta usando la llave privada. Ademas luego se obtiene el sello digital usando esa cadena y el archivo key con su contraseña. La verdad he intentado algunos comandos pero lo que me resulta no se parece en nada a lo que tengo de referencia de un sello y cadena generados por un proveedor. Alguien me podria orientar por favor que pasos tengo que seguir para obtener colocar la cadena original y el sello digital en las constancias de retenciones? ya tengo el layout de la cadena y los archivos CER y KEY con su contraseña. Muchas gracias de antemano.

     
  26. carlos soto

    21 diciembre, 2016 at 8:21 pm

    Buenas tardes

    soy nuevo en el uso de openssl, ingresé a la sección download de la pagina openssl.org y decargue la versión openssl-1.1.0c.tar.gz pero no tengo idea de como se instala, he leido y entiendo que este es un archivo comprimido que debo instalar por linea de comando, quizas tu me puedas ayudar con un instructivo detallado para poder instalarlo, muchas gracias, quedo atento.

     
    • fjavierm

      22 diciembre, 2016 at 9:50 am

      Si usas una distribución de GNU/Linux, probablemente, venga instalado por defecto, si no usa el gestor de paquetes de la distribución. Si usas macOS, también viene instalado creo, pero si quieres la ultima versión, lo mejor es usar un gestor de paquetes como “homebrew” o “MacPorts”. En windows no recuerdo haberlo instalado nunca, tendrás que usar un poco Google.

       

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: