startssl申请成功后在nginx下安装ssl

>>申请时注意,需要2次审核.回复邮件即可

control panel / sign-up 注意填写正确资料。收到邮件后复制验证码。然后可以生成一个证书,注意,startssl.com不是以用户名、密码来验证用户的,是用证书来验证用户 的。

所以生成证书后(chrome会导入证书),注意备份证书。丢失证书后只能重新注册。
登录后还要验证域名才能为该域名生成SSL证书,可以选择在whois里的邮箱、hostmaster@domain、 postmaster@domain或者webmaster@domain
然后就可以在Certificates wizard里就可以申请SSL证书了。
有效期一年。

在Toolbox
把你申请时的private key拿去Decrypt private key,然后把生成的key保存起来, server.key 。
然后在Retieve certificate里选择你申请的域名,就可以得到cer文件,保存起来server.crt ,
放到nginx的conf目录。
========================
nginx配置ssl

1 将拿到的 server.key 和 server.crt 放到合适的目录

2 合并根CA证书 (需要把startssl的根证书和sub class1的证书附上,因为是他们把证书颁发给你,firefox需要这张证书才认识你的证书)

	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 >>  server.crt

3 配置ngnix,只显示关键部分.请按照你的配置修改

PS: 浏览器默认访问网站的是80端口,所以访问ssl需要做一下跳转

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

server {
listen  443;
server_name google.com;
index index.html index.htm index.php;
root  /data/htdocs/google.com;
ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
}

4 重启即可

一般情况下nginx能正常重启,并且SSL证书可以正确配置,但是有时会出现下面的错误提示:


[emerg]: SSL_CTX_use_certificate_chain_file("/usr/local/nginx/conf/certs/server.crt")
 failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib)
configuration file /usr/local/nginx/conf/vhost/xxx.conf test failed

这个的意思就是server.crt读取到意外错误行,这是因为之前我们合成证书导致的,使用vi或者nano命令打开并编辑server.crt,找到了问题所在:


-----END CERTIFICATE----------BEGIN CERTIFICATE-----

可以看到原先占用一行的标记证书的分隔符,现在连到一起了,我们需要用换行将他们分开,注意问题左右的短横线最好一样多:


-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----

保存这个crt文件,再次重启nginx,SSL启用成功!

此处评论已关闭