簡體   English   中英

在Apache服務器上安裝了SSL,頁面無響應

[英]Installed SSL on Apache server, page not responding

我的問題是關於SSL安裝的。 我為在Apache 2.4.29的Ubuntu 16.04機器上托管的網站購買了新的SSL。 我能夠安裝此程序,但沒有出現任何錯誤,但我的頁面未重定向。 我遵循了一些指南(DigitalOcean),但感覺好像缺少一些東西。

我已經檢查了站點可用的文件(000-default.conf,default-ssl.conf和example.com.conf),但沒有發現任何吸引我的東西,但是我感覺自己丟失了一些東西。 我檢查了Apache的狀態,沒有收到任何錯誤,並且已經多次重啟服務,但無濟於事。

這是我所擁有的大致分類。 我想念什么嗎? 設置是否需要其他信息?

000-default.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    Redirect "/" "https://example.com/"
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

默認的ssl.conf

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www
            SSLCertificateFile /root/example.com.crt
            SSLCertificateKeyFile /root/www.example.com.key
            SSLCACertificateFile /root/intermediate.crt

            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                            SSLOptions +StdEnvVars
            </FilesMatch>

            <Directory /usr/lib/cgi-bin>
                            SSLOptions +StdEnvVars
            </Directory>

            </VirtualHost>
 </IfModule>4

mydomain.com.conf

<VirtualHost *:443>
    ServerAdmin admin@somedomain.com
    ServerName mydomain.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/html
    Redirect permanent / https://example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

這是我嘗試組合配置的嘗試。 請注意,我沒有用於測試的設置,但是在生產服務器上使用了類似的配置。

首先定義您的端口80 VirtualHost(在您的設置中為000-default.conf):

Listen 80

<VirtualHost *:80>

    Redirect "/" "https://example.com/"

    LogLevel debug
    ErrorLog  "${APACHE_LOG_DIR}/80_error.log"
    CustomLog "${APACHE_LOG_DIR}/80_access.log" combined
</VirtualHost>

因為您重定向了所有內容,所以不需要DocumentRoot

然后注釋掉default-ssl.conf 該文件是您可以設置啟用SSL的VirtualHost的示例。 如果您使用該文件和端口443上的另一個VirtualHost,則將始終使用該文件,因為Apache使用的第一個VirtualHost會找到與客戶端請求匹配的虛擬主機(此處為端口443)。

還有一點,VirtualHost不會彼此“添加”。 每個獨立於其他,並且必須包含完整的配置。 這意味着您不能將某些配置放在端口443上的VirtualHost上,而不能將某些配置放在端口上並且期望它能正常工作。

然后創建您的example.com.conf文件:

Listen 443

<VirtualHost *:443>
    ServerName  example.com
    ServerAlias www.example.com

    ServerAdmin admin@example.com

    SSLCertificateFile    "/root/example.com.crt"
    SSLCertificateKeyFile "/root/example.com.key"
    SSLCACertificateFile  "/root/intermediate.crt"

    LogLevel debug
    ErrorLog  "logs/443_error_log"
    CustomLog "logs/443_access_log" combined

    DocumentRoot "/var/www/example.com/html"
    DirectoryIndex index.html
    <Directory "/var/www/example.com/html">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

</VirtualHost>

一些注意事項:

  • 我將LogLevel置於調試狀態,因此可以進行故障排除,但是一旦運行,就將其更改為錯誤。 否則,您將很快擁有巨大的日志文件!
  • 出於相同的原因,我將端口80和端口443的日志分開。每個VirtualHost都應具有自己的日志。
  • 證書文件必須與域名匹配。 不是文件名(盡管它使匹配更容易),而是證書本身。
  • 如果希望證書覆蓋example.com www.example.com,則必須將兩個名稱都添加到證書的備用名稱中。
  • 我不明白為什么您的配置中包含Redirect permanent / https://example.com 您已經位於https端口443 VirtualHost中。
  • 如果需要,可以在默認的ssl配置中添加基於<FilesMatch>指令的選項。

此設置將確保所有http請求都將重定向到https://example.com 然后它將使用:443 VirtualHost,為該域使用適當的證書,並提供DocumentRoot目錄中的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM