Fluid Attacks logo
Login
Contact Us
Young hacker smiling
Zero false positives

Expert intelligence + effective automation

Contact logo Contact Us
GET A DEMO

Importar Certificado Digital

Necesidad

Importar un certificado digital o confiar en uno autofirmado en Java.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se desarrolla una aplicación en el lenguaje Java

  2. Se posee acceso al keystore de la máquina virtual de Java.

Solución

Un certificado digital o certificado electrónico es un fichero informático con una estructura de datos que contiene información sobre una entidad. Este certificado es debe ser firmado por otra entidad, considerada por una colección de otras entidades como una autoridad para este tipo de contenido. La firma de la estructura de datos agrupa la información que contiene de forma que no puede ser modificada sin que esta modificación sea detectada.

Los certificados digitales se clasifican en dos tipos: los certificados de atributos y los certificados de clave pública. Los primeros, por lo general, no contienen claves públicas, sino que asocian otro tipo de información a alguna representación de la identidad de una entidad.

Por su parte, los certificados de clave pública asocian, valga la redundancia, una clave pública a alguna representación de la identidad de una entidad. La clave privada asociada a dicha clave pública está en posesión de dicha entidad. Además, se puede incluir otra información relevante como el periodo de valides, identificación de los algoritmos para los cuales se puede usar la clave pública o políticas y/o restricciones de uso de dicho certificado.[1]

A continuación, se describe el procedimiento para importar un certificado digital en el keystore de la máquina virtual de Java con el objetivo que se pueda realizar una conexión SSL/TLS desde una aplicación que corre bajo esta.

  1. Para realizar el procedimiento se utiliza la herramienta keytool la cual está incluida dentro del JDK de Java.

  2. El Keystore de Java se encuentra ubicado en $JAVA_HOME/jre/lib/security/cacerts. La contraseña predeterminada para este servicio es changeit.

  3. Después, se deben verificar los certificados instalados que se encuentran instalados en el keystore de la máquina virtual. Para esto se utiliza el comando keytool -list -keystore <keystorefile>, éste solicitará el password del keystore para poder accederlo.

    certificado.bash
    keytool -list -keystore cacerts
    
    Enter keystore password:
    
    Keystore type: JKS
    Keystore provider: SUN
    
    Your keystore contains 5 entries
    
    aolrootca2, Mar 26, 2008, trustedCertEntry,
    Certificate fingerprint (MD5): D6:ED:3C:CA:E2:66:0F:AF:10:43:0D:77:9B:04:09:BF
    deutschetelekomrootca2, Nov 6, 2008, trustedCertEntry,
    Certificate fingerprint (MD5): 74:01:4A:91:B1:08:C4:58:CE:47:CD:F0:DD:11:53:08
    aolrootca1, Jan 17, 2008, trustedCertEntry,
    Certificate fingerprint (MD5): 14:F1:08:AD:9D:FA:64:E2:89:E7:1C:CF:A8:AD:7D:5E
    secomscrootca1, May 1, 2008, trustedCertEntry,
    Certificate fingerprint (MD5): F1:BC:63:6A:54:E0:B5:27:F5:CD:E7:1A:E3:4D:6E:4A
    verisignclass3g2ca, Mar 25, 2004, trustedCertEntry,
    Certificate fingerprint (MD5): A2:33:9B:4C:74:78:73:D4:6C:E7:C1:F3:8D:CB:5C:E9
  4. Para importar un certificado al keystore se utiliza el comando 'keytool -import -alias <nombre alias del certificado> -keystore <keystorefile> -file <certfile>'. éste pedirá el password del keystore para poder acceder a este.

    keytool -import -alias cabco -keystore cacerts -file /tmp/ca.cer
    
    Enter keystore password:
    
    Owner: CN=VERISIGN, OU=Engineering Team,
    O=Fluid Attacks S.A., L=MEDELLIN, ST=ANTIOQUIA, C=CO
    Issuer: CN=VERISIGN, OU=Engineering Team,
    O=Fluid Attacks S.A., L=MEDELLIN, ST=ANTIOQUIA, C=CO
    Serial number: 3f817305
    Valid from: Sun Oct 05 08:49:57 COT 2003 until: Wed Jun 14 08:49:57 COT 2017
    Certificate fingerprints:
     MD5: 3D:C3:23:80:20:79:72:58:F9:4B:C7:B5:5D:A9:86:FE
     SHA1: BF:5D:E4:5C:F5:37:BD:22:35:65:48:EA:64:AD:08:BB:15:A9:1E:AC
     Signature algorithm name: MD5withRSA
     Version: 3
    Trust this certificate? [no]: yes
    Certificate was added to keystore

Service status - Terms of Use