我正在尝试在我的 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 配置是这里的罪魁祸首是有道理的,我似乎无法弄清楚我到底在哪里犯了错误。
假设您发布的代码来自 default-ssl.conf,试试这个:
a2dissite default-ssl.conf
然后
a2ensite default-ssl.conf
然后
service apache2 reload