服务器配置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-