在我的服务器上运行SSL有一些麻烦。 我只需要它在这个盒子上的两个域名之一。 我有两个IP,我在DNS上使用Alogging来将域指向不同的IP。
这是我的httpd.conf:
NameVirtualHost XX.XX.XXX.X1:80 NameVirtualHost XX.XX.XXX.X2:80 NameVirtualHost XX.XX.XXX.X2:443 <VirtualHost XX.XX.XXX.X1:80> ServerName domain1.com ServerAlias .* WSGIScriptAlias / /home/domain1/domain1.wsgi </VirtualHost> <VirtualHost XX.XX.XXX.X2:80> ServerName domain2.me DocumentRoot /var/www/domain2 </VirtualHost> <VirtualHost XX.XX.XXX.X2:443> ServerName www.domain2.me DocumentRoot /var/www/domain2 ServerAdmin [email protected] SSLEngine ON SSLCertificateFile /etc/apache2/ssl/domain2.me.ssl/domain2.me.crt SSLCertificateKeyFile /etc/apache2/ssl/domain2.me.ssl/domain2.me.key SSLCACertificateFile /etc/apache2/ssl/domain2.me.ssl/gd_bundle.crt </VirtualHost>
希望有什么明显的错误跳出来。 这里有两个要点与我尝试过的其他configuration的链接。 第一个只是尝试使用apache的snakeoil证书:
Snakeoil证书
另一个失败的尝试类似于这里发布的一个
基本上,当我拉起https://www.domain2.me时,会出现“页面不可用”的情况。
提前致谢。
更新:问题是iptables没有configuration为接受端口443上的stream量。我接受EightBitTony的答案,因为他的configuration工作完美后,我修好了我的iptables。
这个设置适用于我(这是默认的Debian的东西,几乎没有变化)。
在ports.conf中
NameVirtualHost *:80 Listen 80 <IfModule mod_ssl.c> # If you add NameVirtualHost *:443 here, you will also have to change # the VirtualHost statement in /etc/apache2/sites-available/default-ssl # to <VirtualHost *:443> # Server Name Indication for SSL named virtual hosts is currently not # supported by MSIE on Windows XP. Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule>
这匹配你的。
然后,对于我的每个虚拟主机(非SSL),
<VirtualHost *:80> ServerName domain.example:80 DocumentRoot "/some/path/to/html" UseCanonicalName Off <Directory "/some/path/to/html"> ... stuff .... </Directory> </VirtualHost>
和SSL
<VirtualHost *:443> ServerName ssl-domain.example:443 UseCanonicalName Off DocumentRoot "/some/path/to/ssl-html" <Directory "/some/path/to/ssl-html"> ... stuff ... </Directory> SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key </VirtualHost>
我想你应该使用UseCanonicalName Off
以便服务器根据客户端传递的详细信息生成URL,以便获取正确的端口和名称。 全部细节在这里 。
最后,您需要确保相关的SSL模块已启用,我认为这是您的情况(但这是为了完整性)。
更新:除了监听正确的端口之外,还需要确保iptables不会阻塞或丢弃端口443上的SSLstream量。