添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
强健的茄子  ·  Vision Transformer ...·  6 月前    · 
读研的灭火器  ·  验证码·  9 月前    · 
近视的咖啡  ·  Spotify ...·  1 年前    · 
阳光的皮带  ·  【JS】实现 Base64 ...·  1 年前    · 

模块 ngx_stream_ssl_module (1.9.0 版本)提供了流代理服务器与 SSL/TLS 协议配合工作所需的支持。该模块默认未构建,需要使用 --with-stream_ssl_module 配置参数启用。

为了降低处理器负载,建议

  • worker processes 数量设置为处理器数量相等,
  • 启用 共享 会话缓存,
  • 禁用 内置 会话缓存,
  • 可能增加会话 生命周期 (默认为 5 分钟):
  • worker_processes auto;
    stream {
        server {
            listen              12345 ssl;
            ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
            ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
            ssl_certificate     /usr/local/nginx/conf/cert.pem;
            ssl_certificate_key /usr/local/nginx/conf/cert.key;
            ssl_session_cache   shared:SSL:10m;
            ssl_session_timeout 10m;
         
    map $ssl_alpn_protocol $proxy {
        h2                127.0.0.1:8001;
        http/1.1          127.0.0.1:8002;
    server {
        listen      12346;
        proxy_pass  $proxy;
        ssl_alpn    h2 http/1.1;
        

    指定给定服务器的 PEM 格式的证书文件。如果除主要证书外还应指定中间证书,则应按以下顺序在同一文件中指定它们:首先是主要证书,然后是中间证书。 PEM 格式的密钥也可以放置在同一文件中。

    自 1.11.0 版本起,此指令可多次指定以加载不同类型的证书,例如 RSA 和 ECDSA:

    server {
        listen              12345 ssl;
        ssl_certificate     example.com.rsa.crt;
        ssl_certificate_key example.com.rsa.key;
        ssl_certificate     example.com.ecdsa.crt;
        ssl_certificate_key example.com.ecdsa.key;
        

    自 1.15.9 版本起,在使用 OpenSSL 1.0.2 或更高版本时,可以在 file 名称中使用变量:

    ssl_certificate     $ssl_server_name.crt;
    ssl_certificate_key $ssl_server_name.key;
        

    注意,使用变量意味着每个 SSL 握手将加载一个证书,这可能会对性能产生负面影响。

    可以指定值 data:$variable 来代替 file (1.15.10),它会从变量加载证书而不使用中间文件。请注意,不恰当地使用此语法可能会导致安全问题,例如将密钥数据写入错误日志

    指定给定服务器的 PEM 格式的密钥文件。

    可以在 file 之外指定值 engine:name:id,它会从 OpenSSL 引擎 name 中加载具有指定 id 的密钥。

    可以指定值 data:$variable 来代替 file (1.15.10),它会从变量加载密钥而不使用中间文件。请注意,不恰当地使用此语法可能会导致安全问题,例如将密钥数据写入错误日志

    自 1.15.9 版本起,在使用 OpenSSL 1.0.2 或更高版本时,可以在 file 名称中使用变量。

    ssl_conf_command Options PrioritizeChaCha;
    ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
        

    如果当前级别没有定义ssl_conf_command指令,则这些指令将从上一级配置级别继承。

    注意直接配置OpenSSL可能导致意外行为。 # named pipe can also be used instead of a file ssl_password_file /etc/keys/fifo; ssl_certificate_key /etc/keys/second.key; listen 443 ssl; server_name example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key;

    设置用于加密和解密TLS会话票据的秘密密钥file。如果需要在多个服务器之间共享相同的密钥,则需要该指令。默认情况下,将使用随机生成的密钥。

    如果指定了多个密钥,则仅使用第一个密钥来加密TLS会话票据。这允许配置密钥轮换,例如:

    ssl_session_ticket_key current.key;
    ssl_session_ticket_key previous.key;
        

    file必须包含80或48字节的随机数据,可以使用以下命令创建:

    openssl rand 80 > ticket.key
        

    根据文件大小,将使用AES256(用于80字节密钥,1.11.8)或AES128(用于48字节密钥)进行加密。

    此指令首次出现于版本1.11.8。

    启用客户端证书验证。验证结果存储在$ssl_client_verify变量中。如果在客户端证书验证过程中发生错误或客户端未提供所需证书,则关闭连接。

    参数optional请求客户端证书并在证书存在时验证它。

    参数optional_no_ca请求客户端证书,但不要求其由受信任的CA证书签名。这适用于nginx外部服务执行实际证书验证的情况。证书的内容可通过$ssl_client_cert变量访问。