多个SSL – 同一个Apache服务器上的每个域都有一个SSL?

我是一个Linux新手。 我第一次在VPS上build立了自己的LAMP服务器。 到目前为止,一切都进展顺利。 我在我的VPS上只有一个IP地址(这是所谓的基于虚拟主机?)主持几个域名。

我的VPS上的两个网站bikestore.com和toystore.com最终将成为接受信用卡信息的电子商务网站。 我正在为这两个站点启用https版本,所以我为每个站点购买了1个新的IP地址。

我遵循本指南安装SSL证书: http : //www.linode.com/wiki/index.php/Apache2_SSL_in_Ubuntu

在创build/ etc / apache2 / sites-available / bikestore-ssl和/etc/apache2/ sites-available / toystore-ssl时,Apache会知道https://bikestore.com应该使用ssl证书引用IP地址1.1.1.1 bikestore.crt和http://toystore.com应该引用IP地址2.2.2.2与ssl证书toystore.crt?

在检查bikestore-ssl和toystore-ssl的内容时,我不清楚apache如何知道哪个* -ssl文件分配给哪个https://域。 所以我希望这里有人可以解释发生了什么,如果我正确地做事。

谢谢

Apache忽略文件名,您必须在虚拟主机定义中定义IP地址。 例如,对于我的网站pupeno.com,我有:

<IfModule mod_ssl.c> <VirtualHost 97.107.141.29:443> ServerName pupeno.com DocumentRoot /var/www/pupeno.com CustomLog /var/log/apache2/access-pupeno.com.log combined SSLEngine On SSLCertificateFile /etc/ssl/certs/pupeno.com.pem SSLCertificateKeyFile /etc/ssl/private/pupeno.com.pem #SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire </VirtualHost> </IfModule> 

另外,没有理由有单独的文件。 我有一个文件pupeno.com.conf其中包括non-ssl和ssl pupeno.com虚拟主机的定义。 想想你想用a2ensite和a2dissite来启用和禁用。 我认为http://pupeno.com和https://pupeno.com是一样的东西,因此它在pupeno.com.conf&#x3002;

本质上,Apache根据IP地址,ServerName和ServerAlias条目select要提供哪个VirtualHost服务。 对于SSL sans-TLS,仅仅关心IP地址就足够了,因为您要为每个VirtualHost分配一个唯一的IP。 每个VirtualHost可能有一个唯一的“SSLCertificateFile”指令。

你需要的最小configuration是:

 <VirtualHost IP1:443> SSLEngine On SSLCertificateFile IP1.pem </VirtualHost> <VirtualHost IP2:443> SSLEngine On SSLCertificateFile IP2.pem </VirtualHost> 

大概你会想要把DocumentRoot,mod_proxy,或mod_rewrite规则扔到那里。 例如:

 <VirtualHost IP1:443> SSLEngine On SSLCertificateFile IP1.pem # points to a local directory DocumentRoot /var/www/ </VirtualHost> <VirtualHost IP2:443> SSLEngine On SSLCertificateFile IP2.pem # transparently serves the content off another webpage. RewriteEngine On RewriteRule ^/?(.*) http://www.non-secure-site.com/$1 [P] </VirtualHost>