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

hisea · 发布于 2013年03月13日 · 最后由 starshine 回复于 2016年12月22日 · 18658 次阅读
96
本帖已被设为精华帖!

现在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;
}

最后的广告: https://hisea.me/p/ssl-config-with-nginx

共收到 7 条回复
96

startssl.com是免费的,而且申请很快。

947

跟服务器的个数有没有关系?

96

#2楼 @chinacheng 服务器多了的话可以将ssl终结在Load Balancer. 客户端到load balancer加密传输,load balancer到服务器明文传输。

947

#3楼 @hisea 你这个文档相当好 👍, sudo openssl rsa -in server.key.org -out server.key 这个配置我没有用到,也能正常运行,nginx也能正常重启,你这里做这个的具体场景是什么?他email发来的key有两部分,当时相当的迷惑,他的文档很蛋疼的写了三步,前两步分别复制保存,第三部的时候把这两个文件合并到了一个文件中。

96

#4楼 @chinacheng 嗯,如果你之前生成private key的时候没有设置密码,就不需要这一步。

一般他们的文档都是很不专业的。Google还是王道。

6574

按照这个说明,几分就完成了https://www.haijia.org/的配置。现在从Bing下访问,再也不会提示证书未认证了。十分感谢!

96

@huacnlee 我的最近也在玩这个,但是总是不生效,希望大神指教,我的配置如下:(这样配置有问题,但是不知道问题出在哪里)

server {

listen 24766;

listen 443 ssl;

ssl_certificate /opt/zs/33iq.crt;

ssl_certificate_key /opt/zs/33iq.key;

root /var/www/star_p/current/;

location / {

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

proxy_pass http://star_p;

} }

server {

listen 24766;

server_name demo.star.net;

rewrite ^ https://$server_name$request_uri permanent;

}

14293 hww Nginx 配置问题 (想要 https 和 http 都可以访问) 中提及了此贴 12月22日 11:47
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册