如何在 ubuntu apache2 ec2 实例上正确启用 SSL?

如何在 ubuntu apache2 ec2 实例上正确启用 SSL?

我已经为 SSL 设置了一个 ubuntu (14.04.2) apache2 (2.4.7) 服务器,但似乎找不到证书。Ubuntu 在具有静态 IP、启用 443 端口和域名 theaudioserver.com 的 EC2 实例上运行,DNS 记录指向该静态 IP。以下是我设置服务器的方式:

  • 已创建密钥:openssl genrsa 2048 > privatekey.pem
  • 生成的证书请求:openssl req -new -key privatekey.pem -out csr.pem
  • 购买了带有 csr 的 CA SSL 证书,并将密钥保存server.crtserver_bundle.crt
  • 在 /etc/apache2/sites-available 中添加了ssl.conf针对 SSL 进行配置的文件:
    SSLStaplingCache shmcb:/tmp/stapling_cache(128000) <VirtualHost *:443>
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH SSLProtocol All -SSLv2 -SSLv3 SSLHonorCipherOrder On Header always set
    Strict-Transport-Security "max-age=63072000; includeSubdomains;
    preload" Header always set X-Frame-Options DENY Header always set
    X-Content-Type-Options nosniff
    SSLCompression off SSLUseStapling on
    ServerName theaudioserver.com
    SSLEngine on
    SSLCertificateFile /home/ubuntu/certs/server.crt
    SSLCertificateKeyFile /home/ubuntu/certs/privatekey.pem
    SSLCertificateChainFile /home/ubuntu/certs/server_bundle.crt

    DocumentRoot /var/www/html/
</VirtualHost>
  • 添加 SSLsudo a2enmod ssl
  • 成功重启 apache2(日志中没有任何错误)
  • 我还检查了 apache2 是否正在监听 443,它似乎监听正确:sudo netstat -anp | grep apache给出:tcp6 0 0 :::443 :::* LISTEN 3138/apache2

但是当我测试我的域名时,似乎找不到证书。

在 ssllabs.com 上,我得到了No SSL certificates were found on theaudioserver.com. Make sure that the name resolves to the correct server and that the SSL port (default is 443) is open on your server's firewall

通过以下方式访问服务器时https://52.24.39.220,由于我没有通过域名访问,因此我收到名称不匹配错误,但这表明 EC2 上的服务器防火墙似乎设置正确。

我在这里做错了什么?

答案1

我无法通过端口 443 连接到您的服务器,感觉像是防火墙问题。您是否在 EC2 安全组防火墙中打开了端口 443。您是否在主机的防火墙中打开了它?


更新;

您的 DNS 设置不正确

dig +short theaudioserver.com
52.25.39.220

而您说您可以通过 52 连接。24.39.220.

答案2

使用.htaccess网站根目录中的文件将非安全端口传入的请求重定向到安全端口,即 http:// -> https://

该文件应该包含如下内容:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

您需要编辑defaultsites-available包含:

DocumentRoot /var/www/html
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
<Directory /var/www/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

这允许.htaccess对该目录和所有包含的目录以及整个站点进行操作。

相关内容