5分钟内在本地开发环境启动HTTPS
2023-11-07 14:16:44
今天我们访问的所有网站几乎都是受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.key
和localhost.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。我希望本教程对你有帮助!