Irgendwie hat mein Seafile-Client heute plötzlich diesen Fehler ausgegeben. Ich glaube nicht, dass es ein Seafile-Problem ist, da mein OpenSSL genau denselben Fehler ausgibt:
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/[email protected]
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/[email protected]
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
Für mich sieht der Kettenteil genauso aus wie er sollte. Die Apache-Konfiguration sollte auch in Ordnung sein:
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>
Ich kann mein Problem nicht finden ... (ca-certificates ist auf meinem Lubuntu 14.04 installiert).Ihre Websiteist nicht anwendbar, da sie ihr Zertifikat der Klasse 1 verlinkt haben, meins aber von ihnen für die Klasse 2 ausgestellt wurde.
Antwort1
verify error:num=20:unable to get local issuer certificate
Dieser Fehler von OpenSSL bedeutet, dass das Programm den Aussteller des Zertifikats oder das oberste Zertifikat einer bereitgestellten Kette nicht überprüfen konnte. Dies kann in einigen Fällen passieren, zum Beispiel:
- Die Zertifikatskette für das Zertifikat wurde von der Gegenseite nicht bereitgestellt oder es ist keine vorhanden (es ist selbstsigniert).
- Das Stammzertifikat befindet sich nicht in der lokalen Datenbank vertrauenswürdiger Stammzertifikate.
Die lokale Datenbank der vertrauenswürdigen Stammzertifikate wurde nicht angegeben und daher von OpenSSL nicht abgefragt. Um den Pfad zu den Zertifikaten explizit anzugeben, verwenden Sie die Option
-CApath
oder-CAfile
. Für Debian und Ubuntu lautet er beispielsweise:-CApath /etc/ssl/certs/ -CAfile /etc/ssl/certs/ca-certificates.crt
Dies führt entweder zu
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
Letzteres benötigt mehr Informationen. Es gibt eineFehlerbericht für OpenSSL in Ubuntu öffnenseit 2009:
Die Verwendung von -CApath scheint -CAfile auf den Standardwert /etc/ssl/certs/ca-certificates.crt zu setzen.
Egal, was Sie als Pfad angeben -CApath
, es kann funktionieren, da -CAfile
auch der auf seinen Standardwert gesetzt ist (der vorher leer war). Also,Verlassen Sie sich nicht auf das Standardverhalten von OpenSSL bei der Überprüfung von Zertifikatendurch eine lokale Zertifikatsdatenbank, es könnte gefälscht sein!