当前位置:Home > Apache&Nginx > SSL证书的购买与Nginx下的配置

SSL证书的购买与Nginx下的配置

发布时间:2015-01-15   浏览次数:1920

 现在SSL证书的价格越来越亲民了。

最近发现了RapidSSL Online的40美金3年的廉价SSL证书,还是GeoTrust的。
忍不住买了一个。
分享一下具体的购买过程。

声明: RapidSSL没给任何广告费用,因为购买和安装过程十分顺畅,纯分享。

为什么购买SSL:

http协议默认情况下是不加密的。各种密码,邮件,私人信息都是明文传送。
SSL是Secure Socket Layer的简称,具体的作用就是在部署了SSL证书的网站跟用户浏览器之间建立一个安全的会话。
以防止信息在互联网任何中间节点上被盗用。

SSL的工作原理网上很多,这里就不唠叨了,具体可以看这里或者 这里

购买地点:

https://www.rapidsslonline.com/

购买选择:

Standard SSL Certificates
1 year @ $17.99
2 years @ $15.99
3 years @ $12.99
4 years @ $11.99
这种证书是最基本的证书,提供商是GeoTrust。
可以有一个Common Name, 加入现在的公司后发现购买的是 domain.com的证书,导致www.domain.com不能使用。
在这里提醒一下考虑购买的朋友, 买www.domain.com就已经包含了domain.com的证书,可是买domain.com的

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

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

不过这些都是300-2000块美金一年的证书了.

购买过程:

选择 Standard SSL Certificates, RapidSSL. 
点击 Buy Now,用Paypal付钱。之后你会收到一个邮件。有一个GeoTrust生成连接。先不要点击链接,因为需要我们先去部署的服务器上面搞一个CSR

sudo mkdir /etc/nginx/ssl
cd /etc/nginx/ssl

#生成private key
sudo openssl genrsa -des3 -out server.key 2048
这里问你输入一个passphrase,选择一个容易记得,下一步会需要输入。

#生成 CSR
sudo openssl req -new -key server.key -out server.csr

Country Name (2 letter code) [AU]:US  #国家代码
State or Province Name (full name) [Some-State]:New York #省份
Locality Name (eg, city) []:NYC  #城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc #公司名称
Organizational Unit Name (eg, section) []:   #部门名称
Common Name (e.g. server FQDN or YOUR name) []: www.example.com                  
Email Address []: admin@example.com  #管理员邮箱

生成之后,就可以点击GeoTrust的连接,然后CSR那个框框里面填入 server.csr 文件的内容。 然后选择你的管理员邮箱完成表单。这里一定要选一个可靠的邮箱,因为证书是通过邮箱发送给你的。

完成之后,邮箱会收到一个Approval的邮件,点击连接后选择Approve。

下一个邮件就会收到证书了。

收到证书后,再/etc/nginx/ssl文件夹下面新建一个server.crt的文件,把证书内容粘贴进去。证书这部分就搞定了。

配置过程:

我们的private key是有passphrase的,我们需要去掉private key的passphrase才能让Nginx自由自在的启动。

sudo cp server.key server.key.org
sudo openssl rsa -in server.key.org -out server.key

之后再nginx.conf中配置

server {
        listen 443;
        server_name example.com;

        root /usr/share/nginx/www;
        index index.html index.htm;

        ssl on;
        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key; 
}

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

server {
  listen      80;
  server_name example.me;
  rewrite     ^   https://$server_name$request_uri? permanent;
}