Linux

VirtualHosts 和 SSL,與 apache 的正確設置混淆

  • February 2, 2018

我已經紅色了很多教程,有些沒有任何日期,有些可能已經過時,有些在一些細節上不清楚……現在我很困惑。整天都在這上面。

我正在使用帶有一些虛擬主機的 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_部分看起來很奇怪。

我的另一個問題是關於在配置文件中使用的正確名稱:SSLCACertificateFileSSLCertificateChainFile

還遵循了託管公司的教程,其中說虛擬主機的配置文件應該有伺服器的 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 地址,它也會發送您改為預設站點。

引用自:https://serverfault.com/questions/895428