如何使用 SSL 配置 Nginx

在本教程中,我们将向您展示如何在您的 Linux 服务器上使用 SSL 配置 Nginx。 对于那些不知道的人,传输层安全性 (TLS) 和安全套接字层 (SSL) 提供了一种简单的方法来加密最终用户和 Web 服务器之间的连接。 SSL 使用证书授权系统提供身份验证,以防止网站错误地声称是另一个组织或网站。 本教程向您展示如何在 Nginx 网络服务器上设置强大的 SSL 安全性。

本文假设您至少具备 Linux 的基本知识,知道如何使用 shell,最重要的是,您将网站托管在自己的 VPS 上。 安装非常简单,假设您在 root 帐户下运行,如果不是,您可能需要添加 ‘sudo‘ 到命令以获取 root 权限。 我将逐步向您展示在您的 Linux 上使用 SSL 配置 Nginx。

使用 SSL 配置 Nginx

必需的:

  • 假设您已经安装了网络服务器 Nginx。
  • 我使用 Namecheap 作为注册商,他们从包括 Comodo 在内的许多其他公司转售 SSL 证书。

第1步。 创建目录

mkdir -p /etc/nginx/ssl/idroot.us

第2步。 生成 SSL 密钥和 CSR

在购买证书之前,您需要生成一个私钥和一个 CSR 文件(证书签名请求)。 订购证书时,系统会要求您提供 CSR 文件的内容。 对于 Common Name,请输入您的预期域名,不带“www”,即 idroot.us。 如果是通配符 SSL,请使用 *.idroot.us。

openssl req -nodes -newkey rsa:2048 -keyout idroot.us.key -out idroot.us.csr

步骤 3。 创建证书包

购买证书后,您最终会收到一封包含您的 SSL 证书的电子邮件。 它包含一个 zip 文件,其中包含以下内容:

  • AddTrustExternalCARoot.crt
  • COMODORSAAddTrustCA.crt
  • COMODORSADomainValidationSecureServerCA.crt
  • idroot_net.crt
cat idroot_net.crt AddTrustExternalCARoot.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt >> ssl-bundle.crt

创建证书包后,您可以将其移动到 Nginx SSL 目录。

mv ssl-bundle.crt /etc/nginx/ssl/idroot.us/

第4步。 为 Nginx 配置证书

转到 Nginx 虚拟主机配置,在 Nginx 中使用 SSL 需要修改 listen 指令和三个与 SSL 相关的指令,如以下示例所示:

nano /etc/nginx/conf.d/ssl.conf
server {    listen 443 ssl spdy;    server_name www.idroot.us idroot.us;    root /var/www/idroot.us/public_html;    index index.php index.html index.htm;    server_tokens off;     #SSL CONF    ssl on;    ssl_certificate /etc/nginx/ssl/idroot.us/ssl-bundle.crt;    ssl_certificate_key /etc/nginx/ssl/idroot.us/idroid.us.key;      #SSL    ssl_session_cache shared:SSL:20m;    ssl_session_timeout 10m;     ssl_prefer_server_ciphers On;    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;     ssl_stapling on;    ssl_stapling_verify on;    resolver 8.8.8.8 8.8.4.4 valid=300s;    resolver_timeout 10s;     # permalink    location / {       try_files $uri $uri/ /index.php?$args;    }     # php-script handler    location ~ .php$ {       fastcgi_index index.php;       fastcgi_pass 127.0.0.1:9000;       root    /var/www/idroot.us/public_html;       fastcgi_param SCRIPT_FILENAME /var/www/idroot.us/public_html$fastcgi_script_name;       include /etc/nginx/fastcgi_params;    }  location  ~ /.ht {                deny  all;            }     }

步骤 5。 将 HTTP 虚拟主机重定向到 HTTPS

return 301  https://idroot.us$request_uri;

步骤 6。 重新启动/重新加载 Nginx。

/etc/init.d/nginx restart

恭喜! 您已经成功安装了带有 SSL 的 Nginx。 感谢您使用本教程在 Linux 系统上使用 SSL 安装和配置 Nginx。 如需更多帮助或有用信息,我们建议您查看 Nginx 官方网站.