Para o CentOS, é sugerido adicionar o sinal -lss3
à sua linha de compilação. Link de suporte .
Você também pode tentar vincular estaticamente o OpenSSL à sua compilação, no mesmo link acima. Substituindo a localização dos seus arquivos *.a
:
#!/bin/bash
# Emerge openssl with static-libs to obtain all the *.a
mkdir -p heartbleed.d
cd heartbleed.d
ar x /usr/lib/libssl.a
ar x /usr/lib/libcrypto.a
ar x /usr/lib/libgmp.a
ar x /usr/lib/libz.a
cd ..
gcc -o heartbleed heartbleed.d/*.o heartbleed.c -ldl
Se você está no Debian (por completo eu sei que esta questão é em relação ao CentOS 6.x) então você terá esse problema. Então este link pode ajudá-lo com seu problema , ele fornece a solução abaixo:
$ gcc heartbleed.c -o heartbleed -Wl,-Bstatic -lssl -Wl,-Bdynamic -lssl3 -lcrypto
$ uname -a
Linux xxxxx Debian 3.2.54-2 x86_64 GNU/Linux
$ ls -al heartbleed
-rwxr-xr-x 1 x x357603 Apr 11 23:20 heartbleed
Este link é meio confuso , ele apresenta o problema exato em 2013, mas apenas diz que eles atualizaram o cabeçalho para compilar. Então, talvez triplique verifique o arquivo de cabeçalho para comentários?
Outra solução para o seu problema pode ser responder ao seguinte. Qual versão do OpenSSL sua rede executa? Aqui está um trecho de HeartBleed.com
What versions of the OpenSSL are affected?
Status of different versions:
OpenSSL 1.0.1 through 1.0.1f (inclusive) are vulnerable OpenSSL 1.0.1g is NOT vulnerable OpenSSL 1.0.0 branch is NOT vulnerable OpenSSL 0.9.8 branch is NOT vulnerable
Foi corrigido no OpenSSL versão 1.0.1g: No OpenSSL Security Advisory :
Affected users should upgrade to OpenSSL 1.0.1g. Users unable to immediately upgrade can alternatively recompile OpenSSL with -DOPENSSL_NO_HEARTBEATS.
Você pode recompilar versões mais antigas com esse sinalizador se não puder atualizar.