• Post author:
  • Post category:nginx
  • Post comments:0评论

一、基本配置

# 开启ssl认证,以前版本方法,现在推荐使用listen PORT ssl;
Syntax: ssl on | off;
Default:    ssl off;
Context:    http, server

# 指定证书文件
Syntax: ssl_certificate file;
Default:    —
Context:    http, server

# 指定私钥文件
Syntax: ssl_certificate_key file;
Default:    —
Context:    http, server

# 启用指定版本的协议,一般不需要额外设置,默认够用了
Syntax: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
Default:    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Context:    http, server

二、优化配置

(1)缓存相关

# 设置存储会话参数的缓存的类型和大小
Syntax: ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
Default:    ssl_session_cache none;
Context:    http, server

    缓存可以是以下任何一种:

      ▪ off:禁止使用会话缓存,客户端不得复用会话连接。

      ▪ none:禁止使用会话缓存,但是客户端会话连接可以被复用,但实际上并没有在缓存中存储会话参数。

      ▪ builtin:内置OpenSSL的缓存。仅能由一个nginx工作进程使用,缓存大小在会话中指定。如果未指定大小,则等于20480个会话。使用内置缓存可能会导致内存碎片。

      ▪ shared:所有工作进程之间共享的高速缓存。高速缓存大小以字节为单位;一个兆字节可以存储大约4000个会话。每个共享高速缓存应具有任意名称,具有相同名称的高速缓存可以在多个虚拟服务器中使用。 

    注意:内置缓存builtin和共享缓存shared可以同时使用,但是仅使用共享缓存而不使用内置缓存应该会更有效率。

    例子:ssl_session_cache builtin:1000 shared:SSL:10m;

# 指定客户端可以复用ssl连接的超时时间,一般和上面参数配合使用,即在建立完ssl握手后如果断开连接,在这个时间内再次连接,是不需要再次建立握手,可以复用之前的连接。
Syntax: ssl_session_timeout time;
Default:    ssl_session_timeout 5m;
Context:    http, server

(2)加密套件

# 指定启用的加密套件
Syntax: ssl_ciphers ciphers;
Default:    ssl_ciphers HIGH:!aNULL:!MD5;
Context:    http, server

    注意:加密套件应该是OpenSSL库可以理解的格式指定,可以使用openssl ciphers -v命令查看加密套件列表。

    例子:ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

# 指定当使用SSLv3和TLS协议时,服务器加密套件应优先于客户端加密套件。
Syntax: ssl_prefer_server_ciphers on | off;
Default:    ssl_prefer_server_ciphers off;
Context:    http, server

三、配置示例

server {
    listen 80;
    server_name cp.test.com;
    return 302 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name cp.test.com;
    root /wordpress;

    ssl_certificate ssl_key/cp.test.com.pem;
    ssl_certificate_key ssl_key/cp.test.com.key;

    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers on;

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

    keepalive_timeout 300s;

    location / {
        index index.php;

    }

    location ~* \.(png|jpg|jpeg)$ {
        root /wordpress;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params; 
    }
}

发表回复

验证码: 22 − 20 =