Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Problema com aplicação e post

Olá,

Estou com o seguinte problema. Tenho uma aplicação que fazer um post para ela mesma, porém usando o cloudfront com https ele me retorna um erro 403. Minha dúvida seria se eu preciso fazer alguma configuração no cloudfront pra essa aplicação ou se preciso usar um cors na própria aplicação.

Obrigado desde já.

7 respostas

Olá Jônatas,

Para poder utilizar outras requisições HTTP é necessário configurar no Cloudfront na aba Allowed HTTP Methods. Segue print abaixo:

Abs

O que eu fiz no caso foi subir a aplicação num container ai fixo no load balancer um target group, nesse caso a aplicação fica exposta na porta 80 mesmo. Do load balancer ela vai pro cloudfront, se eu acessar a pagina ela funciona corretamente o problema é qualquer requisição que use post a aplicação da um erro 403. Localmente ela está funcionando, porém no servidor não funciona nem via http e nem via https.

No caso do ACL olhando aqui, tanto inbound quanto outbound ele tem a regra abaixo:

100

ALL Traffic

ALL

ALL

0.0.0.0/0

ALLOW

Já cheguei em algumas coisas interessantes: Pela url a aplicação não prove os arquivos estáticos como https só http. Acessando via ip ele está provendo os arquivos em https. Acessando o load balancer ele está provendo os arquivos estáticos como https. Acessando o cloudfront eu levo o erro abaixo:

 CloudFront wasn't able to connect to the origin.

no momento estou empacado nisso.

Após pesquisar em alguns fóruns e na documentaçao da AWS, vi alguns usuários comentando que isso pode ser um problema de configuração do certificado de segurança no servidor de origem. Tente executar o comando abaixo para verificar o emissor do certificado de sua aplicação:

 true | openssl s_client -connect [meu domínio]:443 -showcerts

Se o certificado foi emitido por empresas intermediárias, como por exemplo Go Daddy você precisa ter o certificado dessa empresa intermediária instalado no sevidor de origem, caso contrário o Cloudfront por medida de segurança não realiza a conexão com o servidor de origem.

Estou encaminhando abaixo o link orignal de uma dúvida no stackoverflow onde consegui essa informação, espero que ajude: https://stackoverflow.com/questions/38839693/cloudfront-wasnt-able-to-connect-to-the-origin

Abs

Rodei o comando e deu a linha abaixo:

CONNECTED(00000003)
139631064118936:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:802:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 308 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1522766918
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

Não sei se estou errado, mas se eu marco que na minha configuração do origin ele sempre acessar http e no Behavior eu mando direcionar requisições http para https, porém quando acesso a url da minha aplicação ele está provendo os arquivos estáticos como http.

solução!

Descobri o problema, a aplicação (que é em flask) está passando os assets como caminho absoluto.

No caso como no container é servido http o cloudfront não consegue converter os arquivos de http para https por que eles estão fixos.

Sendo assim se passar os assets com o caminho relativo o problema é resolvido!