Openssl

Résolu
solubac Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
solubac Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai un soucis (surement très bête) avec openssl. J'ai voulu créer un fichier .sh pour exécuter un "openssl aes-256-ecb -in /truc/fichierACrypter -out /truc/fichierCrypter -k test". Mais c'est l'échec, autant quand je suis connecté sur le serveur par SSH cette ligne de commande fonctionne parfaitement, mais dans le fichier shell, je reçois toujours un message d'erreur, à savoir "openssl: aucun fichier ou répertoire de ce type".
Vous l'aurez compris, je ne suis pas hyper doué avec shell, je me demande s'il ne faut pas appeler un fichier en amont ou .... autre chose mais je sais pas quoi d'autre ^^.

Merci d'avance à quiconque pourra m'aider.

2 réponses

mamiemando Messages postés 33766 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 
Bonjour,

Cause du problème (version courte) :

C'est sans doute que la commande openssl n'est pas installée sur ton système.

Cause du problème (version longue) :

Quand tu lances une commande shell, ce dernier recherche l'exécutable qui lui correspond. La manière dont ton shell "résout" une commande peut se voir avec la commande which (sous réserve que la commande en question ne soit ni un alias shell, ni une built-in shell (comme par exemple
cd
)). Dans notre cas !

(mando@velvet) (~) $ which openssl
/usr/bin/openssl


Comment le shell a découvert qu'openssl était là ? Grâce à une variable d'environnement, appelée PATH, qui indique ou chercher des exécutables dont le chemin absolu n'est pas précisé (c'est-à-dire quand on lance
openssl
au lieu de
/usr/bin/openssl
). Tu peux afficher le contenu de ton PATH avec la commande :

echo $PATH


Exemple :

(mando@velvet) (~) $ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games


Comment tester rapidement si une commande est installée ou non ? (version courte)

Généralement on utilise la commande
whereis
.

Comment tester rapidement si une commande est installée ou non ? (version longue)

La commande
whereis
notamment va examiner les répertoires traditionnellement énumérés dans le PATH. Si openssl a été installé proprement, on peut s'attendre à trouver l'exécutable correspondant dans l'un d'eux.
Exemple :

(mando@velvet) (~) $ whereis openssl
openssl: /usr/bin/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz


On voit ici que l'exécutable openssl est stockée dans /usr/bin, ce qui confirme bien le résultat que
which
nous avait retournée. L'avantage de
whereis
sur
which
, c'est qu'il peut examiner des répertoires qui ne sont pas forcément dans ton PATH. Ainsi, which permet surtout de comprendre comment une commande est résolue.

Prenons un exemple :
ifconfig
est traditionnellement stocké dans
/sbin
. Sous debian, ce répertoire n'est pas dans le PATH d'un profil utilisateur.

(mando@velvet) (~) $ which ifconfig

(mando@velvet) (~) $ whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

(mando@velvet) (~) $ ifconfig
bash: ifconfig : commande introuvable


On voit donc ici qu'il faudrait que "mando" lance
/sbin/ifconfig
(ou corrige son PATH pour y ajouter
/sbin
)

Comment résoudre le problème ? (version courte)

Il suffit d'installer openssl. Normalement un paquet permet de l'installer facilement. Souvent, un paquet porte le même nom que la commande qu'il met à disposition. On peut donc raisonnablement s'attendre à ce que le paquet à installer s'appelle
openssl
.

Comment résoudre le problème ? (version longue)

Nous allons voir comment retrouver le nom du paquet qui nous intéresse quand on ne connaît que le nom de la commande qui nous manque (ici openssl).

Ce qui suit est spécifique à debian et les distributions qui en dérivent (ubuntu, etc).

Sur une distribution debian, ou qui en dérive, on passera par apt (quitte à passer par une interface graphique qui pilote apt, telle que software-center sous ubuntu) :
http://doc.ubuntu-fr.org/software-center

Il faut au préalable déterminer le nom du paquet adéquat. En ligne de commande, l'outil ici le plus approprié sera
apt-file
, qu'il faudra au préalable installer via apt également. Une installation via apt se fait généralement via les commandes
aptitude
ou
apt-get
.

sudo apt-get update
sudo apt-get install apt-file
apt-file update


Faisons maintenant notre recherche. Traditionnellement un exécutable déployé via un paquet (comme ce sera le cas ici) s'installe dans
/bin
,
/sbin
,
/usr/bin
ou
/usr/sbin
, ce qui correspond aux chemins que l'on retrouve usuellement dans le PATH. (Notons les répertoires /usr/local/bin et /usr/local/sbin étant réservés aux installations manuelles).

Quel que soit le répertoire dans lequel openssl sera déployé, on sait que son chemin absolu contiendra "bin/openssl". C'est donc ce qu'on va chercher avec apt-file :

(mando@velvet) (~) $ apt-file search bin/openssl
openssl: /usr/bin/openssl
openssl-blacklist: /usr/bin/openssl-vulnkey


On retrouve donc ici que le paquet s'appelle bien openssl. Il ne reste plus qu'à l'installer, lui aussi via apt-get :

sudo apt-get install openssl


Bonne chance
2
Lordanonymous Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   143
 
A vrai dire je n'avais même pas pensé à ça. Il y a de forte chance que vos manip résolvent sont problème. Bien joué.
0
solubac Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Ah trop fort Mamiemando, en fait je l'avais bien installé mais je l'appelais mal, tes exemples m'ont beaucoup aidé. Un GRAND MERCI, sinon j'y serais encore. En plus ça a du te prendre du temps d'écrire tout ça, merci encore. T'es le meilleur (vile flatteur que je suis ^^).
0
mamiemando Messages postés 33766 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 
Eh bien merci à tous les deux pour les compliments, c'est vrai que quand on prend le temps d'expliquer les choses, ça fait plaisir de voir que ce n'est pas vain et qu'on est lu avec attention :-)

Bonne continuation à tous les deux
0
solubac Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
C'est le minimum de tout lire quand quelqu'un répond. Si en plus ça aide, c'est super ^^.
Bonne continuation aussi.
0
Lordanonymous Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   143
 
Bonjour.

Pouvez-vous me citer le message d'erreur s'il vous plais ?
0
solubac Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
En fait, il me met "sh_ftp.sh line 42: openssl aucun fichier ou répertoire de type".
0
Lordanonymous Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   143
 
Il semblerait que le fichier que vous passez en paramètre ne soit pas trouvé. Êtes vous sûr qu'il n'y a pas de faute à ce niveau ?

Renseignez-vous un chemin absolut (partant de la racine) ou relatif (depuis votre répertoire courant) ?
0
solubac Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Excellente question, en fait j'ai tous mis en chemin absolue. Je vais retenter avec un autre fichier à l'endroit où je suis. Merci du conseil. Je vous en reparle.
0
solubac Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Eh bien ma foie, aucun changement, même à la racine du serveur.... ça ne fonctionne pas.
Et pour utiliser "openssl" il ne faut pas l'appeler quelque part avant dans le fichier? Franchement là je sèche....
0
Lordanonymous Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   143
 
Pouvez-vous mettre votre script en ligne que l'on puisse voir ce qui ne va pas ?
0