Mais pourquoi diable vouloir faire une installation de cet outil alors qu’Aeris à déjà mis tout le bazar en place sur cryptcheck.fr ?

Alors, d’une part, je dois avouer que les réunions passent beaucoup plus vite lorsqu’on est occupé avec de saines occupations…

D’autre part, il arrive que le frontend tourne en boucle et n’affiche pas les résultats… Chose qui a de grande chances d’être causée par un check sur l’IPv6 qui n’aboutit pas.

Je vous mets aussi en garde sur le fait que la compilation peut être un chouïa longue, du coup ne tentez pas l’aventure sur une réunion de 10 minutes…
À titre d’exemple, l’installation de rbenv et la compilation de cryptcheck m’ont pris environ une dizaine de minutes chacune sur une machine équipée d’un Intel Xeon W3530 (8) @ 2.8GHz couplé à 8 Gio de RAM…

Pour la suite l’installation se déroulera sur une Debian GNU/Linux en version 9.5 lors de la rédaction de cet article.

Isoler l'application

Comme décrit sur la page du projet, cryptcheck utilise des versions personnalisées de la bibliothèque OpenSSL. Celles-ci étant cryptographiquement affaiblies, l'installation au sein d'un container semble donc être un bon choix...

Étant donné que je pars d'un container lxc fraichement installé, il y a quelques paquets nécessaires à mettre en place :

[root@crypt] # apt update && apt full-upgrade -y
[root@crypt] # apt install bzip2 git curl wget ca-certificates -y

Sinon l'installation des paquets suivants devraient suffirent pour la compilation et l'installation :

[root@crypt] # apt install make gcc autoconf bison build-essential libssl1.0-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev

Ajout d'un utilisateur dédié à l'utilisation de l'outil :

[root@crypt] # adduser crypt --disabled-password

Rbenv

L'utilisation de rbenv permet de choisir la version de ruby à mettre en place de manière assez simple.

[root@crypt] # su - crypt
[crypt:~] $ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

La documentation propose de compiler l'extension dynamique bash afin d'accélérer rbenv.

[crypt:~] $ cd ~/.rbenv && src/configure && make -C src

Bon, chez moi ça plante™, mais comme le dit la doc

Don't worry if it fails, rbenv will still work normally

On modifie notre .bashrc afin de pouvoir accéder à la commande rbenv :

[crypt:~] $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

On l'initialise :

[crypt:~] $ ~/.rbenv/bin/rbenv init && source .bashrc

Et on vérifie que tout fonctionne bien :

[crypt:~] $ type rbenv
rbenv est une fonction
rbenv () 
{ 
    local command;
    command="${1:-}";
    if [ "$#" -gt 0 ]; then
        shift;
    fi;
    case "$command" in 
        rehash | shell)
            eval "$(rbenv "sh-$command" "$@")"
        ;;
        *)
            command rbenv "$command" "$@"
        ;;
    esac
}

Ruby-build

Nous allons peupler l'environnement tout juste créé avec la version 2.3.3 nécessaire à cryptcheck

[crypt:~] $ mkdir -p "$(rbenv root)"/plugins
[crypt:~] $ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
[crypt:~] $ rbenv install 2.3.3

C'est maintenant que l'on peut boire un ou deux cafés...

Puis, on déclare l'environnement :

[crypt:~] $ rbenv global 2.3.3

Cryptcheck

On passe à l'installation de l'outil vu que c'est un peu pour ça que l'on en est là :

[crypt:~] $ git clone https://git.imirhil.fr/aeris/cryptcheck
[crypt:~] $ cd cryptcheck && make
[crypt:~] $ make install-rbenv-cryptcheck

Ici aussi la compilation peut être longue... Un petit message nous avertit quand celle-ci est terminée :

Post-install message from httparty:
When you HTTParty, you must party hard!

On ajoute les variables d'environnement notre bashrc :

[crypt:~] $ echo 'export PATH="$HOME/cryptcheck/bin:$PATH"' >> ~/.bashrc

Et c'est tout bon !

Test de l'outil

Un petit test en image sur mon instance Mastodon :

Ressources utilisées :