Aller au contenu

x509-cert-algorithme-de-signature-insecure

Le certificat x509 utilise un algorithme cryptographique faible

L'attribut algorithme de signature du certificat X.509 utilise un algorithme cryptographique considéré comme non sécurisé et obsolète. Actuellement, Boost considère les algorithmes suivants comme non sécurisés : MD2, MD4, MD5, SHA-1, SHA-224, RIPE-MD160, SM3 et MDC2.

Il est recommandé d'utiliser l'un des algorithmes de signature suivants :

  • sha256WithRSAEncryption
  • sha512WithRSAEncryption
  • ecdsa-with-SHA256
  • ecdsa-with-SHA512

Par exemple, si vous souhaitez générer un certificat auto-signé à des fins de développement qui est signé avec SHA256, vous pouvez utiliser la commande OpenSSL suivante :

openssl req \
    -x509 \
    -nodes \
    -sha256 \
    -days 365 \
    -newkey rsa:2048 \
    -outform DER \
    -keyout example.com.private.key \
    -out example.com.der

Exemple Non Securisé

Sortie d'exemple pour un certificat stocké dans certificate.pem (codé au format PEM d'OpenSSL) : openssl x509 -in certificate.pem -inform PEM -text -noout

Certificat :
    Données :
        Version : 3 (0x2)
        Numéro de série : 2 (0x2)
    Algorithme de signature : md5WithRSAEncryption
        Émetteur : C=CA, ST=Canada, L=Montréal, O=Example Inc. Fast., CN=ca.example.com emailAddress=ca@example.com
        Validité
            Pas avant : 27 juil. 13:34:31 2002 GMT
            Pas après : 26 juil. 13:34:31 2004 GMT
        Émetteur : C=CA, ST=Canada, L=Montréal, O=Example Inc. Fast., CN=server.example.com emailAddress=server@example.com
        Informations sur la clé publique du sujet :
            Algorithme de clé publique : rsaEncryption
                Clé publique : (1024 bits)
                Modulus :
                    00:e4:e6:c1:f4:b9:59:6f:c6:81:c6:5f:cb:4b:4b:
                    b5:68:3c:2d:cf:bf:c6:5f:38:bb:e4:f2:16:0b:fa:
                    dc:ec:41:95:f6:c7:77:78:c8:a2:06:e7:4b:21:6c:
                    77:2f:48:97:d6:ee:df:4e:f1:4f:6a:43:bf:01:99:
                    2a:04:54:39:d9:68:0f:21:61:c4:5c:6b:67:49:77:
                    e0:85:80:75:ba:77:06:fd:b6:a7:c3:b8:06:0b:ac:
                    13:d3:00:eb:dc:18:ae:09:9d:fc:2e:43:28:b8:1c:
                    da:cb:3b:e3:2d:e0:60:8a:de:f3:24:92:81:0a:16:
                    8b:9f:aa:9a:1b:09:0c:3c:2f
                Exposant : 65537 (0x10001)
        Extensions X509v3 :
            X509v3 Contraintes de base :
                CA:FAUX
            Type de certificat Netscape :
                SSL Server
    Algorithme de signature : md5WithRSAEncryption
         39:ef:00:3c:1b:2f:cd:c1:6e:3c:da:6a:b4:7b:d1:a9:46:b6:
         f1:20:7b:fe:77:4b:f6:0e:bc:41:0d:63:1d:d1:f6:f9:37:83:
         cf:93:d3:ec:3a:e2:5b:7e:70:7a:de:6f:7a:fb:ee:59:d7:e8:
         f0:d3:ea:81:f1:09:00:a4:e7:c2:ec:3c:8d:7c:19:85:47:6a:
         76:63:c7:ce:68:95:79:dd:c7:2a:39:5f:df:0c:51:2d:22:29:
         93:c4:ed:90:1b:54:cf:27:10:7c:7c:bf:4a:32:18:9f:2e:02:
         8a:cb:6f:c9:69:b3:e1:ef:e3:0d:98:1e:a3:22:80:54:84:05:
         15:ff

Exemple Securisé

Certificat :
    Données :
        Version : 3 (0x2)
        Numéro de série :
            04:cc:6b:17:6a:5e:8d:97:3e:74:db:eb:cf:dd:71:b0:80:46
    Algorithme de signature : sha256WithRSAEncryption
        Émetteur : C=US, O=Let's Encrypt, CN=R3
        Validité
            Pas avant : 16 déc. 15:00:28 2020 GMT
            Pas après : 16 mars 15:00:28 2021 GMT
        Sujet : CN=helloworld.letsencrypt.org
        Informations sur la clé publique du sujet :
            Algorithme de clé publique : rsaEncryption
                Clé publique : (2048 bits)
                Modulus :
                    00:cb:eb:31:21:df:88:8f:cf:e3:88:ef:6a:e5:d9:
                    3f:e7:3e:40:b1:32:83:b4:7b:8c:80:9f:98:7e:76:
                    7f:56:7b:bb:94:49:72:2f:35:60:05:44:3e:c4:1d:
                    cf:f4:a4:98:70:e0:35:12:f2:5f:09:b7:59:e1:4b:
                    d9:e3:75:36:21:60:62:49:68:f2:7a:40:67:d1:f9:
                    72:2a:bc:73:ef:3b:12:c3:7e:a4:c3:11:9d:3a:bc:
                    15:ae:10:8e:fa:23:96:8d:f5:7e:44:aa:f5:27:a7:
                    aa:f8:93:d4:05:4d:60:b6:76:a4:0d:9c:35:9c:ef:
                    15:5e:8d:27:fc:8c:d0:32:0b:9d:8a:52:56:e8:1b:
                    99:dc:48:59:00:f4:4d:69:5c:f3:e8:ae:15:7b:86:
                    74:76:5b:b5:0b:25:7f:0c:80:a5:ad:64:e3:74:40:
                    5b:39:0a:9b:c3:9b:53:89:8e:cc:37:88:3d:86:16:
                    1f:12:c5:51:46:68:97:62:aa:c4:68:b0:63:7a:ef:
                    dc:20:25:ab:3d:e3:56:96:49:3e:d5:ed:99:d4:7c:
                    ce:f7:25:b1:3d:d6:2e:93:1d:fd:9d:24:71:1e:ad:
                    0c:29:a2:22:e2:5c:39:98:70:3d:b3:66:7a:f4:5f:
                    39:b6:e7:34:4e:4e:57:d7:d2:9b:00:df:19:a6:c8:
                    61:f3
                Exposant : 65537 (0x10001)
        Extensions X509v3 :
            X509v3 Utilisation de la clé : critique
                Signature numérique, Chiffrement de clé
            X509v3 Utilisation de clé étendue :
                Authentification de serveur web TLS, Authentification de client web TLS
        (.... tronqué)
    Algorithme de signature : sha256WithRSAEncryption
         2f:b8:b5:1e:60:ad:a0:8c:e5:4d:2d:95:ca:f5:52:cf:29:e3:
         28:40:e8:1c:82:50:47:d0:be:5e:f6:36:c4:ef:e9:78:d7:a5:
         cb:6b:9f:85:d3:2d:32:8d:1a:9e:bd:79:79:5b:b3:b7:15:12:
         66:ca:5d:fe:e2:da:8c:e8:5c:cf:2f:d7:a4:f3:38:71:5a:91:
         3f:2e:91:fc:a1:b7:f7:e7:35:6a:3e:30:6b:b9:02:08:71:b7:
         91:c5:21:32:f9:33:22:92:8f:ee:a7:6f:3d:9b:5b:9b:64:6e:
         bc:8d:05:79:15:41:00:3f:4d:19:69:59:ad:a4:4d:c0:85:9d:
         f4:f8:df:2d:7d:c4:ff:de:c7:64:3a:0c:06:11:39:44:c7:4e:
         2b:50:fe:74:2c:e5:b4:fd:2e:01:85:ca:2f:f0:58:cf:b6:87:
         95:d9:cb:33:2a:81:ab:89:38:7c:f2:3a:88:2e:34:0d:fa:ce:
         d7:0d:06:dd:8a:f0:66:40:9f:60:d3:61:91:10:50:13:7c:81:
         fa:27:39:8d:43:51:4c:a6:4c:93:4c:fe:ff:8d:64:a1:d1:93:
         e4:9d:58:fa:a9:a3:e9:e1:17:34:da:70:05:3a:67:0f:c8:1c:
         22:5c:42:c0:33:ef:d7:cb:e1:4d:f4:c4:05:dd:58:e9:28:76:
         4a:13:93:19