我正在尝试使用Nginx webserver在CentOS中启用前向保密.
我试过的
我已经阅读了一些教程,看起来我们应该有Nginx,openssl最新版本来启用它.所以我从源代码安装了最新的openssl.
sudo wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
sudo tar -xvzf openssl-1.0.1e.tar.gz
cd openssl-1.0.1e
sudo ./config --prefix=/usr/local
sudo make
sudo make install
现在OpenSSL支持Eliptic Curve密码(ECDHE).我用openssl s_server测试了这个.它运作良好.
接下来,我用最新的替换了Nginx.
sudo wget http://Nginx.org/packages/centos/6/x86_64/RPMS/Nginx-1.4.2-1.el6.ngx.x86_64.rpm
sudo rpm -e Nginx
sudo rpm -ivh Nginx-1.4.2-1.el6.ngx.x86_64.rpm
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+RC4:EDH+aRSA:EECDH:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
http://baudehlo.wordpress.com/2013/06/24/setting-up-perfect-forward-secrecy-for-nginx-or-stud/
但现在Nginx不支持ECDHE密码.它支持DHE密码.我尝试在Nginx中启用ECDHE密码仍然无法正常工作.我正在使用最新的网络浏览器(chrome 29并支持此密码)
我错过了什么吗?或者与CentOS或Nginx有问题?我读过ECC专利与CentOS有关的地方,这是否会引起问题?
你已经正确地认为,绕过这将意味着编译你自己的openssl,这很好.但是,这样做之后,你不能简单地安装打包的二进制文件,并期望它们神奇地拿起你的新库,因为它们不会.
您需要重新编译openssl,例如–prefix = /usr/local / openssl-custom,然后将其安装到新位置,然后从源代码编译Nginx,注意告诉它编译并链接新库(我不能给你一个标准的咒语,因为它因包而异,但是-with-ssl = /usr/local / openssl-custom有时可能是正确的选择).
如果你需要任何其他工具来使用Nginx,而且其中任何一个都有openssl依赖(现在,那些没有?),你也可能需要编译它们.
请让我以此劝阻你.这是很多工作;编译是最不重要的,然后你必须保持在你构建的软件包的所有新版本之上,并在它们发生变化时重建它们.我不知道为什么你决定需要Forward Secrecy,但是我强烈怀疑你会因为启用补丁而导致自己出现更多的安全问题.
另请注意上面链接的bugzilla条目中的注释43和90;如果通过Forward Secrecy,你的意思是完全向前保密(PFS),那么启用PFS似乎不需要ECC.或者等到it looks like we’re getting ECC as of RHEL6.5 (C6.5).