我有一台 Ubuntu 服务器,正在运行一个应用程序,我可以通过我的网络浏览器访问http://xxxx:8500。
我想在此服务器上启用 HTTPS 协议。如何让用户输入https://xxxxx没有端口并重定向到端口 8500?
或者尝试配置https://xxxx:8500?
我需要在 apache 中创建虚拟主机吗?
提前致谢
答案1
您的应用程序在端口 8500 上是在 Apache 下运行的,还是由其他 Web 服务器提供的?因为下面我提供了针对 Apache 的说明。
您不能在同一个端口上使用 HTTP 和 HTTPS。因此,如果您在端口 8500 上使用 HTTP,则需要为 HTTPS 使用其他端口。通常,HTTP 的默认端口为 80,HTTPS 的默认端口为 443 - 如果您未在 URL 中指定端口,浏览器会假定此端口。
至于在 Apache 中启用 HTTPS:
首先,您需要安装 Apache SSL 模块并在 Apache 配置中启用它(如果安装后未自动启用)。这通常是通过在目录中创建/etc/apache2/mods-enabled
指向目录中ssl.*
文件的符号链接来完成的/etc/apache2/mods-available
(这些文件应作为 Apache SSL 模块的一部分进行安装)。
然后,您需要为启用 HTTPS 的站点创建虚拟主机。在/etc/apache2/sites-available
目录中,您通常会找到两个模板文件default
和default-ssl
。它们定义了 HTTP 和 HTTPS 虚拟主机的基本初始配置。该文件default
通常在目录中已经有符号链接/etc/apache2/sites-enabled
。您还需要符号链接另一个文件(同样,如果在安装 SSL 模块时没有自动完成此操作)。
该文件default-ssl
包含包含证书和私钥的文件路径(或者,如果您选择使用该格式,则将两者合并到一个文件中)。您需要证书才能使您的 HTTPS 站点正常运行。您的安装可能附带一些已生成的默认自签名证书 - 此证书将在您的浏览器中触发警告,因为浏览器不知道此证书的颁发者,但点击警告后,您应该能够毫无问题地访问该站点并测试它是否正常工作。
如果您的系统上还没有证书,您可以使用 OpenSSL 生成一个证书 - 网上有很多教程教您如何操作。当然,您的浏览器也会显示相同的警告。
为了避免这些警告,在生产使用中,你需要一个由你的浏览器已知的证书颁发机构 (CA) 颁发的证书 - 有两个流行的证书免费提供 -LetsEncrypt和零SSL。但是,这些免费证书的有效期仅为 90 天,因此需要经常更新(付费证书通常可以购买 1 年的证书)。这两个网站都包含如何获取证书的说明,包括安装用于自动更新证书的软件。
这里的关键点是您需要修改default-ssl
文件中提到的路径以指向存储实际证书的文件。
当然,您可能对您的default
文件进行了一些定制(比如可能更改DocumentRoot
、添加一些Alias
或ScriptAlias
语句Redirect
、更改一些权限等) - 您需要对进行相同的定制default-ssl
。
完成所有修改后重新启动 Apache,以确保新配置已被采用。