VirtualHosts 和 SSL,與 apache 的正確設置混淆
我已經紅色了很多教程,有些沒有任何日期,有些可能已經過時,有些在一些細節上不清楚……現在我很困惑。整天都在這上面。
我正在使用帶有一些虛擬主機的 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 admin@sitexample.com 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 地址,它也會發送您改為預設站點。