Startssl 是一家提供免费 SSL 证书的公司,我们可以用其搭建 https 网站,貌似可以被除去Opera 外的所有主流浏览器所信任,过程简单记录如下:
- 打开 http://www.startssl.com/ ,注册一个用户,注意这个网站是用证书验证用户身份的,所以证书一定备份好。另外。。。不支持 Chrome,用 Safari 吧。
- 登陆后进入 Validations Wizard,验证你要添加 ssl 支持的域名。
- 进入 Certificates Wizard,并选择 Web Servers SSL/TLS Certificates。
- 创建一个 private key,连同密码一起保管好。(或者你也可以自己在服务器上用 openssl 创建,这里点skip就行了)
- 选择一个域名,以及子域名。
- 网站会给出证书,保存为 .csr 文件。
- 使用 Tool Box 里面的 Decrypt Private Key 或者自己用 openssl 将第4步生成的 private key 解密,并将结果保存为 .key 文件。
- 按照修改 nginx 默认的虚拟主机配置文件的范例修改,关键语句如下:
listen 443;
ssl on;
ssl_certificate /etc/nginx/certs/xxxxxx.crt;
ssl_certificate_key /etc/nginx/certs/xxxxxx.key;
ssl_session_timeout 5m;ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
fast_cgi 部分也加入一行:
fastcgi_param HTTPS on;
另外在这里看到,中文版 Firefox 貌似不会信任这个证书,需要下载 Startcom 的根证书并且附在网站证书后面:
wget http://www.startssl.com/certs/ca.pem感谢 @startssl 的亲自指正,这个是错误的,应该是:
wget http://www.startssl.com/certs/sub.class1.server.ca.pem
cat sub.class1.server.ca.pem >> xxxxx.crt
重新启动 nginx,即可顺利使用 https 打开虚拟主机了。
顺便说一下,Startcom 这个公司貌似有很多人在管理证书颁发这个事情,他们的邮件回复总是非常快。比如上次我想给 img.gd 申请证书,结果发现他们的域名选择里面没有 .gd,于是给他们发去了邮件,Startcom就回信问我要了管理机构网址以及 whois 地址,我回给他们后很快就又收到邮件告诉我说可以用了。再有就是昨天想给谷奥申请一个,结果系统提示申请需要手工审核,并且随后被拒绝,发信过去问原因,告知我 Google 是著名商标,除非我有 Google 的授权,否则他们不会给这个域名颁发证书,于是只好放弃。