apache ssl - impossibile ottenere il certificato dell'emittente locale


10

In qualche modo proprio oggi improvvisamente il mio client Seafile ha lanciato questo errore. Non credo che sia un problema di file di mare, perché il mio openssl genera lo stesso errore esatto:

user@nb-user:~$ echo |openssl s_client -connect seafile.mydomain.ch:443
CONNECTED(00000003)
depth=1 C = IL, O = StartCom Ltd., OU = Secure Digital Certificate Signing, CN = StartCom Class 2 Primary Intermediate Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/description=5RygJ9fx8e2SBLzw/C=CH/ST=Thurgau/L=Frauenfeld/O=mydomain GmbH/CN=*.mydomain.ch/emailAddress=postmaster@mydomain.ch
   i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 2 Primary Intermediate Server CA
 1 s:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 2 Primary Intermediate Server CA
   i:/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGqzCCBZOgAwIBAgIDAjmGMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYDVQQGEwJJ
TDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0
[... some more lines]
-----END CERTIFICATE-----
subject=/description=5RygJ9fx8e2SBLzw/C=CH/ST=Thurgau/L=Frauenfeld/O=mydomain GmbH/CN=*.mydomain.ch/emailAddress=postmaster@mydomain.ch
issuer=/C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Class 2 Primary Intermediate Server CA
---
No client certificate CA names sent
---
SSL handshake has read 3997 bytes and written 431 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 96E1F6B9E123F8F8C1C1E8FB0DBACDBBE76ECB3E2CF5C46C1FD2CF46833C8212
    Session-ID-ctx: 
    Master-Key: 25837E1786B0CC60E676D0694319641CD0887F9CAF48A820F1C0D6ABA6FDE0742551816ACD2A4885B0D3FC143716B1F6
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 88 15 c0 c5 30 04 63 d6-ff 7c 72 c4 12 84 7b d6   ....0.c..|r...{.
    0010 - 73 33 8d 91 7c da ce 22-23 d0 31 fb c1 7f 1c 9c   s3..|.."#.1.....
    [... some more lines]

    Start Time: 1424953937
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---
DONE

Per me la parte della catena sembra esattamente ciò che dovrebbe. Anche la conf apache dovrebbe essere ok:

root@i-can-haz-data ~ # cat /etc/apache2/sites-enabled/seafile.conf

<VirtualHost *:443>

    ServerName seafile.mydomain.ch
    DocumentRoot /opt/seafile/www

    [... seafile specific things]

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLEngine on
    SSLCertificateFile      /etc/ssl/custom/wildcardmydomain.ch.crt
    SSLCertificateKeyFile   /etc/ssl/custom/wildcardmydomain.ch.key
    SSLCertificateChainFile /etc/ssl/custom/wildcardmydomain.ch.chain.crt

    [... seafile specific things]

</VirtualHost>

Non riesco a trovare il mio problema ... (i certificati ca sono installati sul mio lubuntu 14.04). Il loro sito non è applicabile perché hanno collegato il loro certificato di Classe 1, ma il mio è rilasciato dalla loro Classe 2.


Quale sistema operativo? Aggiornati i certificati ca di recente? Ci sono stati aggiornamenti per Ubuntu il 23-02-2015. Cosa succede se aggiungi -CApath /etc/ssl/certs/o dove sono archiviati i tuoi certificati? Forse ti manca il certificato radice nella catena?
sebix,

Caspita, mi indichi nella giusta direzione. Grazie! echo | openssl s_client -connect seafile.mydomain.ch:443 -CApath / etc / ssl / certs / -> Verifica codice di ritorno: 0 (ok) DISTRIB_DESCRIPTION = "Ubuntu 14.04.2 LTS". Aggiornamento del sistema: 0 aggiornato, 0 appena installato, 0 da rimuovere e 0 non aggiornato. Pacchetto: ii certificati ca 20141019ubuntu0.14.04.1
Dionigi

Risposte:


19
verify error:num=20:unable to get local issuer certificate

Questo errore di OpenSSL indica che il programma non è stato in grado di verificare l'emittente del certificato o il certificato più in alto di una catena fornita. Questo può accadere in alcuni casi, ad esempio:

  • La catena di certificati per il certificato non è stata fornita dall'altra parte o non ne ha una (è autofirmata).
  • Il certificato radice non si trova nel database locale dei certificati radice attendibili.
  • Il database locale di certificati radice attendibili non è stato fornito e quindi non interrogato da OpenSSL. Per fornire esplicitamente il percorso ai certificati, utilizzare l' opzione -CApatho -CAfile. Per Debian e Ubuntu è ad esempio:

    -CApath /etc/ssl/certs/
    -CAfile /etc/ssl/certs/ca-certificates.crt
    

    risultando così in entrambi

    openssl s_client -connect example.com:443 -CApath /etc/ssl/certs/
    openssl s_client -connect example.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt
    

Quest'ultimo ha bisogno di maggiori informazioni. Esiste una segnalazione di bug aperta per OpenSSL in Ubuntu dal 2009:

L'uso di -CApath sembra impostare -CAfile sul valore predefinito di /etc/ssl/certs/ca-certificates.crt.

Indipendentemente da ciò che dai come percorso -CApath, potrebbe funzionare, perché -CAfileè anche impostato sul valore predefinito (che era precedentemente vuoto). Quindi, non fare affidamento sul comportamento predefinito di OpenSSL sulla verifica dei certificati da parte di un database dei certificati locale, potrebbe essere falso!


Quindi vuoi dire che la configurazione del mio server e del mio notebook non è nulla di sbagliato (perché va bene con l'opzione -CApath)? Bene, allora è colpa del client del file di mare che mi ha notificato quell'errore? Forse è questo il problema: github.com/haiwen/seafile-client/issues/93 - Ma grazie, contrassegnato come risolto :)
Dionigi

Ho approfondito il comportamento di OpenSSL, vedi il mio post aggiornato. Puoi anche prendere in considerazione la votazione;)
sebix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.