Rimuovere le estensioni X509v3 dal file PEM?

1

Ho un certificato autofirmato che è stato creato usando makecert su Windows. Ora questo certificato deve essere utilizzato da una nuova applicazione; questa nuova app utilizza openssl in background per la convalida dei certificati. Il problema che ho è che se scrivo questo comando:

openssl.exe verify sts-token-signing.pem

Ho questo risultato:

error 20 at 0 depth lookup:unable to get local issuer certificate

Mentre il risultato che mi aspetto è questo (ottengo questa risposta con un altro certificato makecert):

error 18 at 0 depth lookup:self signed certificate
OK

Se stampo i dettagli del certificato utilizzando openssl.exe x509 -text -noout -in sts-token-signing.pem , ho:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            40:c1:c8:1e:65:b0:25:8d:4a:86:a1:4a:dc:0a:ea:5b
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: CN=sts.example.com - Token Signing
        Validity
            Not Before: Feb  2 08:24:46 2015 GMT
            Not After : Jan 30 08:24:46 2020 GMT
        Subject: CN=sts.example.com - Token Signing
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    hexdata
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication, Code Signing
            X509v3 Subject Key Identifier:
                65:0E:B9:FB:1D:A6:EF:37:94:BA:43:4D:55:D2:9D:6D:1C:C6:87:ED
            X509v3 Key Usage: critical
                Key Encipherment
    Signature Algorithm: sha1WithRSAEncryption
         hexdata

Come puoi vedere, "Emittente" e "Soggetto" sono gli stessi. Quindi è autofirmato. La mia ipotesi è che alcune estensioni non siano valide dal punto di vista di opensl.

  1. Qualcuno sa come posso rendere openssl accettare questo certificato?

  2. Un'altra idea, è possibile rimuovere alcune estensioni X509v3 dal file PEM se Non ho la chiave privata?

(Non mi interessa davvero le estensioni, tutto quello che mi serve è dare un file PEM a un'applicazione, quindi questa app può validare le firme basate sulla chiave pubblica contenuta nel file)

    
posta Matthieu 25.01.2018 - 15:09
fonte

1 risposta

2

Se stai solo utilizzando il certificato per la chiave pubblica, perché preoccuparti di convalidare? Se vuoi sapere che il file non è corrotto, non è ... o avresti ottenuto un errore molto diverso.

L'algoritmo di convalida è sconvolto dal fatto che si dispone di un'estensione Utilizzo chiave che non specifica l'utilizzo della firma del certificato. Nelle revisioni future del certificato, aggiungere l'utilizzo della firma del certificato o omettere completamente l'estensione Uso chiave.

Se dovessi modificare il certificato per rimuovere l'estensione, la firma non funzionerebbe per la chiave pubblica, quindi il certificato sarebbe auto-emesso, ma non autofirmato ... il che significa che deve esserci un genitore certificato da qualche parte Quindi non risolve alcun problema per te. La risposta efficace è "no, hai bisogno della chiave privata per riemettere un certificato autofirmato".

Dati dell'esperimento:

ss_badku.cer

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 2818056532535039313 (0x271bbf7c52b85551)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=Experiment
        Validity
            Not Before: Jan 26 15:00:55 2018 GMT
            Not After : Jan 26 16:00:55 2028 GMT
        Subject: CN=Experiment
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (512 bit)
                Modulus:
                    00:9b:6a:6e:37:39:84:57:04:53:34:64:3e:73:f0:
                    76:c1:9d:04:e5:81:37:02:cc:6d:02:f7:5d:38:3a:
                    2e:b0:5f:5b:42:ad:67:52:cc:88:95:46:92:50:b7:
                    30:6b:c5:c6:36:e3:8c:48:24:6a:1c:5a:dd:92:1a:
                    25:44:c8:61:13
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication, Code Signing
            X509v3 Subject Key Identifier:
                5F:59:83:8E:FB:D3:13:BD:70:5F:E9:38:C3:A3:D9:49:F6:F4:BD:31
            X509v3 Key Usage: critical
                Key Encipherment
    Signature Algorithm: sha256WithRSAEncryption
         95:49:6c:90:bb:87:92:54:ba:c9:1b:a6:98:7a:9e:29:15:b7:
         b0:c7:75:fa:e2:66:4c:79:74:71:69:e3:17:cf:dc:6f:90:a2:
         f4:f1:7f:51:cd:7c:14:ed:6f:7d:32:55:55:41:8d:91:d2:31:
         2d:76:b0:6c:3f:76:6e:41:40:61
-----BEGIN CERTIFICATE-----
MIIBfDCCASagAwIBAgIIJxu/fFK4VVEwDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
AxMKRXhwZXJpbWVudDAeFw0xODAxMjYxNTAwNTVaFw0yODAxMjYxNjAwNTVaMBUx
EzARBgNVBAMTCkV4cGVyaW1lbnQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAm2pu
NzmEVwRTNGQ+c/B2wZ0E5YE3AsxtAvddODousF9bQq1nUsyIlUaSULcwa8XGNuOM
SCRqHFrdkholRMhhEwIDAQABo1owWDAnBgNVHSUEIDAeBggrBgEFBQcDAQYIKwYB
BQUHAwIGCCsGAQUFBwMDMB0GA1UdDgQWBBRfWYOO+9MTvXBf6TjDo9lJ9vS9MTAO
BgNVHQ8BAf8EBAMCBSAwDQYJKoZIhvcNAQELBQADQQCVSWyQu4eSVLrJG6aYep4p
Fbewx3X64mZMeXRxaeMXz9xvkKL08X9RzXwU7W99MlVVQY2R0jEtdrBsP3ZuQUBh
-----END CERTIFICATE-----

ss_noku.cer

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 10026821066004793515 (0x8b266ca2999e88ab)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=Experiment
        Validity
            Not Before: Jan 26 15:00:55 2018 GMT
            Not After : Jan 26 16:00:55 2028 GMT
        Subject: CN=Experiment
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (512 bit)
                Modulus:
                    00:9b:6a:6e:37:39:84:57:04:53:34:64:3e:73:f0:
                    76:c1:9d:04:e5:81:37:02:cc:6d:02:f7:5d:38:3a:
                    2e:b0:5f:5b:42:ad:67:52:cc:88:95:46:92:50:b7:
                    30:6b:c5:c6:36:e3:8c:48:24:6a:1c:5a:dd:92:1a:
                    25:44:c8:61:13
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication, Code Signing
            X509v3 Subject Key Identifier:
                5F:59:83:8E:FB:D3:13:BD:70:5F:E9:38:C3:A3:D9:49:F6:F4:BD:31
    Signature Algorithm: sha256WithRSAEncryption
         72:a1:23:a0:00:c1:e0:dc:9a:11:21:4b:57:aa:42:49:c5:ae:
         05:e7:97:43:71:75:2d:33:b2:9f:96:4c:45:4d:80:91:51:5a:
         6f:bb:f3:03:67:10:f9:ac:f8:d5:00:b5:4b:85:10:2e:d7:45:
         d2:8f:e1:2e:0b:98:dd:e3:3e:fb
-----BEGIN CERTIFICATE-----
MIIBbTCCARegAwIBAgIJAIsmbKKZnoirMA0GCSqGSIb3DQEBCwUAMBUxEzARBgNV
BAMTCkV4cGVyaW1lbnQwHhcNMTgwMTI2MTUwMDU1WhcNMjgwMTI2MTYwMDU1WjAV
MRMwEQYDVQQDEwpFeHBlcmltZW50MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJtq
bjc5hFcEUzRkPnPwdsGdBOWBNwLMbQL3XTg6LrBfW0KtZ1LMiJVGklC3MGvFxjbj
jEgkahxa3ZIaJUTIYRMCAwEAAaNKMEgwJwYDVR0lBCAwHgYIKwYBBQUHAwEGCCsG
AQUFBwMCBggrBgEFBQcDAzAdBgNVHQ4EFgQUX1mDjvvTE71wX+k4w6PZSfb0vTEw
DQYJKoZIhvcNAQELBQADQQByoSOgAMHg3JoRIUtXqkJJxa4F55dDcXUtM7KflkxF
TYCRUVpvu/MDZxD5rPjVALVLhRAu10XSj+EuC5jd4z77
-----END CERTIFICATE-----

ss_ku.cer

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 14221161353214574683 (0xc55bb6e75fde405b)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=Experiment
        Validity
            Not Before: Jan 26 15:00:55 2018 GMT
            Not After : Jan 26 16:00:55 2028 GMT
        Subject: CN=Experiment
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (512 bit)
                Modulus:
                    00:9b:6a:6e:37:39:84:57:04:53:34:64:3e:73:f0:
                    76:c1:9d:04:e5:81:37:02:cc:6d:02:f7:5d:38:3a:
                    2e:b0:5f:5b:42:ad:67:52:cc:88:95:46:92:50:b7:
                    30:6b:c5:c6:36:e3:8c:48:24:6a:1c:5a:dd:92:1a:
                    25:44:c8:61:13
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication, Code Signing
            X509v3 Subject Key Identifier:
                5F:59:83:8E:FB:D3:13:BD:70:5F:E9:38:C3:A3:D9:49:F6:F4:BD:31
            X509v3 Key Usage: critical
                Key Encipherment, Certificate Sign
    Signature Algorithm: sha256WithRSAEncryption
         5e:eb:47:69:b0:65:c2:c1:d8:ee:85:0d:66:ae:76:96:ab:47:
         bc:dd:ea:2e:c8:f6:bf:1d:c2:1f:d3:e6:f0:ca:1a:80:5d:00:
         7c:a5:cd:2b:0d:b9:b1:31:84:f9:ed:75:72:5a:31:82:ef:c3:
         9e:7e:16:b3:68:aa:89:8a:80:52
-----BEGIN CERTIFICATE-----
MIIBfTCCASegAwIBAgIJAMVbtudf3kBbMA0GCSqGSIb3DQEBCwUAMBUxEzARBgNV
BAMTCkV4cGVyaW1lbnQwHhcNMTgwMTI2MTUwMDU1WhcNMjgwMTI2MTYwMDU1WjAV
MRMwEQYDVQQDEwpFeHBlcmltZW50MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJtq
bjc5hFcEUzRkPnPwdsGdBOWBNwLMbQL3XTg6LrBfW0KtZ1LMiJVGklC3MGvFxjbj
jEgkahxa3ZIaJUTIYRMCAwEAAaNaMFgwJwYDVR0lBCAwHgYIKwYBBQUHAwEGCCsG
AQUFBwMCBggrBgEFBQcDAzAdBgNVHQ4EFgQUX1mDjvvTE71wX+k4w6PZSfb0vTEw
DgYDVR0PAQH/BAQDAgIkMA0GCSqGSIb3DQEBCwUAA0EAXutHabBlwsHY7oUNZq52
lqtHvN3qLsj2vx3CH9Pm8MoagF0AfKXNKw25sTGE+e11cloxgu/Dnn4Ws2iqiYqA
Ug==
-----END CERTIFICATE-----

E l'esecuzione:

$ openssl verify ss_badku.cer ss_noku.cer ss_ku.cer
ss_badku.cer: CN = Experiment
error 20 at 0 depth lookup:unable to get local issuer certificate
ss_noku.cer: CN = Experiment
error 18 at 0 depth lookup:self signed certificate
OK
ss_ku.cer: CN = Experiment
error 18 at 0 depth lookup:self signed certificate
OK
    
risposta data 25.01.2018 - 15:30
fonte

Leggi altre domande sui tag