Openssl

Résolu
solubac Messages postés 7 Statut Membre -  
solubac Messages postés 7 Statut Membre -
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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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
    1. Lordanonymous Messages postés 229 Statut Membre 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
    2. solubac Messages postés 7 Statut Membre
       
      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
    3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
       
      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
    4. solubac Messages postés 7 Statut Membre
       
      C'est le minimum de tout lire quand quelqu'un répond. Si en plus ça aide, c'est super ^^.
      Bonne continuation aussi.
      0
  2. Lordanonymous Messages postés 229 Statut Membre 143
     
    Bonjour.

    Pouvez-vous me citer le message d'erreur s'il vous plais ?
    0
    1. solubac Messages postés 7 Statut Membre
       
      En fait, il me met "sh_ftp.sh line 42: openssl aucun fichier ou répertoire de type".
      0
    2. Lordanonymous Messages postés 229 Statut Membre 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
    3. solubac Messages postés 7 Statut Membre
       
      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
    4. solubac Messages postés 7 Statut Membre
       
      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
    5. Lordanonymous Messages postés 229 Statut Membre 143
       
      Pouvez-vous mettre votre script en ligne que l'on puisse voir ce qui ne va pas ?
      0