Debian 8 (Jessie)安装Nginx StartSSL证书

本文将告诉你如何在Debian Jessie上安装最新的稳定版本的nginx。 它还将部署来自StartSSL的免费SSL证书。 在本文中,我们配置nginx使用强大的服务器端密码套件,并禁用易受攻击的SSLv2和SSLv3协议。

源码编译Nginx



虽然在许多情况下从软件包存储库进行安装nginx已经够用,但此安装方法的HTTP/2不能使所有浏览器兼容。 Google Chrome现在只允许与应用层协议协商(ALPN)的HTTP/2连接,OpenSSL 1.0.2或更高版本中支持此协议。 此版本不包括在默认Debian软件包存储库中,因此您需要手动添加它,并针对较新的OpenSSL编译nginx以启用对HTTP/2的完全支持。
请注意,当使用此方法时,您将负责更新nginx以包括最新的更新。
1.将Debian Backports存储库添加到包管理器检查更新的文件列表中:

  1. echo "deb http://ftp.debian.org/debian jessie-backports main " >> /etc/apt/sources.list.d/backports.list

2.更新可用包的列表:

  1. apt-get update

3.从backports存储库安装最新版本的OpenSSL及其库:

  1. apt-get install -t jessie-backports openssl libssl-dev

4.安装nginx依赖关系:

  1. apt-get install libpcre3-dev build-essential

5.将最新的稳定版本的nginx下载到/opt目录:

  1. cd /opt
  2. wget http://nginx.org/download/nginx-1.11.2.tar.gz

6.解压缩文件,然后切换到新目录:

  1. tar -zxvf nginx-1.*.tar.gz
  2. cd /opt/nginx-1.*

7.配置编译选项。 提供下面的示例以供参考。 根据您的需要,您可能希望添加其他选项,:

  1. ./configure --prefix=/opt/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --with-debug --with-threads --with-http_ssl_module --with-ipv6 --with-http_v2_module

此步骤完成后,您将看到配置摘要的输出。 一定要记住给定的文件路径,因为你很快就需要它们。
8.使用您在步骤7中指定的选项编译和安装nginx:

  1. make
  2. make install

9.创建nginx系统用户

  1. sudo adduser --system --no-create-home --disabled-login --disabled-password --group nginx

10.创建一个systemd服务脚本来运行nginx:
/lib/systemd/system/nginx.service:

  1. [Unit]
  2. Description=A high performance web server and a reverse proxy server
  3. After=network.target
  4.  
  5. [Service]
  6. Type=forking
  7. PIDFile=/opt/nginx/logs/nginx.pid
  8. ExecStartPre=/opt/nginx/sbin/nginx -t -q -g 'daemon on; master_process on;'
  9. ExecStart=/opt/nginx/sbin/nginx -g 'daemon on; master_process on;'
  10. ExecReload=/opt/nginx/sbin/nginx -g 'daemon on; master_process on;' -s reload
  11. ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /opt/nginx/logs/nginx.pid
  12. TimeoutStopSec=5
  13. KillMode=mixed
  14.  
  15. [Install]
  16. WantedBy=multi-user.target

如果使用步骤7中的编译配置选项,则可以完全按照以上的脚本。 但是,如果指定了自己的文件路径,则可能需要调整PIDFile的值以匹配您的PID文件,并且以Exec开头的行中的路径匹配您的nginx二进制文件路径。 这些文件路径包含在步骤7的输出中。
11.为nginx.service加上执行权限

  1. chmod +x /lib/systemd/system/nginx.service

12.启动nginx

  1. systemctl start nginx

或者,您可以设置nginx在启动时自动启动:

  1. systemctl enable nginx

生成私钥和证书签名请求(CSR)



1.创建一个目录来存储您的证书和私钥。 在Debian系统上,用于存储证书和私钥的默认位置在/etc/ssl/中。 在该位置创建一个新的nginx目录,以存储您的证书和nginx的私钥:

  1. mkdir /etc/ssl/nginx

2.切换到新创建的目录:

  1. cd /etc/ssl/nginx

3.生成4096位私有RSA密钥。 大多数证书颁发机构目前要求客户至少使用2048位专用RSA密钥。

  1. openssl genrsa -out server.key 4096

4.生成证书签名请求(CSR)。 在此示例中,server.key是上面创建的RSA私钥文件,server.csr是我们的CSR文件的名称:

  1. openssl req -new -key server.key -out server.csr

部署StartSSL证书



把证书签名请求文件server.csr提交到StartSSL网站,生效后下载证书相关文件,提取出里面的crt文件,并保存到/etc/ssl/nginx/server.crt。

收集其他必需的证书文件

1.确保您仍然在nginx SSL文件所在的目录中:

  1. cd /etc/ssl/nginx

2.下载StartSSL CA证书:

  1. wget http://www.startssl.com/certs/ca.pem

3.将StartSSL中间CA证书附加到该文件,创建统一的CA证书文件:

  1. curl http://www.startssl.com/certs/sub.class1.server.ca.pem >> ca.pem

4.创建包含您的签名证书和Nginx的StartSSL CA证书的单个文件:

  1. cat server.crt ca.pem > nginx.crt

安装StartSSL证书

1.默认情况下,nginx配置为仅在TCP端口80上提供HTTP请求。要使用SSL,您需要配置nginx以在TCP端口443上提供HTTPS请求。打开nginx SSL服务器块示例配置文件并调整配置.
/etc/nginx/conf.d/example_ssl.conf:

  1. # HTTPS server
  2. #
  3. server {
  4.     listen       443 ssl;
  5.     server_name  example.com;
  6.  
  7.     ssl_certificate      /etc/ssl/nginx/nginx.crt;
  8.     ssl_certificate_key  /etc/ssl/nginx/server.key;
  9.  
  10.     ssl_session_cache shared:SSL:10m;
  11.     ssl_session_timeout  5m;
  12.  
  13.     ssl_ciphers  "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH !RC4";
  14.     ssl_prefer_server_ciphers   on;
  15.  
  16.     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  17.  
  18.     location / {
  19.         root   /opt/nginx/html;
  20.         index  index.html index.htm;
  21.     }
  22. }

将server_name的值替换为您的域或子域名称。 请确保ssl_certificate和ssl_certificate_key的值与您创建的证书和私钥的文件路径相匹配。 行ssl_session_cache,ssl_ciphers和ssl_protocols应与上述配置匹配。
根据您安装nginx的方式,默认情况下可能不会创建此文件。 例如,如果从源编译nginx,则需要创建example_ssl.conf文件并将此配置复制到其中。 如果是这种情况,您还需要将以下行添加到主要nginx配置文件中的http块:

  1. include     /etc/nginx/conf.d/*.conf;

2.重启nginx

  1. systemctl restart nginx
标签:NginxDebian 发布于:2019-11-21 13:04:24