wget, certificats auto-signés et un serveur HTTPS personnalisé
-
10-07-2019 - |
Question
Pour diverses raisons, j'ai créé un serveur HTTP simple et ajouté la prise en charge de SSL via OpenSSL. J'utilise des certificats auto-signés. IE, Firefox et Chrome chargent volontiers le contenu tant que j'ajoute l'autorité de certification aux autorités de certification racines approuvées.
Cependant, wget (même si vous utilisez l'indicateur - no-check-certificate
) indique:
OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Si j'exécute le client OpenSSL sur mon serveur en utilisant:
openssl s_client -connect dnvista:82 -debug
je reviens: erreur de vérification: num = 19: certificat auto-signé dans la chaîne de certificats vérifier le retour: 0 et ensuite
5852:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:.\ssl\s3_pkt.c:1060:SSL alert number 40
5852:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:.\ssl\s23_lib.c:188:
Est-ce que wget et le client OpenSSL ne fonctionnent tout simplement pas avec des certificats auto-signés?
UPDATE:
Pour ceux qui viendront plus tard, l'ajout de ce code a aidé le client OpenSSL et Firefox:
EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
SSL_CTX_set_tmp_ecdh(ctx, ecdh);
EC_KEY_free(ecdh);
La solution
J'ai consulté la page de manuel de wget
et - aucun certificat de contrôle
ne semble affecter que le certificat de serveur . Vous devez spécifier votre certificat auto-signé en tant que certificat d'autorité de certification valide localement.
Pour ce faire, spécifiez le certificat sous la forme - ca-certificate = ...
dans wget
et -CAfile
dans le s_client
case.
Autres conseils
Vous pouvez également installer des certificats d'autorité de certification racine approuvés dans OpenSSL de différentes façons:
- Placez votre certificat de CA dans / etc / pki / tls / certs ou un répertoire équivalent, puis créez un lien basé sur le hachage du certificat. Voir http://gagravarr.org/writing/openssl-certs/others. shtml # ca-openssl pour plus de détails.
- Ajoutez votre certificat de CA à /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem ou à un bundle de CA équivalent.