web-dev-qa-db-fra.com

CloudFront n'a pas pu se connecter à l'origine

J'avais correctement configuré Cloudfront via http. Il a récupéré les données de mon site Web (dev.pie.video) bien. Je passe maintenant à https. Les choses fonctionnent bien à https://dev.pie.video mais Cloudfront ne peut pas traiter de contenu. Par exemple https://dev.pie.video/favicon-96x96.png fonctionne mais https: // d1mbpc40mdbs3p .cloudfront.net/favicon-96x96.png échoue avec le statut 502, même si ma distribution Cloudfront d1mbpc40mdbs3p pointe sur dev.pie.video.

Plus de détails si cela vous aide:

  • d1mbpc40mdbs3p.cloudfront.net utilise le certificat CloudFront par défaut pour https
  • origin de la distribution Cloudfront est configuré pour fonctionner sur SSL et TLS et pour utiliser le protocole du visualiseur.

===== Éditer 1 =====

captures d'écran des paramètres de cloudfront:

Général:  enter image description here

Origine:

 enter image description here

Comportements:

 enter image description here  enter image description here

==== Éditer 2 ====

si cela est utile, les journaux que je reçois de Cloudfront ressemblent

<timestamp> SFO20   924 96.90.217.130   GET d1mbpc40mdbs3p.cloudfront.net   /favicon-96x96.png  502 -   <someInfoOnTheClientBrowser>    2   -   Error   poZyhl63JNGFk8dIIjCluGDm4dxF8EdMZFhjg82NgHGPNqcmx6ArHA==    d1mbpc40mdbs3p.cloudfront.net   https   494 0.002   -   TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Error   HTTP/1.1
7
Guig

Votre serveur d'origine n'est pas configuré correctement pour SSL. CloudFront nécessite une configuration valide et peut être plus strict que certains navigateurs. Par conséquent, un verrou vert dans le navigateur ne signifie pas nécessairement que votre configuration SSL est complète et universellement compatible avec tous les clients.

$ true | openssl s_client -connect dev.pie.video:443 -showcerts
CONNECTED(00000003)
depth=0 OU = Domain Control Validated, CN = dev.pie.video
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, CN = dev.pie.video
verify error:num=27:certificate not trusted
verify return:1
depth=0 OU = Domain Control Validated, CN = dev.pie.video
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/OU=Domain Control Validated/CN=dev.pie.video
   i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
-----BEGIN CERTIFICATE-----
MIIFMzCCBBugAwIBAgIJAL96wtFpu1ZpMA0GCSqGSIb3DQEBCwUAMIG0MQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEa
MBgGA1UEChMRR29EYWRkeS5jb20sIEluYy4xLTArBgNVBAsTJGh0dHA6Ly9jZXJ0
cy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5LzEzMDEGA1UEAxMqR28gRGFkZHkgU2Vj
dXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTE2MDgwODE4MzQ0MFoX
DTE3MDgwODE4MzQ0MFowOzEhMB8GA1UECxMYRG9tYWluIENvbnRyb2wgVmFsaWRh
dGVkMRYwFAYDVQQDEw1kZXYucGllLnZpZGVvMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAz/wT5j/zHKzmt3oRvst74Knqxc0pl3sp5imUJ7UegoxcTISm
xJC5qQiDsD0U08kAFxvXDd91jlozh4QDcfLE8N7X9fsxC7OW2pDv3ks/LO7tiCxn
gNmxjvYvOQ/vASrLHIal+oGWJNdBMB1eckV4xHCeBDDEizDneq/qvjN0M0k5hQ+/
qk7RjVhJUmFAfvhXpxXaCbVDq1d3V1iRBo3oP3SGV++bj/m55QPFfKCZqGPTiM5G
c9+8ru16EVCpvs0wCWBVxjTiOCGtrMLgvp9LOs8AN369Yk/3AynpgAI0DDhb5y8I
KEuCdbUaIg5Zo029iZz4nWRsZFd5CSwgX8tZNQIDAQABo4IBvjCCAbowDAYDVR0T
AQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH/
BAQDAgWgMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwuZ29kYWRkeS5jb20v
Z2RpZzJzMS0yODIuY3JsMF0GA1UdIARWMFQwSAYLYIZIAYb9bQEHFwEwOTA3Bggr
BgEFBQcCARYraHR0cDovL2NlcnRpZmljYXRlcy5nb2RhZGR5LmNvbS9yZXBvc2l0
b3J5LzAIBgZngQwBAgEwdgYIKwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhhodHRw
Oi8vb2NzcC5nb2RhZGR5LmNvbS8wQAYIKwYBBQUHMAKGNGh0dHA6Ly9jZXJ0aWZp
Y2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS9nZGlnMi5jcnQwHwYDVR0jBBgw
FoAUQMK9J47MNIMwojPX+2yz8LQsgM4wKwYDVR0RBCQwIoINZGV2LnBpZS52aWRl
b4IRd3d3LmRldi5waWUudmlkZW8wHQYDVR0OBBYEFEPW+uDOOtZfUEdXuBs+960C
zQRKMA0GCSqGSIb3DQEBCwUAA4IBAQBLkLYJEc9E+IGv6pXaPCcYowJfji651Ju6
3DNzGXdyWfOXG+UVCMtPZuC9J66dID4Rc7HWzLveTPEI32z4IgtSjvRwRk9YyWVx
uCOpsP3e/Vgriwg5ds4NyrelQfshA3KaiTLohuiVEOBZgZgIwBEmwR2ZNFuL375E
uEn909zF9+sGkTbFnMm1zlqB2oh2UlSkUT3mj009vWF416W6kZQdFFFEmaI8uSmo
+Thd8HSxQytzWvB3dR4lCteiC09lkQPHU5t10tPgK9BtkLv05ICQQoDhFJmLeAcC
WNEmCcDnSHPxXjPi8kcyM6aqNofL1D0e1pYYvcpYQQDayWdY3tUh
-----END CERTIFICATE-----
---
Server certificate
subject=/OU=Domain Control Validated/CN=dev.pie.video
issuer=/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
---
No client certificate CA names sent
---
SSL handshake has read 2010 bytes and written 431 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
...clipped...

Votre certificat est signé par "Autorité de certification sécurisée Go Daddy - G2", qui est un certificat intermédiaire (pas un certificat racine). Ce certificat intermédiaire n'est pas installé sur votre serveur. Par conséquent, CloudFront indique qu'il est "impossible". connectez-vous, alors qu'en réalité, il est plus "réticent" à vous connecter, par mesure de sécurité, car il ne peut pas vérifier la validité de votre certificat SSL. Vous devriez les voir comme des échecs de négociation SSL dans le journal de votre serveur Web. La connexion elle-même fonctionne, mais CloudFront la considère comme non valide, et donc dangereuse à utiliser, en raison du problème de confiance.

Attention

Si le serveur d'origine renvoie un certificat expiré, un certificat non valide ou un certificat auto-signé, ou si le serveur d'origine renvoie la chaîne de certificats dans un ordre incorrect, CloudFront abandonne la connexion TCP et renvoie le code d'erreur HTTP 502. et définit l'en-tête X-Cache sur Error from cloudfront.

http://docs.aws.Amazon.com/AmazonCloudFront/latest/DeveloperGuide/SecureConnections.html

Ajoutez votre certificat intermédiaire à la configuration de votre serveur et vous devriez être défini. Cela aurait dû être fourni avec le certificat lorsque vous l'avez téléchargé, mais sinon, vous pouvez l'obtenir auprès de votre autorité de certification, Go Daddy dans ce cas.

Ce n'est pas une limitation spécifique aux certificats Go Daddy. Toutes les autorités de certification respectant les pratiques standard utilisent des certificats intermédiaires pour établir une chaîne de confiance avec une racine approuvée.

Voir également: 

https://www.godaddy.com/help/what-is-an-intermediate-certificate-868

https://certs.godaddy.com/repository

6
Michael - sqlbot

J'ai eu ce problème lors de l'utilisation de CloudFront (Amazon) par-dessus CloudFlare (société différente). Ils ont sûrement leurs certificats https corrects? 

Je ne suis pas allé au fond des choses et je viens de repasser à http pour l'Origin. C'étaient juste des images pour un stupide magasin eBay et je n'utilisais vraiment que CloudFront pour obscurcir le domaine situé en dessous (parce que les gens volent des URL d'image sur eBay). 

J'ai ajouté un paramètre de chaîne de requête ?a=1 et cela a fonctionné, ?a=2 a échoué, ?a=3 a travaillé, ?a=4 a travaillé et ?a=8 a échoué à nouveau. Donc, il y avait quelque chose de génial qui se passait soit avec CloudFront

Je ne suis toujours pas sûr de ce qui se passait, mais l'invalidation n'a pas résolu le problème, je ne l'aurais pas prévu non plus, puisque je transmettais des chaînes de requête et que le fait de changer a ne le faisait pas toujours fonctionner.

si vous rencontrez le problème, essayez d'ajouter un paramètre absurde, de l'incrémenter plusieurs fois et d'observer les résultats.

0
Simon_Weaver