Ssl

在非標準 HTTP 埠下為執行自己的 Web 伺服器的應用程序添加 HTTPS 支持

  • November 12, 2020

https://example.com我有一台執行 Debian 10 的伺服器。由於 LetsEncrypt 證書,它執行 Apache 2.4 以獲得可在 下訪問的 Web 服務。

但它也執行一個應用程序(Subsonic),它在自己的網路伺服器下的埠 4040 上提供一個 Web UI,因為我沒有它的虛擬主機,並且當 Apache 停止時它仍然可以訪問。因此,目前該應用程序可以在 HTTP 上訪問http://example.com:4040

我知道如何為 Apache vhost 添加 SSL 支持,但是如何為這個應用程序添加 HTTPS 支持,以便它可以在https://example.com:4040或上訪問https://example.com:1234

另外,我是否應該使用與該域已有的 SSL 證書不同的 SSL 證書?

在應用前添加反向代理,並在此代理上配置 HTTPS。方便的是,您正在執行 Apache,它可以愉快地為您反向代理。

就目前而言,您不能使用應用程序已經佔用的埠 4040,因此除非您可以更改應用程序的埠或使其僅綁定到 localhost(127.0.0.1 等),否則您將不得不執行這個應用程序在不同的埠上。關於這一點,如果您想通過 HTTPS 執行此應用程序,那麼讓不安全的 HTTP 仍然可以訪問它是沒有意義的,因此最好將此應用程序配置為綁定到 localhost 並使其只能通過反向代理訪問。

您需要ProxyPass一系列配置選項來創建反向代理。這是一個不完整的例子:

Listen <Public IP address of server>:4040

<VirtualHost *:4040>

 Protocols h2 h2c http/1.1
 ServerName example.com

 SSLEngine On

 # LetsEncrypt certificates (if not configured in another file)
 #  SSLCertificateFile    /etc/letsencrypt/live/example.com/fullchain.pem
 #  SSLCertificateKeyFile /etc/letsencrypt/live/eample.com/privkey.pem
 #  Include               /etc/letsencrypt/options-ssl-apache.conf

 ProxyPreserveHost On
 ProxyRequests Off
 ProxyPass / http://127.0.0.1:4040/
 ProxyPassReverse / http://127.0.0.1:4040/

</VirtualHost>

證書需要將客戶端用於連​​接的主機名嵌入到其主題備用名稱擴展中,因此,由於您似乎沒有提出不同的主機(example.com在這兩種情況下),因此您不需要新證書。

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