首先我的架构是(公网 NAT 转发 Nginx 代理 IIS 服务器),实现公网 HTTPS 访问,SSL 证书必须部署在 Nginx 服务器上,且是唯一需要部署证书的节点。 为什么不能部署在 IIS 或 NAT 设备上? 公网用户
|
首先我的架构是(公网 → NAT 转发 → Nginx 代理 → IIS 服务器),实现公网 HTTPS 访问,SSL 证书必须部署在 Nginx 服务器上,且是唯一需要部署证书的节点。 为什么不能部署在 IIS 或 NAT 设备上?公网用户的 HTTPS 请求,首先通过 NAT 转发到你的 Nginx 服务器(NAT 仅做端口映射,不处理 SSL 加密)。Nginx 作为反向代理,需要先解密 HTTPS 请求(这就需要 SSL 证书),再以HTTP 协议将请求转发到内网的 IIS 服务器(IIS 无需处理加密,只负责业务逻辑)。→ 整个链路的加密 / 解密只在 “公网 ↔ Nginx” 之间进行,“Nginx ↔ IIS” 是内网 HTTP 通信,无需加密(若内网需安全,可单独配置,但公网 HTTPS 核心依赖 Nginx 的证书)。
具体实现证书获取首先去你购买ssl的服务商网站下载证书,将它保存到你的nginx服务器上。格式一般为pem和key的两个文件。域名解析可能需要添加相关ssl信息,这个可以根据不同服务商的文档操作。
当然如果没有也可以生成本地认证。主要是记录一下 SSL 证书的生成以及证书配置,SSL的理论和细节不细说了。这组命令是自签名证书的 “标准流程”,核心产出「server.key + server.crt」。
Nginx 配置 HTTPS 时,支持 PEM 格式的证书文件,server.key 和server.crt本质上已经是 PEM 格式,只是文件后缀不同(.crt/.key 是常见别名,.pem 是通用后缀)。已经是 PEM 格式,直接用即可,无需额外转换。如果需要 .pem 后缀,仅需重命名文件。执行以下命令,若能正常输出证书信息,说明是合法 PEM 格式:
特殊情况:证书是 DER 格式需要转换为 PEM 格式,命令如下
将 SSL 证书(.crt/.pem)和私钥(.key)上传到 Nginx 的证书目录,建议路径:/etc/nginx/ssl/。 nginx配置编辑 Nginx 的站点配置文件vi /etc/nginx/nginx.cong
扩展Nginx 的配置分为 主配置文件 和 站点配置文件。
主配置文件(nginx.conf)末尾会通过 include 指令加载所有站点配置,无需手动修改主配置:
结果验证在浏览器上放访问,可以看到这个连接是安全的则证书配置成功。点开可以看到证书信息。
如果是本地认证仍旧会显示不安全,但仍旧可以看到证书的详细信息。 |
2024-04-02
2024-02-26
2023-01-24
2024-09-30
2022-08-15