我已经为 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.crt
到server_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>
- 添加 SSL
sudo 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]
您需要编辑default
以sites-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
对该目录和所有包含的目录以及整个站点进行操作。