在Ubuntu 14.04 / Apache2上为Vhost启用SSL

时间:2016-05-19 22:42:30

标签: apache ssl

我试图在我的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配置在这里是罪魁祸首是有道理的,我似乎无法弄明白我在哪里犯了错误。任何帮助都会非常感谢,谢谢!

2 个答案:

答案 0 :(得分:0)

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

a2dissite default-ssl.conf

然后

a2ensite default-ssl.conf

然后

service apache2 reload

答案 1 :(得分:0)

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

有一个很棒的工具可以为你处理所有我强烈推荐的SSL配置 - 请查看它!

https://certbot.eff.org/