使用Apache 2.2和GnuTLS(Debian Lenny)在一个IP地址上托管多个SSL网站
本教程介绍如何使用Debian Lenny服务器上的Apache 2.2和GnuTLS在一个IP地址上托管多个SSL加密的网站(HTTPS)。
有关为什么在OpenSSL 0.98g或GnuTLS之前无法完成的更多信息,请参阅http://en.wikipedia.org/wiki/Server_Name_Indication 。
我将提到在同一个IP地址下的虚拟主机SSL在开始之前和之前任何人开始窃取并将IP返回给他们的ISP都有1或2个警告。
1. Firefox 2.0+适用于所有平台(Mac / Windows / Linux) - 它具有自己的TLS实现 - 如果您为VMware工具启用了SSLv2,则Firefox也不起作用,但默认情况下Firefox附带的v2默认为禁用
2. Windows XP不支持SNI,在世界上仍然拥有40%的份额,因此除非在XP上使用Firefox,否则可能会疏远很多人。
3. Safari / Chrome / IE浏览器只能使用Vista或更高版本,因为它们使用O / S TLS实现
Safari / Chrome只能在Mac上使用10.5.7或更高版本
让我们假设你已经写了一个很酷的Web 2.0应用程序后面的SSL,只运行在最新和最好的浏览器,因为过多的Javascript,我上面所说的一切都会很好,因为你的网站不会工作在旧的浏览器O /无论如何没有Firefox。
您可以访问以下网址来测试浏览器是否通过了SNI: https : //sni.velox.ch/
让我们开始:
apt-get install libapache2-mod-gnutls
a2dismod ssl
a2enmod gnutls
编辑/etc/apache2/ports.conf
并添加以下行:
Listen 443
还要在/etc/apache2/ports.conf中注释掉
以下内容:
<IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 </IfModule>
最后创建一个名为/etc/apache2/ssl.conf
的文件:
NameVirtualHost xx.yy.zz.kk:443 <VirtualHost xx.yy.zz.kk:443> ServerName secure.domain1.com:443 GnuTLSEnable on GnuTLSCertificateFile /etc/apache2/ssl-certs/secure.domain1.com.crt GnuTLSKeyFile /etc/apache2/ssl-certs/secure.domain1.com.key GnuTLSPriorities NORMAL DocumentRoot /web/www1 </VirtualHost> <VirtualHost xx.yy.zz.kk:443> ServerName secure.domain2.com:443 GnuTLSEnable on GnuTLSCertificateFile /etc/apache2/ssl-certs/secure.domain2.com.crt GnuTLSKeyFile /etc/apache2/ssl-certs/secure.domain2.com.key GnuTLSPriorities NORMAL DocumentRoot /web/www2 </VirtualHost>
在/etc/apache2/apache2.conf中
添加包含行:
Include "/etc/apache2/ssl.conf"
最后重新启动Apache2:
apache2ctl restart
关于Godaddy SSL的注意事项:
通过Godaddy,您通常可以使用以下OpenSSL指令将gd_bundle导入到Apache中:
SSLCertificateChainFile /etc/apache2/ssl-certs/gd_intermediate_bundle.crt
为了在GnuTLS中使用此根证书,只需运行:
cat gd_intermediate_bundle.crt >> /etc/apache2/ssl-certs/secure.domain1.com.crt
这简单地将捆绑包附加到证书的末尾,GnuTLS非常高兴使用它。