¿Riesgos asociados con la distribución de claves privadas encriptadas con nuestro software?

1

Nuestro software contiene dos ejecutables que necesitan servir datos a través de SSL (y varios que necesitan hacer solicitudes a través de HTTPS). Observo que se distribuye con algunos archivos .PEM creados con OpenSSL. El software lee estos archivos cuando necesita consumir o servir a través de HTTPS.
El segundo archivo dice: COMENZAR CLAVE PRIVADA CIFRITADA

Pregunta: Si las claves privadas nunca deberían distribuirse, ¿está bien distribuir la versión cifrada? ¿Corremos algún riesgo con eso?

He leído ¿Es una mala práctica agregar una clave privada encriptada al control de fuente? , pero todavía no estoy claro si otros pueden hacer algo malicioso (falsificación) con esa clave privada encriptada.

(Por cierto, hay un tercer certificado intermedio debido al problema de RapidSSL Los certificados no son de confianza en Android , pero eso parece irrelevante para la pregunta).

Primer archivo

Encabezado:

Bag Attributes
    localKeyID: 01 00 00 00 
    friendlyName: TimeTellbv wildcard
subject=/serialNumber=34VD79pOnKBR2dM5LC69jkD7PGuRM6VC/OU=GT04962750/OU=See www.rapidssl.com/resources/cps (c)13/OU=Domain Control Validated - RapidSSL(R)/CN=*.timetellbv.nl
issuer=/C=US/O=GeoTrust, Inc./CN=RapidSSL CA
-----BEGIN CERTIFICATE-----

Convertido a texto con

c:\OpenSSL-Win32\bin\openssl x509 -in tt_https.pem -inform PEM -noout -text >tt_https.txt

se lee:

Certificate:
Data:
    Version: 3 (0x2)
    Serial Number: 962889 (0xeb149)
Signature Algorithm: sha1WithRSAEncryption
    Issuer: C=US, O=GeoTrust, Inc., CN=RapidSSL CA
    Validity
        Not Before: Oct 23 04:44:55 2013 GMT
        Not After : Oct 25 11:45:46 2016 GMT
    Subject: serialNumber=34VD79pOnKBR2dM5LC69jkD7PGuRM6VC, OU=GT04962750, OU=See www.rapidssl.com/resources/cps (c)13, OU=Domain Control Validated - RapidSSL(R), CN=*.timetellbv.nl
    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
            Public-Key: (2048 bit)
            Modulus:
                00:d4:a4:bf:b9:bb:cf:f9:e9:88:95:f3:e5:c7:b9:
                [snip]
                e7:27
            Exponent: 65537 (0x10001)
    X509v3 extensions:
        X509v3 Authority Key Identifier: 
            keyid:6B:69:3D:6A:18:42:4A:DD:8F:02:65:39:FD:35:24:86:78:91:16:30

        X509v3 Key Usage: critical
            Digital Signature, Key Encipherment
        X509v3 Extended Key Usage: 
            TLS Web Server Authentication, TLS Web Client Authentication
        X509v3 Subject Alternative Name: 
            DNS:*.timetellbv.nl, DNS:timetellbv.nl
        X509v3 CRL Distribution Points: 

            Full Name:
              URI:http://rapidssl-crl.geotrust.com/crls/rapidssl.crl

        X509v3 Subject Key Identifier: 
            CA:86:AC:B6:13:D3:96:F8:60:5F:DF:B2:F6:FA:28:E0:75:30:DB:D0
        X509v3 Basic Constraints: critical
            CA:FALSE
        Authority Information Access: 
            OCSP - URI:http://rapidssl-ocsp.geotrust.com
            CA Issuers - URI:http://rapidssl-aia.geotrust.com/rapidssl.crt

        X509v3 Certificate Policies: 
            Policy: 2.16.840.1.113733.1.7.54
              CPS: http://www.geotrust.com/resources/cps

Signature Algorithm: sha1WithRSAEncryption
     56:b9:59:c1:ed:d1:a5:84:2a:ce:96:14:0e:ad:db:fc:80:80:
     [snip]
     c7:7c:10:fb

Segundo archivo

Encabezado:

Bag Attributes
    Microsoft Local Key set: <No Values>
    localKeyID: 01 00 00 00 
    friendlyName: le-0f8807ed-4cbe-43a6-84a9-94ef82e3fd39
    Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
Key Attributes
    X509v3 Key Usage: 10 
-----BEGIN ENCRYPTED PRIVATE KEY-----

La conversión al formulario de texto falla:

c:\OpenSSL-Win32\bin\openssl x509 -in tt_https_key.pem -inform PEM -noout -text >tt_https_key.txt

unable to load certificate
2180:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib
.c:696:Expecting: TRUSTED CERTIFICATE
    
pregunta Jan Doggen 04.03.2014 - 09:00
fuente

1 respuesta

0

Hay casos en los que realmente puede distribuir la clave privada (incluso sin cifrar) pero en realidad están en el límite (por ejemplo, es posible que desee reducir la cantidad de conexiones ssl que su servidor aceptará incluso antes de realizar la autenticación del cliente, pero es posible que no haya la posibilidad de emitir correctamente a cada cliente su propio certificado de autenticación de cliente).

No parece que eso sea lo que estás haciendo aquí: ese certificado es un certificado de servidor comodín para el dominio timetellbv.nl. No tiene mucho sentido usar eso para la autenticación del cliente (sería mejor que use su propia CA para eso), así que probablemente lo esté usando para servir el archivo.

Entonces, la siguiente pregunta sería: ¿de qué tipo de implementación estamos hablando? Si está hablando de una implementación de un solo sitio (es decir, es su propio certificado y está implementando su propia aplicación en su propio servidor), entonces podría ser una mala práctica colocar los certificados en el paquete de implementación (consulte la pregunta enlazaste), pero no está haciendo que tu seguridad no sea válida.

Sin embargo, si está implementando una aplicación desde o hacia un tercero, entonces este es un gran no-no: la única forma de utilizar dicho certificado es usarlo de manera incorrecta: no es apropiado para identificar CUALQUIER sistema, pero los que están bajo el dominio * .timetellbv.nl y no deben utilizarse.

(Como nota al margen, enlace devuelve un certificado no válido: el nombre DNS no coincide)

    
respondido por el Stephane 04.03.2014 - 09:48
fuente

Lea otras preguntas en las etiquetas