服务器配置SSL流程

最近在给公司架设网站,在部署集群的 auth 节点要部署 SSL,让用户通过 https 方式访问。这样安全性上有所提升,看着也高大上一些。 这里记录一下整个流程,分享,备忘。

环境

Ubuntu,Nginx

证书

要部署 SSL 首先肯定需要一个 SSL 证书。

选择很多,可以买,可以申请免费的 StartSSL。这里我司是申请的 StartSSL。

StartSSL 申请

#### 注册 点击主页的 Sign-up 注册,填写资料尽量真实,因为他们是要审核的。填写完去邮箱收验证码,然后进入人工审核,大概二十分钟内一般就能审核完成。

审核完成后 StartCom 会发邮件,进入邮件中的链接,安装证书,这是你的登录凭证。

验证域名

需要申请自己域名下的证书要先验证域名。

Validations Wizard -> Domain name validation

然后输入自己的一级域名。然后选择一个域名所有者的邮箱通过邮箱验证。

生成证书

终于可以生成自己网站的证书了!

Certificates Wizard -> WEB Server SSL/TSL Certifites

先生成私钥,要输入一个私钥用密码。然后将生成的私钥 xxx.key 保存下来。

接着输入自己需要使用 SSL 的二级域名,然后等待人工审核。通过后从 Retrieve Certificate 下载自己网站的证书 xxx.crt。

这样网站的 SSL 证书就搞定了!

证书准备

有了证书暂时还不能直接用,还要“加工”一下,过程其实 StartSSL 也有很详细的介绍页:How to install,我之前就是因为没好好看这个被自己坑了好久。。。

这里参考 Nginx server 的。

先把私钥 key 文件的密码剥离

openssl rsa -in ssl.key -out ssl/ssl.key

安全起见,修改下私钥的权限

chmod 600 ssl/ssl.key

然后下载 Startcom 的 Root CA 和 Class 1 Intermediate Server CA

wget http://www.startssl.com/certs/ca.pem
wget http://www.startssl.com/certs/sub.class1.server.ca.pem

然后生成自己的证书

cat ssl.crt sub.class1.server.ca.pem ca.pem > ssl/ssl.crt

这样我们就有了可用的证书了!

部署

把 SSL 部署在 Nginx 上也很简单。

添加配置内容

server {
    listen                443;
	server_name           auth.tratao.com;
	ssl                   on;
	ssl_certificate       ssl/auth.tratao.com.crt;
	ssl_certificate_key   ssl/auth.tratao.com.key.unsecure;
	charset               utf-8;
	location / {
		proxy_pass http://127.0.0.1:8080;
	}
}

如果想要 http 自动跳转至 https,可用再加一段

server {
	listen                80;
	server_name           auth.tratao.com;
	location / {
		rewrite    ^(.*)$    https://$host$1 permanent;
	}
}

然后 sudo nginx -t 测试下。没问题重启 nginx 就成功了!

-EOF-

发布于: April 04 2014

blog comments powered by Disqus