在 Ubuntu 14.04 / Apache2 上为 Vhost 启用 SSL

问题描述 投票:0回答:2

我正在尝试在我的 Ubuntu 服务器上的站点上启用 SSL。我在互联网上到处都发现了几乎相同的几个命令,它看起来非常简单,但由于某种原因我似乎无法正确使用它。

这是我的步骤(所有操作均以 root/sudo 权限完成)。

启用 SSL 模块

a2enmod ssl

为 Apache 和用户/站点所有者有权访问的我的密钥创建一个主管

sudo mkdir /etc/apache2/ssl

使用所属域的详细名称制作所需的密钥

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
      -keyout /etc/apache2/ssl/example.key -out /etc/apache2/ssl/example.crt

我有一个为这个站点制作的现有 .conf 文件,如下所示:

(我也将 /home 目录设置为 Web 目录)

<VirtualHost *:80>
       DocumentRoot /home/user
       <Directory /home/user>
               AllowOverride All
       </Directory>
       ServerName example.com
       ServerAlias www.example.com
       ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
       CustomLog ${APACHE_LOG_DIR}/example.com.access.log common
       AddType application/x-httpd-php .php
       <Files 'xmlrpc.php'>
               Order Allow,Deny
               deny from all
       </Files>
</VirtualHost>

我尝试使用以下 .conf 文件添加、替换、放置之前/之后,但无法使 https://example.com 正常工作。 (我添加的附加行是从此处的数字海洋教程中建议的:https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu -14-04

<IfModule mod_ssl.c>
    <VirtualHost *:443>
           DocumentRoot /home/user
           <Directory /home/user>
                   AllowOverride All
           </Directory>
           ServerName example.com
           ServerAlias www.example.com

            SSLEngine on
            SSLCertificateFile /etc/apache2/ssl/example.crt
            SSLCertificateKeyFile /etc/apache2/ssl/example.key
            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                    SSLOptions +StdEnvVars
            </FilesMatch>
            <Directory /usr/lib/cgi-bin>
                    SSLOptions +StdEnvVars
            </Directory>
            BrowserMatch "MSIE [2-6]" \
                    nokeepalive ssl-unclean-shutdown \
                    downgrade-1.0 force-response-1.0
            BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

           ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
           CustomLog ${APACHE_LOG_DIR}/example.com.access.log common
           AddType application/x-httpd-php .php
           <Files 'xmlrpc.php'>
                   Order Allow,Deny
                   deny from all
           </Files>
    </VirtualHost>
</IfModule>    

该站点之前已启用,因此我不必运行 a2ensite 命令,尽管我确实这样做了以确保该站点已启用。然后我重新启动了apache

service apache2 restart

然后去了 https://example.com 并且我的 SSL 没有运气。

我意识到我正在学习的教程是更新默认的 Apache 文件,我正在尝试创建另一个虚拟主机,所以它有点不同,但我只是创建一个额外的虚拟主机,我想它会完全正常工作与添加额外的 .conf 文件相同。

该站点在没有 SSL 的情况下运行良好,因此我的 Apache 配置是这里的罪魁祸首是有道理的,我似乎无法弄清楚我到底在哪里犯了错误。

apache ssl
2个回答
1
投票

假设您发布的代码来自 default-ssl.conf,试试这个:

a2dissite default-ssl.conf

然后

a2ensite default-ssl.conf

然后

service apache2 reload

0
投票

我不知道证书是自签名的,我必须在浏览器中授权证书。

有一个非常棒的工具可以为您处理所有 SSL 配置,我强烈推荐 - 检查一下!

https://certbot.eff.org/

© www.soinside.com 2019 - 2024. All rights reserved.