我读过很多教程,有些没有日期,有些可能已经过时了,有些在一些细节上不清楚……现在我很困惑。花了一整天的时间在这上面。
我正在使用 ubuntu 16.04 / apache2 和一些虚拟主机。
我获得了 SSL 证书,下载了文件并上传了它们。获得了一个捆绑文件和一个 .crt 文件。密钥文件是在此过程中较早生成的。
我猜我的第一个问题是关于虚拟主机的配置文件。一些教程说使用文件:default-ssl.conf,它位于:/etc/apache2/sites-available 中,并将其用作基础。
另一个教程说在主 domain-example.com.conf 文件内包含有关证书的所有详细信息。
那么,一个域是否应该有 2 个文件:用于 :80 端口的文件 main-domain.com.conf,另一个文件用于 :443 端口的 default-ssl.conf?
我的另一个问题是关于一些事物的语法和正确名称。首先,那部分:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
VirtualHost _default_
需要这样命名吗VirtualHost _default_
?还是我必须替换某些东西?该_default_
部分看起来很奇怪。
我的另一个问题是关于在配置文件中使用的正确名称:SSLCACertificateFile
或SSLCertificateChainFile
还遵循了托管公司的教程,其中说虚拟主机的配置文件应该包含服务器的 IP,因此它看起来像(注意部分<VirtualHost 155.131.133.211:80>
):
<VirtualHost 155.131.133.211:80>
ServerAdmin [email protected]
ServerName sitexample.com
ServerAlias www.sitexample.com
DocumentRoot /var/www/html/sitexample.com/
这真的是这样做的吗?因为在整天尝试了不同的方法之后,在某个时候,sitexample.com 不再指向具有正确路径 /var/www/html/sitexample.com/ 的正确网站,而是指向一个标题为“Index Of”的页面,它看起来像主 IP 服务器页面。
答案1
默认值取决于您使用的操作系统/发行版,但为了清楚起见,我建议将它们分开 - 但按站点而不是按协议(因此整个 www.website1.com 将在一个文件中,整个 www.otherwebsite.net 将在第二个文件中)。
您无需指定 VirtualHost 设置,除非您的默认站点对于 HTTP 和 HTTPS 不相同。在这种情况下(使用主机头识别),您需要为每个站点的 DNS 名称设置不同的 VirtualHost,并相应地设置“ServerName”。
SSLCACertificateFile 是您的证书,SSLCertificateChainFile 是捆绑包(来自您的颁发 CA 的证书)。
最后,你可能不想要,因为只有当有人去http://155.131.133.211 - 如果他们使用该站点的 DNS 名称,即使该名称解析为相同的 IP 地址,它也会将您发送到默认站点。