SSL的购买以及Nginx下https的配置

购买渠道

  1. https://www.rapidsslonline.com/
  2. https://www.namecheap.com/

购买选择

Standard SSL Certificates 是最基本的证书,提供商是GeoTrust。可以有一个Common Name(只能绑定一个域名)。

如果你有很多子域名需要证书,那么需要下面任意一个:

  • 购买一个支持多个SAN的证书 (支持多个子域名)
  • 购买一个Wildcard证书 (支持任意多个子域名)

购买过程

  1. 选择好产品后,点击 Buy Now, 用Paypal付钱
  2. 收到一封有GeoTrust生成连接的邮件(暂时先不用打开链接)
  3. 去服务器上生成 CSR 文件(方法见下文)
  4. 点击GeoTrust的连接,然后在CSR那个框框里面填入上一步骤生成的CSR文件的内容
  5. 选择你的管理员邮箱完成表单(一定要选一个可靠的邮箱,因为证书是通过邮箱发送给你的)
  6. 收到一个Approval的邮件,点击连接后选择Approve
  7. 收到证书(如果没收到就去购买网站自己的账户中查看)

Nginx配置https

注意:需要Nignx已经编译 ssl 模块

生成private key

$ sudo mkdir /etc/nginx/ssl
$ cd /etc/nginx/ssl
$ sudo openssl genrsa -out yurendu.pem 2048

生成CSR文件

$ sudo openssl req -new -key yurendu.pem -out yurendu.csr

此处提示需要输入一些信息,解释如下:

Country Name (2 letter code) [AU]:CN //输入国家简写
State or Province Name (full name) [Some-State]:Jiang Su //省市
Locality Name (eg, city) []:Lian yun gang //城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Wang Jian //组织名称或公司名称
Organizational Unit Name (eg, section) []: //可以不用填
Common Name (eg, YOUR name) []:www.yurendu.com //输入要配置ssl的域名,注意: yurendu.com 和 www.yurendu.com 属于不同的域名
Email Address []:admin@yurendu.com //输入邮箱
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: //可以不用填
An optional company name []: //可以不用填

填写注册

上一步之后,会在目录下生成一个 yurendu.csr 文件,用 cat 查看内容,复制文件 全部 内容,需要用这个内容去ssl购买网站向 CA(数字证书颁发机构)提交OpenSSL生成的证书。

链接在购买ssl之后网站发来的那封邮件里,也可以去网站的个人账户中查找ssl认证的地方。

操作详情:

在select web server处选择nginx,然后把之前复制的csr内容全部粘贴到输入框内点击next。选择域名管理员邮箱,邮箱必须是能够接收到邮件。同时确认一下生成证书时填写的信息是否正确,之后是填写基本信息,提交后,等待认证通过并生成证书。

Nginx虚拟主机设置SSL

下载证书签发机构颁发的 crt 文件,重命名(可选,此处命名为 yurendu.crt),上传到 /etc/nginx/ssl 中。

在Nginx虚拟主机添加SSL

server
{
    listen 443;
    server_name www.yurendu.com;
    index index.html index.htm index.php;
    root /opt/wwwroot/yurendu;

    ssl on;
    ssl_certificate yurendu.crt;
    ssl_certificate_key yurendu.pem;

    location ~ .*\.(php|php5)?$
    {
        fastcgi_pass  unix:/tmp/php-cgi.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
                include pathinfo.conf;
    }
    access_log off;
}

如果想把http的请求转到https的话:

server {
  listen    80;
  server_name   www.yurendu.com;
  rewrite   ^ https://$server_name$request_uri? permanent;
}

重启 Nginx 即可生效。