我已经红色了很多教程,有些没有任何日期,有些可能已经过时,有些在一些细节上不清楚......现在我很困惑。整天都在这上面。
我正在使用带有一些虚拟主机的 ubuntu 16.04 / apache2。
我得到了一个 ssl 证书,下载了文件并上传了它们。有一个捆绑文件和一个 .crt 文件。密钥文件是在该过程的早期生成的。
我猜我的第一个问题是关于虚拟主机的配置文件。一些教程说要使用文件:default-ssl.conf,里面是:/etc/apache2/sites-available,并将其用作基础。
另一个教程说在主 domain-example.com.conf 文件中包含有关证书的所有详细信息。
那么,一个域是否应该有 2 个文件,文件 main-domain.com.conf 用于 :80 端口,另一个文件是 default-ssl.conf 用于 :443 端口?
我的另一个问题是关于一些东西的语法和正确名称。首先,那部分:
<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/ 的正确网站,而是指向具有“索引”的页面作为标题,它看起来像主 IP 服务器页面。
默认值取决于您使用的操作系统/发行版,但为了清楚起见,我建议将它们分开 - 但每个站点,而不是每个协议(因此所有 www.website1.com 都将在一个文件中,所有 www.otherwebsite.网络将在一秒钟内)。
您不需要指定 VirtualHost 设置,除非您的默认站点与 HTTP 和 HTTPS 不同。在这种情况下(使用主机头识别),您需要为每个站点的 DNS 名称使用不同的 VirtualHost,并相应地设置“ServerName”。
SSLCACertificateFile 是您的证书, SSLCertificateChainFile 是捆绑包(来自您的颁发 CA 的证书)。
最后,您可能不想拥有,因为这只会在有人访问http://155.131.133.211时触发 - 如果他们使用该站点的 DNS 名称,即使该名称解析为相同的 IP 地址,它也会发送您改为默认站点。