在我的服务器上启用 HTTPS

在我的服务器上启用 HTTPS

我有一台 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目录中,您通常会找到两个模板文件defaultdefault-ssl。它们定义了 HTTP 和 HTTPS 虚拟主机的基本初始配置。该文件default通常在目录中已经有符号链接/etc/apache2/sites-enabled。您还需要符号链接另一个文件(同样,如果在安装 SSL 模块时没有自动完成此操作)。

该文件default-ssl包含包含证书和私钥的文件路径(或者,如果您选择使用该格式,则将两者合并到一个文件中)。您需要证书才能使您的 HTTPS 站点正常运行。您的安装可能附带一些已生成的默认自签名证书 - 此证书将在您的浏览器中触发警告,因为浏览器不知道此证书的颁发者,但点击警告后,您应该能够毫无问题地访问该站点并测试它是否正常工作。

如果您的系统上还没有证书,您可以使用 OpenSSL 生成一个证书 - 网上有很多教程教您如何操作。当然,您的浏览器也会显示相同的警告。

为了避免这些警告,在生产使用中,你需要一个由你的浏览器已知的证书颁发机构 (CA) 颁发的证书 - 有两个流行的证书免费提供 -LetsEncrypt零SSL。但是,这些免费证书的有效期仅为 90 天,因此需要经常更新(付费证书通常可以购买 1 年的证书)。这两个网站都包含如何获取证书的说明,包括安装用于自动更新证书的软件。

这里的关键点是您需要修改default-ssl文件中提到的路径以指向存储实际证书的文件。

当然,您可能对您的default文件进行了一些定制(比如可能更改DocumentRoot、添加一些AliasScriptAlias语句Redirect、更改一些权限等) - 您需要对进行相同的定制default-ssl

完成所有修改后重新启动 Apache,以确保新配置已被采用。

相关内容