为nginx主机配置SSL证书
StartSSL是一个免费颁发SSL证书的机构,个人Class1使用免费,证书一年有效,给自己的host上也加了一个,提高安全性吧。 我用的server是nginx的,所以以下步骤均是按nginx的来,apache请自行改动。
-
申请证书
上StartSSL申请帐号,Control Panel->Sign Up,会让填入真实信息,提交后等Staff认证。他们速度很快,1个小时之内就给结果了。
申请到后先备份证书,然后进Control Panel->Validation Wizard,选择Domain name validation,因为是免费证书必须要顶级域名。子域名输入www就好。
登录到自己的VPS上,执行:
openssl req -new -newkey rsa:2048 -nodes -out tomem.csr -keyout tomem.key
至于csr和key叫什么随你便。
生成申请后把csr的内容复制出来,回到StartSSL->Control Panel->Certificates Wizard
Certificate Purpose选Web Server TLS/SSL Certificate
生成私钥那步点跳过,粘贴刚才生成的csr内容。提交后继续等,Staff会验证你的site是不是phishing site这种(私人blog没啥可能),然后会发邮件通知去Control Panel retrieve certificate。
复制证书内容,粘贴到tomem.crt,当然这个名字随便取。
然后执行如下命令:
cp tomem.crt tomem.crt.bak wget http://www.startssl.com/certs/ca.pem cat ca.pem >> tomem.crt
否则Firefox可能提示该SSL不被信任。
-
配置nginx
nginx一定要有
http_ssl_module
,否则启动时会出现unknown directive ssl
。编译时没注意只加了--with-openssl-dir
,结果nginx死活启动不了。修改nginx.conf,基本上把https server那段前面的#去掉就好。需要加入这行:
error_page 497 "https://$host$uri?$args";
否则连接http时会出现The plain HTTP request was sent to HTTPS port。
如果有php,还需要在fastcgi配置里面加上
fastcgi_param HTTPS on;
重启nginx搞定。
本文参考了http://icodex.org/2010/02/为nginx虚拟主机配置startssl免费https证书/,特此感谢
PS:现在问题是开首页没问题,开blog提示This connection is partially encrypted,不知道是什么问题,有空再看 莫名其妙的好了