De alguna manera, hoy, de repente, mi cliente seafile arrojó este error. No creo que sea un problema de archivo marino, porque mi openssl arroja exactamente el mismo error:
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
Para mí, la parte de la cadena se ve exactamente como debería. La configuración de Apache también debería estar bien:
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>
No puedo encontrar cuál es mi problema... (ca-certificates está instalado en mi lubuntu 14.04).Su sitioNo aplica porque vincularon su certificado Clase 1, pero el mío lo emite su Clase 2.
Respuesta1
verify error:num=20:unable to get local issuer certificate
Este error de OpenSSL significa que el programa no pudo verificar el emisor del certificado o el certificado superior de una cadena proporcionada. Esto puede suceder en algunos casos, por ejemplo:
- La otra parte no proporcionó la cadena de certificado para el certificado o no la tiene (está autofirmada).
- El certificado raíz no está en la base de datos local de certificados raíz confiables.
La base de datos local de certificados raíz confiables no fue proporcionada y, por lo tanto, OpenSSL no la consultó. Para proporcionar la ruta a los certificados de forma explícita, utilice la opción
-CApath
o-CAfile
. Para Debian y Ubuntu es por ejemplo:-CApath /etc/ssl/certs/ -CAfile /etc/ssl/certs/ca-certificates.crt
resultando así en
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
Este último necesita más información. Hay unabrir informe de error para OpenSSL en Ubuntudesde el 2009:
El uso de -CApath parece establecer -CAfile en el valor predeterminado de /etc/ssl/certs/ca-certificates.crt.
No importa lo que proporcione como ruta -CApath
, puede funcionar, porque -CAfile
también está configurado en su valor predeterminado (que estaba vacío de antemano). Entonces,no confíe en el comportamiento predeterminado de OpenSSL al verificar certificadospor la base de datos de certificados local, ¡puede ser falso!