Je configure un nouveau serveur d'applications Web exécutant Ubuntu 16.04. La seule chose "inhabituelle" que j'ai faite est d'installer php 5.6 au lieu de php7. Php5.6 nécessite toutefois un certificat racine valide et je reçois des erreurs dans diverses applications qui s'y intéressent. Curl, cron, etc.
J'ai essayé divers correctifs pour résoudre ce problème sans amélioration. Tel que:
https://github.com/composer/composer/issues/3346#issuecomment-7659376
Comment installer un certificat racine?
Toujours pas de chance. Le travail cron que je lance génère toujours:
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Plus de détails ici: http://curl.haxx.se/docs/sslcerts.html
curl effectue la vérification du certificat SSL par défaut, à l'aide d'un "ensemble" de clés publiques (certificats) de l'autorité de certification (CA). Si le fichier d'ensemble par défaut ne vous convient pas, vous pouvez spécifier un autre fichier à l'aide de l'option --cacert.
Si ce serveur HTTPS utilise un certificat signé par une autorité de certification représentée dans l'ensemble, la vérification du certificat a probablement échoué en raison d'un problème avec le certificat (il peut expirer ou le nom peut ne pas correspondre au nom de domaine indiqué dans l'URL).
Si vous souhaitez désactiver la vérification du certificat par curl, utilisez l'option -k (ou --insecure).
Je suggère de vérifier la validité du certificat du serveur Web. Les étapes que vous décrivez sont correctes, mais voyons les faits à propos du certificat.
Les étapes ci-dessous que j'utilise pour dépanner le certificat de serveur Web.
(SERVER_COMMON_NAME est le serveur Web que vous souhaitez contacter)
echo | openssl s_client -servername ${SERVER_COMMON_NAME} \
-connect ${SERVER_COMMON_NAME}:443 2>/dev/null | \
openssl x509 -noout -subject
Vérifiez si le CA est celui que vous attendez (le fournisseur du certificat):
echo | openssl s_client -servername ${SERVER_COMMON_NAME} \
-connect ${SERVER_COMMON_NAME}:443 2>/dev/null | \
openssl x509 -noout -issuer
Vérifiez le champ/CN dans la ligne de l'émetteur.
echo | openssl s_client -servername $ {SERVER_COMMON_NAME}\ -connect $ {SERVER_COMMON_NAME}: 443 2>/dev/null |\ ouvert x 509 -noout -dates
Vérifiez les résultats 'notBefore' et 'notAfter'.
Si ce qui précède vous convient, testez avec curl ET en spécifiant le fichier de certificat racine de l’AC:
curl --cacert certs/the_ca.cert.pem -I https: // $ {SERVER_COMMON_NAME}: 443
Si l'option --cacert fonctionne, vérifiez si le fichier racine de l'autorité de certification est connu du système.
Ommit le –cacert. Si curl génère une erreur, le fichier racine-ca n'est PAS installé dans le répertoire des certificats ca du système.