如何在 Apache2/Ubuntu 14.04 上安装 SSL

如何在 Apache2/Ubuntu 14.04 上安装 SSL

如果我的问题标题看起来像其他人的问题/转发的问题,我很抱歉,但我已经发现同样的问题,并且没有找到解决方案。

我刚刚购买 GeoTrust QuickSSL 并且我想在我的 上设置 SSL Amazon EC2 Instance

这是001-mysite-ssl.conf我保存的配置/etc/apache2/sites-available,然后创建符号链接/etc/apache2/sites-enabled/

<IfModule mod_ssl.c>
    <VirtualHost mysite.com:443>
            ServerAdmin [email protected]

            DocumentRoot /var/www/html

            #LogLevel info ssl:warn

            ErrorLog ${APACHE_LOG_DIR}/error-mysite-ssl.log
            CustomLog ${APACHE_LOG_DIR}/access-mysite-ssl.log combined

            SSLEngine on

            #   MySite SSL & Key File
            SSLCertificateFile      "/usr/local/ssl/certs/mysite_com.crt"
            SSLCertificateKeyFile   "/usr/local/private/mysite.com.key"

            #   Certificate Authority (CA):
            SSLCACertificateFile "/usr/local/certs/mysite_com.ca-bundle"

            SSLProtocol     TLSv1 TLSv1.1 TLSv1.2
            SSLCipherSuite  "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"

            <Directory "/var/www/html">
                    Options Indexes FollowSymlinks MultiViews
                    AllowOverride All
                    Require all granted

                    <FilesMatch "\.php$">
                            Require all granted
                            SetHandler proxy:fcgi://127.0.0.1:9000
                    </FilesMatch>
            </Directory>

            ServerSignature Off
            ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1

            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                    SSLOptions +StdEnvVars
            </FilesMatch>
            <Directory /usr/lib/cgi-bin>
                    SSLOptions +StdEnvVars
            </Directory>

            #   SSL Protocol Adjustments:
            BrowserMatch "MSIE [2-6]" \
                            nokeepalive ssl-unclean-shutdown \
                            downgrade-1.0 force-response-1.0
            # MSIE 7 and newer should be able to use keepalive
            BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    </VirtualHost>

我在错误日志中看到了这个error-mysite-ssl.log

 [Tue Aug 11 08:04:34.450708 2015] [ssl:warn] [pid 25086:tid 139975196800896] AH01909: ec2-57-xxx-xxx-xxx.ap-southeast-1.compute.amazonaws.com:443:0 server certificate does NOT include an ID which matches the server name

我确信我将 SSL 证书、SSL 密钥和 CA 捆绑包放置在上述配置的路径上,并将 SSL 证书和 CA 捆绑包的权限设置为 640,将 SSL 密钥的权限设置为 400。即使我尝试将权限更改为 766,也不起作用。我确信我注册的通用名称 (CN) 完全正确mysite.com(没有 www,只有 domain.TLD)。

当我尝试访问时,它给出结果:ERR_SSL_PROTOCOL_ERROR在 Google Chrome 上。当我使用 Firefox 时,它给出如下错误Error code: ssl_error_rx_record_too_long

哦,我运行 Ubuntu 14.04 x64 和 Apache 作为我的网络服务器。

请针对我的问题提供一些想法/建议。

答案1

Amazon EC2与我的问题无关,因为我已经通过管理控制台允许端口 443,因此端口 443 可以从外部访问。

这个问题的解决方案是我忘记将我的实例配置为专用 IP,并且是的,只为单个域分配单个公共 IP。因此,正确的配置是:

<IfModule mod_ssl.c>
    # I change mysite.com to *:443
    <VirtualHost *:443>
    ....
    </VirtualHost>
</IfModule>

目前,问题已经解决。如果您或其他人遇到与我相同的问题,请检查VirtualHost您的域和 443 端口是否已打开。

如果你的实例配置允许单个 IP 用于多个域,你应该保留如下配置

<IfModule mod_ssl.c>
    <VirtualHost domainA.com:443>
    ....
    </VirtualHost>
</IfModule>

并且不要忘记在本地实例上设置/配置 DNS 以支持该域正确运行 SSL。

相关内容