OpenSSL的安全缺陷Heartbleed

2014.4.16更新: mod_spdy需要单独更新,详见下文.

今天一大早收到了一堆关于SSL的邮件,原来前几天,OpenSSL中暴出了一个严重安全问题,被称为“Heartbleed”。

Heartbleed可导致SSL客户端(比如HTTPS)访问服务器中任何的64k大小的内存数据,也就是说,很多重要数据都可能被窃取,比如SSL的服务器端的密钥。有了服务器端的密钥,可以伪造出一个一模一样的HTTPS钓鱼网站。所以这是非常严重的安全问题。

如果你的博客/网站支持HTTPS,请尽快升级OpenSSL组件。Amazon Linux AMI中的升级方法是:sudo yum update openssl。其它的Linux版本大同小异吧。

另外,如果你的博客使用了mod_spdy,那么你还需要特地更新一下SPDY组件,原因是mod_spdy中有一份OpenSSL的拷贝。

有关Heartbleed的更多信息,请参见:

  1. Heartbleed Bug: http://heartbleed.com/
  2. CVE-2014-0160: https://www.openssl.org/news/secadv_20140407.txt

在 Amazon Linux 上启用 SPDY

首先,你需要一个 SSL 证书,这个证书通常需要一个权威机构颁发,也就是需要付点小钱,自己生成的不会被浏览器认可。我是在 GoDaddy 搞的。

在申请证书之前,你需要生成一个请求(Certificate Signing Request),在 Linux 上可以使用 openssl:

然后把 .csr 文件的内容告诉 GoDaddy,GoDaddy 就会给你一个证书了,你会下载到2个文件,假设一个是 leonax.crt,一个是 leonax_bundle.crt。

接下去,要把证书安装在 Apache 里,这时候,你需要 mod_ssl,可以通过以下命令安装:

装完之后,会生成一个配置文件:/etc/httpd/conf.d/ssl.conf,里面有一些默认的设置,比如打开 443端口。需要改是的,把证书文件换成刚才 GoDaddy 提供的文件,然后再映射一下路径。比如:

然后通过 https://leonax.net/ 就可以访问 SSL 加密的内容了。

接下来,就是安装 SPDY 了,你需要先安装 at:

然后下载 mod_spdy:(这个是 32 位的 RPM 包,需要其它版本的可至官网下载

然后安装 mod_spdy:

然后就大功造成啦……使用 chrome://net-internals/#spdy 来验证一下你的 SPDY 吧。

如果需要的话,你还可以把所有的 :80 请求都转到 :443:(使用.htaccess)