Ssl
在非標準 HTTP 埠下為執行自己的 Web 伺服器的應用程序添加 HTTPS 支持
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
在這兩種情況下),因此您不需要新證書。