网站使用SSL

2015年10月11日 分类:学习笔记网络

为了http2.0打算给网站先换上ssl,在gogetssl买了Comodo PositiveSSL三年只要$13.15,应该算便宜了把。这里记录下nginx配置ssl的过程,具体原理就不说了,ssl用ssllabs测试下来结果为A,应该没问题。

1. 准备ssl证书

1.1 生成ssl key

openssl genrsa -des3 -out wuyuans.com.key 2048

输入一个密码,后面会用到。注意必须是2048,否则Comodo无法认证。

1.2 生成csr

openssl req -new -key wuyuans.com.key -out wuyuans.com.csr

按提示输入key的密码和其他信息,Common Name输入域名。

1.3 购买证书

ssl购买途径有很多,也有一些是免费的,觉得免费的会不稳定,付费的也不是很贵,就选了比较常用的Comodo PositiveSSL,在gogetssl买比官网便宜不少。

购买完成后,将上面生成的csr发给gogetssl认证,下载证书压缩包,解压。

1.4 串联证书

cat wuyuans_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl-bundle.crt

2. nginx配置ssl

将前面生成的wuyuans.com.key和ssl-bundle.crt上传服务器,一般放在/etc/ssl/private/下。

2.1 生成dhparam

openssl dhparam -out dhparam.pem 4096

这个过程会很长,为了统一,把生成的dhparam.pem也放到/etc/ssl/private/下。

2.2 修改nginx配置文件

下面是我nginx关于ssl部分的配置,因为以后只用https,将80端口重定向到https下。

server {
    listen 443 ssl;
    server_name wuyuans.com;
    
    ssl on;
    ssl_certificate /etc/ssl/private/ssl-bundle.crt;
    ssl_certificate_key /etc/ssl/private/wuyuans.com.key;
    ssl_dhparam /etc/ssl/private/dhparam.pem;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
    ssl_prefer_server_ciphers on;
}

server {
    listen 80;
    server_name wuyuans.com;
    return 301 https://wuyuans.com$request_uri;
}

具体参数的含义就不多说了,请自行google。

使用前先测试一下。

nginx -t

successful后就可以restart或者reload。

nginx -s reload
//或者
service nginx restart

2.3 去除key密码(非必要)

现在nginx已经可以使用ssl,但是每次加载都需要输入key的密码,为了方便可以去除这个限制。

openssl rsa -in wuyuans.com.key -out wuyuans.com.nopasswd.key

相应的修改nginx配置文件指向wuyuans.com.nopasswd.key

ssl_certificate_key /etc/ssl/private/wuyuans.com.nopasswd.key;

这样再加载的时候就不需要密码了。

作者:wuyuan 本文来自Wuyuan's Blog 转载请注明,谢谢! 文章地址: http://wuyuans.com/2015/10/nginx_and_ssl