在nginx docker中访问端口443最简单的方法是什么?nginx:latest
我什至不需要将它们添加到受信任的列表中。这里的想法是这样的:首先,我不关心 TLS。其次,当浏览器显示“连接不安全,接受风险并继续”时,我对这种情况非常满意。也就是说,通过443端口和HTTPS协议访问就够了。
这实际上是在 docker 的 nginx 容器中实现此目的最简单的方法吗?
在nginx docker中访问端口443最简单的方法是什么?nginx:latest
我什至不需要将它们添加到受信任的列表中。这里的想法是这样的:首先,我不关心 TLS。其次,当浏览器显示“连接不安全,接受风险并继续”时,我对这种情况非常满意。也就是说,通过443端口和HTTPS协议访问就够了。
这实际上是在 docker 的 nginx 容器中实现此目的最简单的方法吗?
假设您的容器正在
nginx运行。docker ps产生类似的东西为域安装证书
最初,您的问题不包含详细信息,因此我在有关 的评论中写道
certbot。这对您的任务来说是多余的,因此您可以立即转到第二部分,即有关自签名证书的部分。您需要“进入”容器并在其中安装
certbot一个实用程序,用于安装来自Let's Encrypt 的免费证书连接到容器并运行
bash:docker exec -it dcda1cbc1757 bash这dcda1cbc1757是容器 ID,由 打印docker ps。你可能有一个不同的,更换它。如果 ID 正确并且容器正在运行,则会打开
bash用户的输入行root:我希望您正在运行基于 Debian 的
nginx映像。nginx:latest然后您需要更新软件包apt并安装certbot:如果您有基于的映像
alpine,则使用该命令安装必要的软件包apk add certbot certbot-nginx。运行
certbot:certbot --nginx程序会问您几个问题,强制您接受用户协议,然后解析配置文件nginx并询问要为哪些域请求证书。证书及相关技术文件将保存在
/etc/letsencrypt. 默认情况下,该目录位于容器内部,重新创建容器时证书将丢失。如果您需要保存它们,请重新启动容器nginx并将该目录映射到主机文件系统:(docker run -v /path/in/host/fs:/etc/letsencrypt nginx:latest或者您在那里运行的任何文件系统)。安装测试证书
安装自签名证书
您需要进入容器生成证书并更新配置文件
nginx。输入容器:
docker exec -it dcda1cbc1757 bash. 这dcda1cbc1757是容器 ID,由 打印docker ps。你可能有一个不同的,更换它。运行容器中的命令
最后一个命令将询问您有关证书身份的五个问题,生成文件的 2048 位 RSA 密钥
/etc/nginx/certs/server.key以及/etc/nginx/certs/server.crt. 证书有效期为365天,密钥无密码。安装一些编辑器,例如
vim:apt install vim -y编辑您的服务器设置。在下面的示例中,编辑了默认服务器设置:
将
listen 443 ssl;密钥和证书的路径添加到服务器参数:保存文件。
重新启动
nginx:nginx -s reload验证(在容器内):
curl -k https://localhost此选项-k禁用证书有效性检查。如果一切正确,则打印服务器的curl内容index.html这是我的 nginx 配置,也许会有帮助
您还需要将证书添加到受信任的证书中。在 Windows 上,这似乎很容易,但如果您使用 Linux,则必须施展一些魔法。另外,您还需要将证书添加为浏览器本身信任的证书。最简单的方法是使用 Google Chrome。