Debian

Apache2 SSL 僅在刪除虛擬主機時才有效?

  • February 10, 2022

我正在創建一個託管在sparrowthenerd.space的網站,我試圖讓它使用多個子域,這樣我就可以從同一個 IP 地址執行 NextCloud、OctoPrint 和一個通用網頁。據我了解,這可以通過 Apache2 中的 VirtualHosts 來完成。但是,除非我從我的 conf 文件(如下)中刪除 virtualhost 標籤,否則我會在啟用 CloudFlare 的情況下收到 SSL 握手錯誤,如果沒有它,則會收到 SSL 協議錯誤。

我在 Debian 11 Bullseye 上使用 Apache2 v2.4.52。Web 伺服器是自託管的,並通過代理在埠 9999 上使用 NodeJS(我認為這是正確的術語?)。

#<VirtualHost xxx:xx:xx:xxx:443>
       ServerAdmin webmaster@localhost
       ServerName sparrowthenerd.space
       DocumentRoot /var/www/sparrowthenerd

       ProxyPass /.well-known/ !
       ProxyPass / http://localhost:9999/
       ProxyPassReverse / http://localhost:9999/
       ProxyPreserveHost On

       SSLEngine on
       SSLProtocol all -SSLv2
       SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
       SSLCertificateFile /etc/apache2/ssl/sparrowthenerd.space.pem
       SSLCertificateKeyFile /etc/apache2/ssl/sparrowthenerd.space.key


       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

       <Directory /var/www>
               AllowOverride none

               Order Allow,Deny
               Allow from all
       </Directory>
#</VirtualHost>

當虛擬主機標籤未註釋時,我收到錯誤消息。當他們被評論時,我沒有,但我也不能添加額外的子域。我正在使用帶有 Cloudflare SSL 證書的 CloudFlare 代理伺服器。如果您需要更多資訊,請告訴我,我很樂意提供!

原來我是個白痴,並將我的內部埠 80 轉發到外部埠 443,因此伺服器接收的是 HTTP 請求而不是 HTTPS 並拋出錯誤。

VirtualHost您的指令中不應包含 IP 地址。您應該讓 Apache 綁定到那裡的所有介面:

<VirtualHost *:443>

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