Depois de ler (e ouvir) um pouco sobre segurança, você deve ter ouvido falar sobre “Perfect Forward Secrecy” ou apenas “Forward Secrecy” (já que nada é realmente perfeito em criptografia). Mas conseguir isso com o Fedora é um pouco desafiador, porque há algum medo de que os algoritmos usados nos melhores cenários de FS possam ser patenteados. De acordo com as diretrizes do Fedora, este é um bloqueador e não pode ser disponibilizado nos repositórios oficiais.
O Forward Secrecy é cada vez mais importante para evitar que terceiros tenham acesso aos textos simples em caso de vazamento da chave privada, principalmente considerando alguns eventos recentes.
Para obter o Forward Secrecy no Fedora, então, você precisará compilar o pacote openssl-dev e todos os pacotes que foram compilados com ele, como httpd, postfix, dovecot, openvpn e assim por diante. As instruções a seguir estão relacionadas ao servidor HTTP do Apache, mas podem ser facilmente adaptadas para funcionar com outros serviços.
Em primeiro lugar, você precisará compilar openssl-dev
com suporte ECDHE e DHE. Isso é bem explicado em uma postagem do blog de Daniel Pocock , reproduzida (e adaptada) aqui:
sudo su -
rpm -e openssl-devel
yum install rpm-build krb5-devel zlib-devel gcc
gmp-devel libcurl-devel openldap-devel
NetworkManager-devel NetworkManager-glib-devel sqlite-devel
[ ! -e ~/.rpmmacros ] &&
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
[ ! -d rpmbuild ] && mkdir rpmbuild
cd ~/rpmbuild
mkdir -p BUILD BUILDROOT RPMS/i386 RPMS/x86_64 SOURCES SPECS SRPMS
cd ~/rpmbuild/SRPMS
wget http://dl.fedoraproject.org/pub/fedora/linux/releases/19/Everything/source/SRPMS/o/openssl-1.0.1e-4.fc19.src.rpm
rpm -i openssl-1.0.1e-4.fc19.src.rpm
cd ../SOURCES
wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
cd ../SPECS
wget http://zxvdr.fedorapeople.org/openssl.spec.ec_patch
# Fedora's SRPM has a modified source, must use the original
patch -p0 < openssl.spec.ec_patch
sed -i -e 's/-usa.tar.xz/.tar.gz/' openssl.spec
rpmbuild -bb openssl.spec
Após essas etapas, você terá os novos pacotes em . Se você já tem os pacotes originais instalados, você precisará alterar o arquivo e aumentar o número, assim:/root/rpmbuild/RPMS/x86_64
openssl.spec
Release
Release: 5%{?dist}
Com isso, seu pacote seria nomeado . Em seguida, você precisará instalá-los:openssl-devel-1.0.1e-5.fc19.x86_64.rpm
yum install /root/rpmbuild/RPMS/x86_64/openssl*rpm
Depois disso, você estará pronto para compilar seus pacotes dependentes, como httpd. Observe que pode ser necessário verificar a versão mais recente do pacote no repositório, que por acaso era a seguinte no momento da redação deste artigo:
wget http://dl.fedoraproject.org/pub/fedora/linux/updates/19/SRPMS/httpd-2.4.6-2.fc19.src.rpm
yum install autoconf xmlto lua-devel apr-devel
apr-util-devel pcre-devel systemd-devel libxml2-devel
rpm -i httpd-2.4.6-2.fc19.src.rpm
rpmbuild -bb httpd.spec
Da mesma forma, se você já httpd
instalou, você precisará bater no Release
, assim:
Release: 3%{?dist}
Depois disso, você terminará com os pacotes httpd
e mod_ssl
(entre outros) . Você só precisa instalá-los:/root/rpmbuild/RPMS/x86_64/
yum install /root/rpmbuild/RPMS/x86_64/httpd*rpm /root/rpmbuild/RPMS/x86_64/mod_ssl*rpm
Depois de instalá-los, você pode testar seu servidor HTTP no SSL Labs e obter um resultado semelhante a este .
Nota final: você pode encontrar versões pré-compiladas desses pacotes na Internet, mas eu recomendo fortemente que não as instale. Se você se preocupa em fornecer Forward Secrecy, não quer confiar na versão de OpenSSL de alguma pessoa aleatória, no servidor HTTP do Apache, no OpenVPN e assim por diante. Realmente.