返回

5分钟内在本地开发环境启动HTTPS

见解分享

今天我们访问的所有网站几乎都是受HTTPS保护的。如果你的站点还没有,那你应该使用它。使用HTTPS保护服务器也意味着你不能从不是HTTPS服务器向此服务器发送请求。这给使用本地开发环境的开发人员带来了一个问题,因为它们都运行在开箱即用的http://localhost环境中。如果你正在进行RESTful API开发,你需要使用HTTPS对客户端发送的请求进行测试。

不要害怕,有很多方法可以在本地环境中使用HTTPS。让我们开始吧!

1. 为本地开发环境安装一个Web服务器

如果你使用的是PHP,那么你很可能已经安装了Apache或Nginx。如果你使用的是其他语言,那么你可能需要安装一个Web服务器。这里有一些最受欢迎的选项:

  • Apache
  • Nginx
  • Caddy
  • Lighttpd

对于本教程,我们将使用Apache。在Ubuntu上,可以使用以下命令安装Apache:

sudo apt-get install apache2

2. 生成一个自签名证书

现在我们已经有了Web服务器,我们需要为其创建一个自签名证书。这将使我们能够在本地环境中使用HTTPS。

可以使用以下命令生成自签名证书:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt

这将创建两个文件:localhost.keylocalhost.crt。我们需要将它们复制到Web服务器的证书目录中。对于Apache,证书目录位于/etc/ssl/certs

sudo cp localhost.crt /etc/ssl/certs/
sudo cp localhost.key /etc/ssl/private/

3. 配置Web服务器以使用HTTPS

现在我们需要配置Web服务器以使用HTTPS。对于Apache,这可以通过编辑/etc/apache2/sites-enabled/000-default.conf文件来完成。

找到以下行:

<VirtualHost *:80>

并将它替换为:

<VirtualHost *:443>

然后,添加以下行:

SSLCertificateFile /etc/ssl/certs/localhost.crt
SSLCertificateKeyFile /etc/ssl/private/localhost.key

保存文件并重新启动Apache:

sudo service apache2 restart

4. 使用HTTPS访问本地开发环境

现在你应该能够使用HTTPS访问你的本地开发环境。只需在URL中使用https://协议而不是http://协议即可。例如,如果你正在运行一个PHP应用程序,你应该能够在浏览器中输入https://localhost/index.php来访问它。

5. 使用Let's Encrypt获取免费证书

如果你不想使用自签名证书,你也可以使用Let's Encrypt获取免费证书。Let's Encrypt是一个非营利组织,提供免费的SSL/TLS证书。

要使用Let's Encrypt,你需要安装Certbot客户端。Certbot是一个命令行工具,可以帮助你获取、安装和管理Let's Encrypt证书。

在Ubuntu上,可以使用以下命令安装Certbot:

sudo apt-get install certbot

一旦你安装了Certbot,你就可以使用以下命令获取Let's Encrypt证书:

sudo certbot certonly --standalone -d localhost

这将创建一个新的证书和密钥,并将其安装到Web服务器的证书目录中。你不需要做任何其他配置,Let's Encrypt证书将自动续订。

使用Docker在本地开发环境启动HTTPS

如果你使用Docker进行开发,那么你也可以使用Docker来在本地环境中启动HTTPS。

首先,你需要创建一个Dockerfile。Dockerfile是一个文本文件,它包含了构建Docker镜像的指令。对于本教程,我们将使用以下Dockerfile:

FROM php:7.4-apache

RUN apt-get update && apt-get install -y openssl

RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/localhost.key -out /etc/ssl/certs/localhost.crt

EXPOSE 443

CMD ["apache2-foreground"]

这个Dockerfile将创建一个基于PHP 7.4和Apache的Docker镜像。它还将生成一个自签名证书并将其安装到镜像中。

一旦你创建了Dockerfile,你就可以使用以下命令构建Docker镜像:

docker build -t local-https .

这将创建一个名为local-https的Docker镜像。

现在你就可以使用以下命令运行Docker容器:

docker run -p 443:443 --name local-https local-https

这将启动一个Docker容器,它将使用HTTPS在端口443上提供你的本地开发环境。你应该能够在浏览器中输入https://localhost/来访问它。

总结

在本教程中,我们学习了如何在5分钟内为本地开发环境启用HTTPS。我们介绍了三种方法:使用自签名证书、使用Let's Encrypt获取免费证书和使用Docker。我希望本教程对你有帮助!