分析家 发表于 2018-11-11 11:04:44

nginx 配置 ssl

  一、配置 SSL 证书
  完整的 ssl 证书分为4个部分:
  CA根证书、中级证书、域名证书、证书密钥(仅用户持有)
  以 EXAMPLE PositiveSSL 证书为例,将收到四份文件:
  根证书 - AddTrustExternalCARoot.crt
  中级证书 - EXAMPLERSAAddTrustCA.crt
  中级证书 - EXAMOLERSADomainValidationSecureServerCA.crt
  您的域名证书 - example_com.crt
  或者会收到两个文件:
  CA 证书串 - example_com.ca-bundle
  您的域名证书 - example_com.crt
  按照 “域名证书 -> 中间证书 -> 根证书” 的顺序串联为证书链,我们可以使用cat命令串联证书(就是按顺序将4个文件的内容写到一个文件中)
  cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > example_com.bundle.crt
  或者
  cat example_com.crt example_com.ca-bundle > example_com.bundle.crt
  得到 example_com.bundle.crt 后,和密钥文件 example_com.key 一同上传至服务器并保存在安全的位置,例如/etc/ssl/private 目录下 (没有此目录请创建)。
  二、配置nginx
  样例:
  // 需要一个单独的server监听80端口,之后将所有的请求强制重定向到https协议
  server {
  listen 80;
  # listen [::]:80;            # 如果需要同时侦听 IPv6,取消此行注释
  server_name www.example.com;            # 改成需要的域名
  rewrite ^ https://www.example.com$request_uri? permanent;      # 使用rewrite重定向
  }
  server {
  listen 443 ssl;
  # listen [::]:443 ssl;
  server_name www.example.com;
  ssl on;
  ssl_certificate /etc/ssl/private/www_example_com.crt;
  ssl_certificate_key /etc/ssl/private/www_example_com.key;
  ssl_prefer_server_ciphers on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";                                        keepalive_timeout 70;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 10m;
  add_header Strict-Transport-Security max-age=63072000;
  add_header X-Frame-Options DENY;
  add_header X-Content-Type-Options nosniff;
  root /var/www/example.com;
  index index.html;
  location / {
  try_files $uri $uri/ /index.html;
  }
  }
  三、提升安全性
  1、生成 DHE 参数
  为了避免使用 OpenSSL 默认的 1024bit DHE 参数,我们需要生成一份更强的参数文件:
  cd /etc/ssl/certsopenssl dhparam -out dhparam.pem 4096
  建议使用性能强劲的平台生成此文件,例如最新版的至强物理机。如果您只有一台小型 VPS,请使用 openssl dhparam -out dhparam.pem 2048 命令生成 2048bit 的参数文件。
  完成后,在 SSL 配置下添加一行:
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
  注意:这种提升安全性的方法会牺牲部分性能,如果没有必要的话不建议采用
  2、启用 HSTS
HTTP Strict Transport Security (HSTS) 可以使浏览器第一次访问您的站点后即记住仅通过 HTTPS 与您的站点通信,可以大大提升安全性。  在SSL配置下添加:
  add_header Strict-Transport-Security max-age=63072000;
  add_header X-Frame-Options DENY;
  add_header X-Content-Type-Options nosniff;

页: [1]
查看完整版本: nginx 配置 ssl