使用 Startssl 提供的免费证书+Nginx 搭建 https 的网站

nginx_ssl_1

Startssl 是一家提供免费 SSL 证书的公司,我们可以用其搭建 https 网站,貌似可以被除去 Opera 外的所有主流浏览器所信任,过程简单记录如下:

  1. 打开 http://www.startssl.com/ ,注册一个用户,注意这个网站是用证书验证用户身份的,所以证书一定备份好。另外。。。不支持 Chrome,用 Safari 吧。
  2. 登陆后进入 Validations Wizard,验证你要添加 ssl 支持的域名。
  3. 进入 Certificates Wizard,并选择 Web Servers SSL/TLS Certificates。
  4. 创建一个 private key,连同密码一起保管好。(或者你也可以自己在服务器上用 openssl 创建,这里点skip就行了)
  5. 选择一个域名,以及子域名。
  6. 网站会给出证书,保存为 .csr 文件。
  7. 使用 Tool Box 里面的 Decrypt Private Key 或者自己用 openssl 将第4步生成的 private key 解密,并将结果保存为 .key 文件。
  8. 按照修改 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 打开虚拟主机了。

nginx_ssl_2 

顺便说一下,Startcom 这个公司貌似有很多人在管理证书颁发这个事情,他们的邮件回复总是非常快。比如上次我想给 img.gd 申请证书,结果发现他们的域名选择里面没有 .gd,于是给他们发去了邮件,Startcom就回信问我要了管理机构网址以及 whois 地址,我回给他们后很快就又收到邮件告诉我说可以用了。再有就是昨天想给谷奥申请一个,结果系统提示申请需要手工审核,并且随后被拒绝,发信过去问原因,告知我 Google 是著名商标,除非我有 Google 的授权,否则他们不会给这个域名颁发证书,于是只好放弃。

This entry was posted in 我的慵懒生活 and tagged , . Bookmark the permalink.

One Response to 使用 Startssl 提供的免费证书+Nginx 搭建 https 的网站

  1. Mackay says:

    hi,
    My server is Nginx 0.7.16

    the config file about ssl is
    ssl on;
    ssl_certificate /root/ssl/ssl.crt;
    ssl_certificate_key /root/ssl/security.key;

    so it's very well.

    but firefox test is not well.

    so I do the following:
    1 wget http://cert.startssl.com/certs/ca.pem
    2 wget http://cert.startssl.com/certs/sub.class1.server.ca.pem
    3 cat ca.pem sub.class1.server.ca.pem >> ca-certs.crt
    4 cat ca-certs.crt >> ssl.crt

    then the nginx
    [root@local13 ssl]# /usr/local/webserver/nginx/sbin/nginx -t
    [emerg]: SSL_CTX_use_certificate_chain_file("/root/ssl/ssl.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/webserver/nginx/conf/nginx.conf test failed

    Please help me .

    Thanks

    Mackay

Leave a Reply

Your email address will not be published. Required fields are marked *


eight + = 16

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>