Comment puis-je installer et construire avec OpenSSL 1.0.0 sur Ubuntu?
Vous pouvez envisager cette question de suivi à Comment puis-je installer OpenSSL bibliothèque C++ sous Ubuntu?
Je suis en train de construire un peu de code sur Ubuntu 10.04 LTS qui nécessite OpenSSL 1.0.0.
Ubuntu 10.04 LTS est livré avec OpenSSL 0.9.8 k:
$ openssl version
OpenSSL 0.9.8k 25 Mar 2009
Donc, après l'exécution de sudo apt-get install libssl-dev
et la construction, l'exécution de la commande ldd confirme, je suis lié à 0.9.8:
$ ldd foo
...
libssl.so.0.9.8 => /lib/i686/cmov/libssl.so.0.9.8 (0x00110000)
...
libcrypto.so.0.9.8 => /lib/i686/cmov/libcrypto.so.0.9.8 (0x002b0000)
...
Comment puis-je installer OpenSSL 1.0.0 et la 1.0.0 paquet de développement?
Mise à jour: je suis en train d'écrire cette mise à jour après la lecture de SB's réponse (mais avant de l'essayer), parce que c'est clair que j'ai besoin d'expliquer que la solution la plus évidente de télécharger et d'installer OpenSSL 1.0.0 ne fonctionne pas:
Après avoir réussi à faire ce qui suit (recommandé dans le fichier INSTALL):
$ ./config
$ make
$ make test
$ make install
...J'obtiens toujours:
OpenSSL 0.9.8k 25 Mar 2009
...et:
$ sudo apt-get install libssl-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libssl-dev is already the newest version.
The following packages were automatically installed and are no longer required:
linux-headers-2.6.32-21 linux-headers-2.6.32-21-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
...et (juste pour faire sûr) après la reconstruction de mon code, ldd renvoie toujours la même chose.
Mise à jour #2: j'ai ajouté le "-I/usr/local/ssl/include" et "-L/usr/local/ssl/lib" options (suggéré par SB) à mon makefile, mais je suis maintenant un tas de destruction de référence des erreurs de compilation, par exemple:
/home/dspitzer/foo/foo.cpp:86: undefined reference to `BIO_f_base64'
/home/dspitzer/foo/foo.cpp:86: undefined reference to `BIO_new'
/usr/local/ssl/include/ne contient qu'une openssl répertoire (qui contient de nombreuses .h fichiers), donc j'ai aussi essayé "-I/usr/local/ssl/include/openssl", mais les mêmes erreurs.
Mise à jour #3: j'ai essayé de changer les OpenSSL comprend à partir de (par exemple):
#include <openssl/bio.h>
...:
#include "openssl/bio.h"
...dans le .rpc fichier source, mais toujours obtenir la même undefined reference erreurs.
Mise à jour #4: je me rends compte maintenant ceux undefined reference erreurs sont des erreurs d'édition de liens. Si je supprime le "-L/usr/local/ssl/lib" de mon Makefile, je n'ai pas les erreurs (mais il des liens vers d'OpenSSL 0.9.8). Le contenu de /usr/local/ssl/lib/sont:
$ ls /usr/local/ssl/lib/
engines libcrypto.a libssl.a pkgconfig
J'ai ajouté -lcrypto, et les erreurs s'en alla.
source d'informationauteur Daryl Spitzer
Vous devez vous connecter pour publier un commentaire.
Obtenir la 1.0.0 une source de ici.
Cela le place dans /usr/local/ssl par défaut
Lorsque vous construisez, vous devez demander à gcc de regarder pour les en-têtes dans /usr/local/ssl/include et le lien avec les bibliothèques dans /usr/local/ssl/lib. Vous pouvez le spécifier en faisant quelque chose comme:
MODIFIER NE PAS remplacer un système de bibliothèques. Il est préférable de garder les nouvelles bibliothèques dans /usr/local. L'écrasement d'Ubuntu par défaut peut être dangereux pour votre santé et de briser votre système.
En outre, je me suis trompé sur les chemins que j'ai juste essayé ce dans Ubuntu 10.04 VM. Fixe.
Remarque, il n'est pas nécessaire de changer LD_LIBRARY_PATH depuis la openssl libs vous lien par contre par défaut sont les bibliothèques statiques (au moins par défaut, il pourrait y avoir un moyen de les configurer en tant que dynamique libs ./config étape)
Vous pouvez avoir besoin de lien contre libcrypto parce que vous êtes à l'aide de certains appels qui sont construits et définis dans le libcrypto paquet. Openssl 1.0.0 construit en fait de deux bibliothèques, libcrypto et libssl.
EDIT 2 Ajouté
-lcrypto
à gcc ligne.Au lieu de:
Faire:
Cela vous aidera à la mise à jour d'openssl 1.0.1 g de patch pour CVE-2014-0160 (Heartbleed).
OpenSSL Avis De Sécurité [07 Apr 2014]
TLS battement de coeur lire la saturation (CVE-2014-0160)
Un manque de vérification de limites dans le traitement de la TLS rythme cardiaque de l'extension de
utilisé pour révéler jusqu'à 64 ko de mémoire à connexion d'un client ou d'un serveur.
Seulement 1.0.1 et 1.0.2-beta versions d'OpenSSL sont touchés, y compris
1.0.1 f et 1.0.2-beta1.
Merci pour Neel Mehta de Google de Sécurité pour la découverte de ce bug et de
Adam Langley et Bodo Moeller pour
la préparation de la corriger.
Les utilisateurs concernés doivent mettre à jour OpenSSL 1.0.1 g. Les utilisateurs sont incapables d'immédiatement
la mise à niveau peut également recompiler OpenSSL avec -DOPENSSL_NO_HEARTBEATS.
1.0.2 sera corrigé dans la version 1.0.2-beta2.
Source: https://www.openssl.org/news/secadv_20140407.txt
Voici ce que résolu pour moi:
Mise à niveau de la dernière version d'OpenSSL sur Ubuntu
Transcrire les informations principales: