I have been trying get SSL enabled on my AWS Elastic Beanstalk(eb) application with not much luck so far.
After following the documentation for configuring https access on eb, I created a self-signed certificate which I believe to be enough if one just wants encryption.
I created a eb environment which used a load balancer and after uploading the certificate, I was able to use it and pick the secure listening port (8443).
On the EC2 load balancer, I created a listener for
HTTPS 8443 HTTP 80 <cert file>
I then gave the load balancer and the eb instance a security group that had the rule:
Custom TCP Rule TCP 8443 0.0.0.0/0
I also included a config in .ebextensions pointing like the documentation told me:
Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupName: {Ref : <security_group_name>} IpProtocol: tcp ToPort: 8443 FromPort: 8443 CidrIp: 0.0.0.0/8443
Then in my flask application the application had these parameters:
from OpenSSL import SSL from flask_sslify import SSLify context = SSL.Context(SSL.TLSv1_2_METHOD) context.use_privatekey_file('/home/ec2-user/privatekey.pem') context.use_certificate_file('/home/ec2-user/server.crt') basic_auth = BasicAuth(application) sslify = SSLify(application) if __name__ == '__main__': application.run(host='0.0.0.0', port=8443, ssl_context=context)
Now when I go to the instance's public IP prefixed with https:// I get this:
Google Chrome Connection info (can't post images with current rep ughh)
Which makes me think that I have the encryption I'm after but the Flask server connection log still shows clear requests (expected to see jumbled, encrypted request info).
When I connect with the *.elasticbeanstalk.com address I get nothing.
So I guess I have two questions:
1) Does this mean I have encryption?
2) Why can't I access the instance with my elasticbeanstalk url?