原创

IP地址配置HTTPS 内网IP配置HTTPS保姆教程

在Nginx中配置HTTPS:本地证书与内网IP配置教程

在很多开发、测试或内网环境中,我们可能需要为Nginx配置HTTPS。为了简化流程,本文将介绍如何生成自签名的SSL证书,设置免密私钥,以及配置Nginx以支持HTTPS协议。

一、生成本地证书

首先,我们需要生成自签名证书。通过 OpenSSL 工具,可以生成一对公钥和私钥,并创建一个有效期为一年的证书。

1.1 生成命令

打开终端并运行以下命令:

openssl req -x509 -newkey rsa:4096 -keyout /etc/nginx/ssl/private.key -out /etc/nginx/ssl/certificate.crt -days 365

这条命令会生成以下两个文件:

  • /etc/nginx/ssl/private.key:私钥文件
  • /etc/nginx/ssl/certificate.crt:证书文件

1.2 输入相关信息

执行命令后,系统会要求输入一个密码,建议使用密码生成工具生成一个复杂的密码。在线密码生成工具

接着,系统会提示输入一系列证书信息,包括:

  • 国家名(Country Name)
  • 省/地区名(State or Province Name)
  • 城市名(Locality Name)
  • 组织名(Organization Name)
  • 组织单位名(Organizational Unit Name)
  • 公共名(Common Name,通常为你的域名或IP地址)
  • 邮箱地址(Email Address)

根据实际情况填写,回车即可完成。

二、设置私钥免密

为了避免每次重启Nginx时都需要输入密码,我们需要将私钥文件解密。

2.1 解密命令

使用以下命令将私钥解密,生成一个新的无密码的私钥文件:

openssl rsa -in /etc/nginx/ssl/private.key -out /etc/nginx/ssl/private2.key

其中:

  • /etc/nginx/ssl/private.key 是第一步生成的带密码的私钥。
  • /etc/nginx/ssl/private2.key 是解密后的无密码私钥文件。

三、配置Nginx支持HTTPS

完成证书和私钥的生成后,我们接下来要配置Nginx以支持HTTPS。

3.1 编辑Nginx配置文件

找到你的 Nginx 配置文件(通常为 /etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf),然后添加以下配置:

server {
    listen 8068 ssl;
    charset utf-8;
    server_name 你的ip地址;
    ssl_certificate /usr/local/nginx/conf/vhost/comments_ai/certificate.crt;
    ssl_certificate_key /usr/local/nginx/conf/vhost/comments_ai/private2.key;

    # 启用支持的协议版本
    ssl_protocols TLSv1.2 TLSv1.3;  # 启用 TLSv1.2 和 TLSv1.3
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:!aNULL:!MD5:!DSS';  # 使用强加密套件
    ssl_prefer_server_ciphers on;  # 强制使用服务器指定的加密套件

    # 安全增强措施
    ssl_session_cache shared:SSL:10m;  # 启用 SSL 会话缓存
    ssl_session_timeout 1d;  # 设置 SSL 会话超时时间为 1 天


    location / {
        proxy_pass http://localhost:8067;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

3.2 解释配置项

  • listen 8068 ssl;:指定 Nginx 监听 8068 端口,并启用 SSL。
  • server_name 154.8.138.29;:设置服务器的域名或 IP 地址。你可以根据需要修改为你的真实域名或公网 IP 地址。
  • ssl_certificatessl_certificate_key:指定证书文件和私钥文件的位置,确保这两个路径正确。
  • ssl_protocols TLSv1.2 TLSv1.3;:启用 TLS 1.2 和 TLS 1.3 两种安全协议版本。
  • ssl_ciphers:指定支持的加密套件,这里使用了强加密套件,确保数据传输的安全性。
  • ssl_session_cachessl_session_timeout:优化 SSL 会话缓存和超时设置,提升性能。
  • location /:配置反向代理,将请求转发给本地的 8067 端口。

3.3 重载Nginx配置

配置完成后,执行以下命令重载 Nginx 配置,使更改生效:

sudo nginx -s reload

四、注意事项

  1. 自签名证书警告:由于我们使用的是自签名证书,浏览器在访问时会提示“不安全”。这是因为浏览器无法验证证书的可信度。实际生产环境中,建议使用受信任的证书颁发机构(CA)签发的证书。

  2. 域名证书更安全:自签名证书仅适用于开发或测试环境,如果是正式的生产环境,建议购买并配置一个正式的 SSL 证书。

五、总结

通过以上步骤,我们已经完成了在 Nginx 中配置 HTTPS 的过程。无论是在本地开发、测试,还是内网环境中,这种自签名证书配置可以为我们提供基本的加密保护。当然,在生产环境中,使用由受信任的证书颁发机构签发的证书会更为安全。

正文到此结束
本文目录