学习Nginx(十四):配置SSL/TLS支持HTTPS

概念

  1. SSL/TLS:安全套接字层(SSL)及其继任者传输层安全性(TLS)是为网络通信提供安全及数据完整性的一种安全协议。它们通过在应用程序协议(如HTTP)与TCP/IP协议族之间提供数据加密封面,来为客户端和服务器之间的通信提供加密。
  2. 证书:由证书颁发机构(CA)签发的电子文件,用于验证服务器或客户端的身份。证书包含公钥、颁发者、有效期等信息。
  3. 密钥:在SSL/TLS通信中,有两种主要类型的密钥:公钥和私钥。私钥用于对数据进行加密和对由公钥加密的数据进行解密,而公钥则用于对数据进行解密和对由私钥加密的数据进行加密。
  4. 证书链验证:客户端验证服务器证书的有效性时,会沿着证书链从服务器的证书开始,一直验证到受信任的根证书颁发机构(CA)。这确保服务器证书是由受信任的CA签发的,并且没有被篡改。
  5. 会话恢复:在SSL/TLS通信中,会话恢复是一种优化性能的技术,它允许客户端和服务器在重新建立连接时重用先前的会话参数(如密钥和加密算法),从而减少了握手过程所需的时间和资源。

SSL证书

  • 若在生产环境中使用,请从SSL证书供应商处获取。
  • 本次测试使用自行创建SSL证书。
# 安装工具,默认情况下是已安装。
[root@RockyLinux9 ~]# dnf install -y openssl
[root@RockyLinux9 ~]# cd /usr/local/nginx/conf/


# 创建自签名证书
[root@RockyLinux9 conf]# openssl req -x509 -newkey rsa:2048 -keyout linuxjsz.com.key -out linuxjsz.com.crt -nodes -days 365
[root@RockyLinux9 conf]# ls linuxjsz.com.*
linuxjsz.com.crt  linuxjsz.com.key

检查nginx

  • 确认已经安装和配置了nginx。
  • 检查安装模块,包含 --with-http_ssl_module 。
[root@RockyLinux9 conf]# nginx -V

配置nginx

  • 修改配置文件
[root@RockyLinux9 conf]# vim nginx.conf
# 启用http块中的HTTPS server段
http {


    ...
    
    # HTTPS server
    server {
        listen       443 ssl;
        server_name  linuxjsz.com;
        
        # 配置证书路径
        ssl_certificate      /usr/local/nginx/conf/linuxjsz.com.crt;
        ssl_certificate_key  /usr/local/nginx/conf/linuxjsz.com.key;


        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;


        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;


        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}
  • 加载配置文件
[root@RockyLinux9 conf]# nginx -s reload
  • 访问Web

配置80端口自动跳转443

  • 修改配置文件
[root@RockyLinux9 conf]# vim nginx.conf
http {


    server {
        listen       80;
        server_name  linuxjsz.com;
        # 添加如下语句
        return 301 https://$host$request_uri;
  }
    
    # HTTPS server
  ...
}
  • 加载配置文件
[root@RockyLinux9 conf]# nginx -s reload
  • 此时访问http://linuxjsz.com会自动跳转到https://linuxjsz.com页面。

SSL常用配置参数

  • ssl_buffer_size
    • 描述:设置 SSL 读/写缓冲区的大小。
# 语法
ssl_buffer_size size;
# 默认值
ssl_buffer_size 16k;
  • ssl_certificate
    • 描述:指定 SSL 证书文件的位置。
# 语法
ssl_certificate file;
# 示例
ssl_certificate     example.com.rsa.crt;
  • ssl_certificate_key
    • 描述:指定 SSL 私钥文件的位置。
# 语法
ssl_certificate_key file;
# 示例
ssl_certificate_key example.com.rsa.key;
  • ssl_ciphers
    • 描述:指定启用的加密套件列表。也可以自定义列表以满足特定的安全需求。
# 语法
ssl_ciphers ciphers;
# 默认值
ssl_ciphers HIGH:!aNULL:!MD5;
  • ssl_protocols
    • 描述:指定启用的 SSL/TLS 协议版本。
# 语法
  ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
# 默认值
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  • ssl_prefer_server_ciphers
    • 描述:设置为 on,则使用服务器提供的加密套件优先于客户端提供的,以增强安全性。
# 语法
ssl_prefer_server_ciphers on | off;
# 示例
ssl_prefer_server_ciphers off;
  • ssl_session_cache
    • 描述:指定 SSL 会话缓存的类型、大小和时间。
# 语法
ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
# 默认值
ssl_session_cache none;
# 示例
ssl_session_cache shared:SSL:10m;
  • ssl_dhparam
    • 描述:指定 DH(Diffie-Hellman)参数文件的路径。
# 语法
ssl_dhparam file;
# 默认值
ssl_dhparam /path/to/dhparam.pem;
  • ssl_session_timeout
    • 描述:指定客户端可以重新使用 SSL 会话参数的时间长度。
# 语法
ssl_session_timeout time;
# 默认值
ssl_session_timeout 5m;

了解更多,请访问官方说明:

http://nginx.org/en/docs/http/ngx_http_ssl_module.html

分享、在看与点赞
👇只要你点,我们就是胖友👇

来自: 学习Nginx(十四):配置SSL/TLS支持HTTPSicon-default.png?t=N7T8https://mp.weixin.qq.com/s/CNcqRAVWYyb6YnQ6iGW3nQ

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux技术宅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值