Nginx如何实现SSL/TLS协议?

Nginx可以通过openssl模块支持SSL/TLS协议,实现HTTPS服务。HTTPS通过SSL/TLS协议为HTTP提供安全的传输通道,主要用于加密、身份认证等。

OpenSSL证书配置:

  • 生成RSA私钥:openssl genrsa -des3 -out server.key 2048
  • 根据私钥生成CSR请求文件:openssl req -new -key server.key -out server.csr
  • 自签名证书(测试环境):openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  • CA签发的证书(生产环境)

Nginx SSL配置:

  • listen 443 ssl; # 监听443端口,启用ssl
  • ssl_certificate:指定证书文件路径
  • ssl_certificate_key:指定私钥文件路径
  • ssl_protocols:指定SSL版本,推荐TLSv1.2
  • ssl_ciphers:指定加密套件,推荐高强度套件
  • ssl_session_cache:设置会话缓存,推荐builtin
  • ssl_session_timeout:会话超时时间

配置示例:

server {
    listen       443 ssl;
    server_name  www.example.com;

    ssl_certificate      /path/to/server.crt;
    ssl_certificate_key  /path/to/server.key;

    ssl_protocols TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5; 
    ssl_session_cache   builtin:1000; 
    ssl_session_timeout 10m;

    ... 
}

上例开启443端口的HTTPS服务,配置证书、私钥、SSL协议版本、加密套件等参数。