Certificat SSL fonctionnant en chrome, mais pas openssl s_client ou curl

Google chromes mise à jour vers la version 58 a commencé à invalider mes certificates auto-enregistrés il y a quelques jours. Il se plaignait d'avoir subjectAltNames . J'ai fait des searchs et j'ai essayé quelques suggestions (ce qui ne fonctionnerait pas), mais j'ai trouvé cette publication , la seule que je pourrais travailler.

Ou suis-je?

Yay chrome accepte maintenant mes certificates nouvellement générés et importés et j'étais en route,

jusqu'à ce que je frappe une page dans mon application Web PHP qui requirejs le chargement de données d'un autre micro-service Web sur la même machine de développement.

stream_socket_client (): l'opération SSL a échoué avec le code 1. OpenSSL Messages d'erreur: erreur: 14090086: routines SSL: ssl3_get_server_certificatee:

J'ai été googler et bricoler avec cela pendant environ 4 heures maintenant et je ne peux pas m'en occuper.

Question

Pourquoi chrome accepte-t-il mon certificate? TOUJOURS les outils comme curl , openssl s_client tout ce qui me permet unable to verify the first certificatee ou le invalid certificatee ? J'ai essayé de passer le certificate en tant que paramètre et toujours invalide.

Le debugging avec curl et openssl passant le file de certificate en tant que paramètre continue de me donner cette erreur

Le certificate SSL vérifie le résultat: impossible d'get le certificate de l'émetteur local (20)

Je pense que je serai complètement chauve à la fin de la journée.

Remarques

  • La machine virtuelle est mon environnement de développement local, donc j'ai plusieurs domaines avec leur propre cert et les keys

  • VM se trouve sur IP 192.168.33.10. Ce qui signifie que chrome n'hésite pas à localhost. Cependant, curl et openssl s_clinet tentent d'accéder à Locahost

  • Le server est une machine virtuelle exécutant ubuntu 14.04

  • Certificat auto-signé installé sur la machine hôte avec MMC (console de gestion Microsofts)

  • L'erreur provient définitivement de la class client essayant d'accéder à un service Web.

  • J'ai essayé de passer le certificate en tant que paramètre et toujours invalide.

  • Je suis pleinement conscient que je peux configurer vérifier peer to false ou pass –insecure à la request, mais je n'apprends rien de cela.

  • SSL-Session: protocole: TLSv1.2

  • a exécuté sudo dpkg-reconfigure ca-certificatees pour mettre à jour les certs

  • ont exécuté sudo update_ca_ccertificatees

  • J'ai atteint le niveau de frustration 9000

Rétablir la mise à jour

J'ai régénéré un nouveau certificate avec l'extension v3 éteint et Retour à Chrome me disant subjectAltName est manquant, mais Curl fonctionne. J'ai besoin de savoir comment générer des certs que Curl et Chrome accepteront.

Trouvé un didacticiel plus clair qui avait un openssl.conf beaucoup plus simple. Dans mes tentatives initiales d'append SAN s, je dois avoir des lignes supplémentaires non commentées dans la conf qui ajoutent des informations supplémentaires aux certs provoquant des conflits. Suivi ce model et mon certificate fonctionne tout autour:

 [req] distinguished_name = req_distinguished_name req_extensions = v3_req [req_distinguished_name] countryName = Country Name (2 letter code) countryName_default = US stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = MN localityName = Locality Name (eg, city) localityName_default = Minneapolis organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = Domain Control Validated commonName = Internet Widgits Ltd commonName_max = 64 [ v3_req ] # Extensions to add to a certificatee request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = kb.example.com DNS.2 = helpdesk.example.org DNS.3 = systems.example.net IP.1 = 192.168.1.1 IP.2 = 192.168.69.14 

Merci pour vos commentaires @garethTheRed. Vos commentaires m'ont aidé à ré-penser à mon approche du debugging de ce problème.

Même le lancement d'une publication ici m'a aidé à définir ce que j'ai essayé et à aider le cerveau à réfléchir à des solutions plus possibles.