跳转至

Nginx 配置 SSL


2013-05-11 by dongnan

开始之前

SSL证书作用有两个,实现加密传输,认证服务器身份。

加密传输

用户通过http协议访问网站时,浏览器和服务器之间是明文传输, 这就意味着用户填写的密码、帐号、交易记录等机密信息都是明文,随时可能被泄露、窃取、篡改,被黑客加以利用。

使用SSL证书后,使用https加密协议访问网站,可激活客户端浏览器到网站服务器之间的"SSL加密通道"(SSL协议) ,实现高强度双向加密传输,防止传输数据被泄露或篡改。

认证服务器身份

网站部署全球信任的SSL证书后,浏览器内置安全机制实时查验证书状态,通过浏览器向用户展示网站认证信息,让用户轻松识别网站真实身份,防止钓鱼网站仿冒。

操作步骤

准备SSL证书

我这里使用的是域名服务商签发的SSL证书,如果你没有合法可信任的SSL证书,可以向服务商索取免费的SSL证书,或者搜索签发私有证书方法。

file ssl/domain.*

domain.crt: PEM certificate
domain.key: PEM RSA private key

配置Nginx

配置文件:

cat /etc/nginx/conf/default.conf

server {

    listen 80;
    listen 443 ssl; # listen ssl port
    server_name  www.demo.com;
    index index.shtml index.html;
    root  /var/www/html;

    # ssl configure
    ssl on;
    ssl_certificate      ssl/domain.crt;
    ssl_certificate_key  ssl/domain.key;

    # force ssl
    error_page 497 https://$server_name$request_uri;

    # proxy processing error_page
    error_page 404 /404.html;

    location ^~ /attachments {
        alias /star/uploads/;
        expires 180d;
    }

    location ^~ /static {
        alias /star/static/;
        expires 180d;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        #proxy_set_header Host $host;
        proxy_pass http://unix:/var/run/django.socket;
        proxy_redirect default;
    }

    access_log  /var/log/nginx/access.log access;
    error_log  /var/log/nginx/error.log;
}

重启Nginx服务

nginx -t && nginx -s reload

SSL相关指令

SSL

语法: ssl on | off;
默认值: ssl off;
使用字段: http, server
功能: 开启SSL功能,nginx建议使用listen 指令代替这个指令。

SSL_CERTIFICATE

语法: ssl_certificate file;
默认值: 无
使用字段: http, server
功能: 指定PEM格式的证书文件。

SSL_CERTIFICATE_KEY

语法: ssl_certificate_key file;
默认值: 无
使用字段: http, server
功能: 指定PEM格式的密钥的文件。

小结

最后来总结下文章中的知识点

  • Nginx使用 ssl_certificatessl_certificate_keylisten 443 ssl 指令,配置SSL功能。
  • SSL证书可以向服务商索取免费证书或者使用openssl签发私有证书文件。
  • SSL证书格式可以转换,对于nginx 使用crt证书文件与key私钥文件。

参考

回到页面顶部