【nginx的ssl配置】

本文详细介绍了如何在Nginx中配置SSL以实现HTTPS,包括申请SSL证书、管理证书和私钥、设置HTTPS监听端口、配置域名和路径映射等步骤。

参考: https://blog.youkuaiyun.com/weixin_37855495/article/details/130082400
https://juejin.cn/post/7109497228103778311#heading-35

nginx的ssl配置步骤

1、申请SSL证书,从CA获取或者从云控制台申请,审核通过后下载nginx版本的证书
2、下载数字证书后,完整的文件有crt、key、pem
*crt:数字证书文件,crt是pem的扩展文件,因此有些人下载后可能没有。
* key:服务器的私钥文件,及非对称加密的私钥,用于解密公钥传输的数据。
* pem:Base64-encoded编码格式的源证书文本文件
3、在nginx目录下新建certificate目录,并将下载好的证书/私钥等文件上传至改目录。
4、修改配置文件nginx.conf

# ----------HTTPS配置-----------
server {
    # 监听HTTPS默认的443端口
    listen 443;
    # 配置自己项目的域名
    server_name www.xxx.com;
    # 打开SSL加密传输
    ssl on;
    # 输入域名后,首页文件所在的目录
    root html;
    # 配置首页的文件名
    index index.html index.htm index.jsp index.ftl;
    # 配置自己下载的数字证书
    ssl_certificate  certificate/xxx.pem;
    # 配置自己下载的服务器私钥
    ssl_certificate_key certificate/xxx.key;
    # 停止通信时,加密会话的有效期,在该时间段内不需要重新交换密钥
    ssl_session_timeout 5m;
    # TLS握手时,服务器采用的密码套件
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    # 服务器支持的TLS版本
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # 开启由服务器决定采用的密码套件
    ssl_prefer_server_ciphers on;
​
    location / {
        ....
    }
}
 
# ---------HTTP请求转HTTPS-------------
server {
    # 监听HTTP默认的80端口
    listen 80;
    # 如果80端口出现访问该域名的请求
    server_name www.xxx.com;
    # 将请求改写为HTTPS(这里写你配置了HTTPS的域名)
    rewrite ^(.*)$ https://www.xxx.com;
}
复制代码

做了上述配置之后,如果使用http访问,会自动转成https。

### 如何配置 NginxSSL/TLS 设置 #### 听取 HTTPS 请求并启用 SSL 模块 为了使 Nginx 能够处理 HTTPS 流量,服务器需监听 443 端口,并加载 OpenSSL 库来提供必要的支持。这通常通过在 `http` 或者特定的 `server` 块中加入 `listen 443 ssl;` 来实现[^1]。 #### 加载证书和私钥 为了让客户端验证 Web 服务器的身份,在 Nginx 中必须指明用于此目的的 X.509 数字证书及其对应的私钥的位置: ```nginx ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; ``` 这里 `/path/to/certificate.crt` 和 `/path/to/private.key` 是具体的文件路径,应替换为实际存储位置。 #### 定义安全策略 定义哪些版本的 TLS 协议被允许以及所使用的密码套件对于确保通信的安全至关重要。推荐的做法是禁用较旧且不安全的协议版本(如TLSv1),仅保留更新更安全的选择;同时设置高强度的加密算法组合以增强安全性: ```nginx ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ``` 上述配置优先考虑了现代浏览器兼容性和性能优化的同时也保持了一定程度上的向后兼容性[^2]。 #### 提升效率与用户体验 可以通过调整会话缓存参数提高重复访问者的响应速度,减少握手时间: ```nginx ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ``` 这段代码设置了共享内存中的 SSL 缓存大小为 10MB 并将 SSL 会话的有效期设为一天。 #### 实施 HTTP Strict Transport Security (HSTS) 强制所有子域名下的页面都只可通过 HTTPS 访问可以进一步加强网站的安全防护水平: ```nginx add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; ``` 该指令告诉用户的浏览器在未来的一年内始终使用 HTTPS 连接到这个站点及其任何子域。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值