我有一个在 Ubuntu 10.04 上运行的 Apache 网络服务器,我想将所有内容切换到 HTTPS。
答案1
Apache2 附带了额外的工具,让这一切变得非常简单。如果你安装了 apache2-common 包,你mod_ssl
只需一个简单的命令就可以启用该模块(HTTPS 所必需的):
sudo a2enmod ssl
Apache2 还包含一个命令来帮助您轻松生成自签名证书,名为apache2-ssl-certificate
。按如下所示为服务器生成证书,或使用通过受信任的根 CA(Verisign、Entrust、Thawte 等)购买的证书。
sudo apache2-ssl-certificate -days 365
请记住,如果您使用自签名证书,用户在查看您的网站时将收到这个臭名昭著的警告:
/etc/apache2/sites-available/default
在 Apache 配置( )或 VirtualHost 指令(如下)中使用以下 4 个语句DocumentRoot
来为该特定站点打开 SSL 引擎:
SSLEngine on
SSLOptions +StrictRequire
SSLCertificateFile /etc/apache2/ssl/certs/apache.crt
SSLCertificateKeyFile /etc/apache2/apache-ssl/apache.pem
强制SSLOptions +StrictRequire
SSL 通信仅针对该特定站点。SSLCertificateFile
并SSLCertificateKeyFile
指定 SSL 证书的位置及其相应的密钥。
/etc/apache2/ports.conf
通过修改以包含以下指令,确保我们正在监听端口 443 Listen
:
echo "Listen 443" >> /etc/apache2/ports.conf
最后,您必须重新启动 Apache2 才能使更改生效:
sudo /etc/init.d/apache2 restart
更多乐趣:
配置端口 80 上的 HTTP 请求以重定向到端口 443和mod_rewrite
。
笔记:
其中一些数据来自过去使用 Debian/Ubuntu 系统的经验,有关最准确的说明,请参阅 10.04 指南Ubuntu 网站。
答案2
我不会告诉你如何在我看来,这样做超出了本论坛的范围(1)我只是说什么我认为你可以做到。
确实没有简单的这样做的方法。你确实需要了解一些 Apache 配置,并深入了解配置文件。除此之外,你还需要一个SSL 证书
最简单的方法是告诉你的 Web 服务器停止监听 80 端口(2)并且只监听 443 端口。更好的解决方案是让 apache将所有到端口 80 的连接重定向到端口 443
(1)这超出了我的专业知识范围
(2)或者在防火墙中阻止端口 80