Nginx安装SSL证书

 May 29, 2012, 1:48 a.m.   0 comments    nginx ssl https

眼看中国网络维护日(CNMD)就要到了,想想决定给自己的网站安装个SSL证书。

貌似提供免费SSL证书且比较靠谱的仅StartSSL一家(https://www.startssl.com/),于是别无选择。

注册

注册过程很简单,我前后只花了半个小时不到便注册完成。只是要注意的是,由于是人工审核,注册信息务必填写完整,我注册的时候信息没填完整因此还被收到一封邮件要求重新提供注册信息,好吧。

此外,StartSSL网站采用证书验证,而不是传统的用户名/密码验证登录,因此注册成功后,验证证书一定要妥善保管,不然要是丢失可就没法登录了。

验证域名

登录到Control Panel之后,若要给网站添加SSL证书,首先需要通过域名验证。

点击Validations Wizard打开验证向导,选择验证类型为域名验证Domain Name Validation,填入要验证的域名,然后StartSSL会给该域名的管理员邮箱发一封验证邮件,将验证邮件中收到的验证码填入就完成了域名验证的全部过程。

不过要注意的是,域名验证的有效期是30天,如果过了有效期则需要重新验证。

申请SSL证书

点击Certificates Wizard打开证书向导,选择证书用途为Web Server SSL/TLS Certificate

生成私钥Generate Private Key

如果之前已经在服务器上使用openssl生成了私钥文件和证书申请文件的话,这一步就可以跳过。

但是我选择了生成私钥,因此需要填入私钥的密码,然后点击Continue,将生成的私钥保存为ssl.key

生成证书

接下来按照提示,选择刚刚认证的域名,并且还必须按要求绑定一个二级域名,没搞明白是什么用意,就填了个ssl,这个貌似没什么影响。

打开Tool Box,选择Retrieve Certificate,不出意外的话,证书已经生成完毕了,只需要将其保存为ssl.crt就大功告成了!

证书的使用

现在SSL证书已经有了,接下来就是要使用它了~

若要使Nginx支持SSL,则至少需要server.key以及server.crt

生成server.key

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

生成server.crt

cp ssl.crt server.crt
wget http://cert.startssl.com/certs/ca.pem
wget http://cert.startssl.com/certs/sub.class1.server.ca.pem
cat ca.pem sub.class1.server.ca.pem >> ca-certs.crt
cat ca-certs.crt >> server.crt

然后将server.key以及server.crt上传到服务器

修改Nginx配置文件,使其支持SSL

server {
listen 80;
server_name www.域名.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443;
server_name www.域名.com;
root /home/www;
ssl on;
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
}

根据需要修改server.key以及server.crt的路径,然后重启Nginx即可。