Code
Code

Reputation: 6251

EC2 SSL not working

I'm running an EC2 micro instance (Amazon Linux) and can't seem to get ssl (https) working.

The error I'm getting in Chrome is "ERR_CONNECTION_REFUSED" (no data sent).

I've enabled HTTPS inbound traffic for the security group in my AWS console.

I added this in the /etc/httpd/conf/httpd.conf file. (example.com is a placeholder for my website)

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    SSLCertificateFile /etc/ssl/example_com.crt
    SSLCertificateKeyFile /etc/ssl/example_com.key
    SSLCertificateChainFile /etc/ssl/example_com.ca-bundle
</VirtualHost>

and it didn't work.

So to test VirtualHost, I replaced it with the following:

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://google.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    Redirect permanent / https://google.com/
</VirtualHost>

http://example.com redirected to google like expected, but https://example.com didn't.

Anyone know what's the problem?

Upvotes: 2

Views: 5522

Answers (2)

Michael - sqlbot
Michael - sqlbot

Reputation: 178956

Connection refused means your server's IP stack actively rejected the incoming connection on port 443 (https) because no service is listening on port 443.

We use less and less Apache these days in my operations, because of the maturity of some other alternatives, so I may be a little rusty here, but I'm reasonably sure that your server, in spite of being configured with a way to respond to requests on port 443... is not actually listening for connections on port 443.

You probably have a listen 80 somewhere in your apache config. This will need to be accompanied by listen 443 based on httpd.apache.org/docs/2.2/bind.html:

When Apache starts, it binds to some port and address on the local machine and waits for incoming requests. By default, it listens to all addresses on the machine. However, it may need to be told to listen on specific ports, or only on selected addresses, or a combination of both. This is often combined with the Virtual Host feature, which determines how Apache responds to different IP addresses, hostnames and ports.

Upvotes: 6

Mark B
Mark B

Reputation: 200411

In addition to configuring the security group to allow the traffic over port 443, you probably also need to open port 443 on the server itself.

iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT

If that fixes the issue, then to save the configuration so that it persists after a reboot:

/sbin/service iptables save

Upvotes: 2

Related Questions