申请免费SSL + nginx配置SSL

想架起HTTPS有不少方法——可以用openssl,或者找CA颁发证书,其中startssl免费提供一年的证书颁发。
startssl-logo

申请过程不复杂,不懂英文的话网上也有不少教程,在此不再叙述

申请证书后,为免每次重启服务器后都需要输入证书的密钥,可以使用其自家的解密工具解密私钥,具体位置如下图

decrypt-key

然后,将解密后的密钥(ssl.key)和证书(ssl.crt)放到服务器(VPS)上,不过要注意的是,如果是通过Windows创建了key的crt文件,请注意换行符的不同,否则重启nginx的时候会提示证书不合法。再用curl把startssl的根证书和sub class1的证书附上自己的证书上

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

之后就是配置nginx了,编辑nginx/conf/nginx.conf文件,在http block里面输入以下内容

server
{
    listen       443 default_server;
    server_name www.domain.com domain.com;
    index index.html index.htm index.php default.html default.htm default.php;
    root  /home/wwwroot/domain.com/www;
    ssl on;
    ssl_certificate /home/wwwroot/ssl.crt;
    ssl_certificate_key /home/wwwroot/ssl_d.key;

    ssl_protocols           SSLv2 SSLv3 TLSv1;
    ssl_prefer_server_ciphers       on;

    location ~ .*\.(php|php5)?$
    {
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param HTTPS on;
      include fastcgi.conf;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
      expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
      expires      12h;
    }

    access_log  /home/wwwlogs/domain.com.access.log;
}

最后重启nginx,就可以使用https访问了。尝试访问 https://solf.me