SSL : Gitlab + LetsEncrypt (acme.sh) = <3

Valentin Brosseau | 26-01-2018

[Edit] Le support de LetsEncrypt est maintenant natif. Consulter l’article

GitLab c'est bien, mais Gitlab en SSL c'est mieux ! Un petit article rapide pour vous montrer la simplicité de mise en place des certificats SSL gratuit fourni par LetsEncrypt.

La première étape acme.sh

Le plus simple sous Linux pour générer des certificats LetsEncrypt c'est le client en bash Acme.sh :

curl https://get.acme.sh | sh

Ou via le sources :

git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install

😎 Pas besoin d’être root.

Configurer GitLab

Maintenant que nous avons notre client « Acme LetsEncrypt », il faut configurer GitLab pour qu'il accepte la connexion entrante venant de LetsEncrypt et qui va valider que vous êtes le propriétaire du nom de domaine. Pour ça il va falloir modifier la configuration « par défaut » de GitLab.

Il faut éditer le fichier /etc/gitlab/gitlab.rb pour ajouter la configuration suivante :

nginx['custom_gitlab_server_config'] = "location ^~ /.well-known { root /var/www/letsencrypt; }"
mattermost_nginx['custom_gitlab_mattermost_server_config'] = "location ^~ /.well-known { root /var/www/letsencrypt; }"

⚠️ Dans mon cas je vais valider également un certificat pour le Mattermost inclus dans GitLab.

Maintenant que la configuration est modifiée il faut la faire prendre en compte par GitLab :

$ gitlab-ctl reconfigure

On va également créer un dossier qui va recevoir le fichier .key et .crt.

$ mkdir -p /etc/gitlab/ssl/

Demander un certificat

Pas grand-chose à faire, il suffit juste de taper la bonne commande :

$ acme.sh --issue -d gitlab.votre_domaine.fr -d mattermost.votre_domaine.fr -w /var/www/letsencrypt --keypath /etc/gitlab/ssl/cert.key --certpath /etc/gitlab/ssl/cert.crt --fullchain-file /etc/gitlab/ssl/fullchain.crt

Et voilà, normalement les fichiers sont disponibles dans le dossier /etc/gitlab/ssl/

Activer le SSL dans GitLab

Maintenant que le certificat a été généré il faut ...

Lire la suite...

SSH Agent Forwarding : Garder votre identité de serveurs en serveurs

Valentin Brosseau | 25-01-2018

Une note rapide pour vous partager une « découverte » récente, jusqu'à pas si longtemps j'avais le réflexe de générer une clef depuis le serveur de « rebond ». Je ne m'étais jamais posé la question, mais avec l'usage de plus en plus important que je fais avec ma Yubikey j'ai un peu étudié la question et il est possible de « propager » son identité grâce au SSH Agent Forwarding.

Pour l’activer c’est simple, il suffit d’ajouter dans votre fichie ~/.ssh/config la directive suivante :

vim ~/.ssh/config
ForwardAgent yes

Et voilà ! Vous pouvez vérifier que ça fonctionne en tappant ssh-add -L sur le serveur distant vous devriez voir votre clef publique.

Lire la suite...

Sauver une carte SD! Utiliser votre RaspberryPi en lecture seul (ReadOnly)

Valentin Brosseau | 23-01-2018

Avec mes Pi j'ai un soucis récurrent c'est l'usure des cartes SD… J'ai tenté pleins de choses (réduire les logs, changer le swap, etc…) mais sans jamais de grand succès au final la carte SD se corrompt et rebelotte…

J'ai donc décidé de changer carrément de méthode, à partir de maintenant pour les projets ou je n'ai pas besoin d'écrire sur la carte SD, et bien je monte carrément le système en lecture seule. Pour ça il suffit de changer un peu le « /etc/fstab » :

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    ro                0       1
# Valeur par defaut : /dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

tmpfs           /tmp            tmpfs   defaults,noatime,mode=1777      0       0
tmpfs           /var/log        tmpfs   defaults,noatime,mode=0755      0       0
tmpfs           /var/lib/systemd tmpfs   defaults,noatime,mode=0755      0       0

À partir de maintenant si vous redémarrez le Pi votre système sera en lecture seule.

Donc c'est un bon début… Mais parfois c'est pratique de pouvoir modifier son système (mise à jour par exemple), j'ai donc trouvé un petit script qui permet de passer de lecture seule à lecture/écriture hyper simplement :

#!/bin/bash

case "${1}" in
        rw)
                sudo mount -o remount,rw /
                echo "Filesystem mounted in READ-WRITE mode"
                ;;
        ro)
                sudo mount -o remount,ro /
                echo "Filesystem mounted in READ-ONLY mode"
                ;;
        *)
                if [ -n "$(mount | grep mmcblk0p2 | grep -o 'rw')" ]
                then
                        echo "Filesystem is mounted in READ-WRITE mode"
                else
                        echo "Filesystem is mounted in READ-ONLY mode"
                fi
                echo "Usage ${0} [rw|ro]"
                ;;
esac

Pour l’utiliser c’est simple :

  • Repasser en lecture/écriture : ./mountfs.sh rw
  • Repasser en lecture seule : ./mountfs.sh ro

En espérant que ça aide certains d’entre vous …

Lire la suite...

Installer Archlinux sur un Dell XPS 13 2017 (Remplacer Ubuntu)

Valentin Brosseau | 21-01-2018

J'ai récemment eu une nouvelle machine (changement professionnel) cette machine est un DELL XPS 13 9360 (de 2017) fourni avec Ubuntu . C'est vraiment une superbe machine un 13 pouces dans un gabarit d'un 11… Bref génial !

La machine est livrée avec Ubuntu 16.04 LTS, ça fonctionne… mais je ne suis vraiment pas fan d'Ubuntu (exemple Out Of The Box unity plante régulièrement sans raison…) ! Donc migration sous Archlinux. Rien de bien particuliés pour l'installation, c'est une machine avec de l'UEFI j'ai donc décidé de faire un petit article récap pour lister les différentes étapes clef de l'installation :

  • Téléchargement de l’ISO.
  • Dans l’UEFI de la machine désactiver le secureboot (F12 au démarrage).
  • Choisir la clef USB sur laquelle l’ISO a été « copié ».

⚠️ Archlinux n’est pas un OS pour débutant, si vous avez un doute… Passer votre tour.

Je vous conseille une fois booté de lancer le service SSH pour faire l'installation depuis une autre machine (ça permet de copier les commandes) :

# Clavier
loadkeys fr-bepo

# Pour autoriser la connexion le compte Root doit avoir un mot de passe.
$ passwd
$ systemctl start sshd.service

# Connexion au Wifi
$ wifi-menu

# Avoir votre IP
$ ip addr

Pour la suite vous pouvez continuer depuis une autre machine

$ ssh root@ip.de.votre.machine

Pour éviter de perdre la partition de recovery fourni par DELL j’ai décidé de ne pas toucher au partitionnement « de base », je part du principe que ça sera le cas vous aussi.

La base

# Clavier
loadkeys fr-bepo

# Reglage de l’heure
timedatectl set-ntp true

# Éffacement des partitions
# Boot
$ mkfs.fat -F32 /dev/nvme0n1p1

# Système
$ mkfs.ext4 /dev/nvme0n1p3

# Montage des partitions
$ mount /dev/nvme0n1p3 /mnt
$ mount /dev/nvme0n1p1 /mnt/boot

# Installation du système de base et d’autres ...
Lire la suite...

Utiliser une Yubikey comme Smartcard et Agent-SSH avec Archlinux

Valentin Brosseau | 20-01-2018

J'ai récemment réinstallé un Archlinux (sur un Dell XPS 2017, le 9360) j'utilise depuis quelques mois une Yubikey comme Smartcard (et comme Agent-SSH). C'est bien pratique et cela évite d'avoir les clefs PGP et SSH physiquement sur la machine.

J'utilisais ma clé sur un Mac et sur Android, mais je ne l'avais pas branché sur une machine Archlinux… Donc ce qui nous intéresse la configuration. Pour que ça fonctionne il faut installer les paquets suivants :

yaourt -S gnupg libu2f-host pcsc-tools ccid libusb-compat

Puis démarrer le service :

systemctl enable pcscd.service
systemctl start pcscd.service

Et pour la configuration, c’est comme sur les autres systèmes :

enable-ssh-support
default-cache-ttl 1800
max-cache-ttl 21600
pinentry-program /usr/bin/pinentry

Et voilà, normalement c’est bon! Votre Yubikey est utilisable.

Lire la suite...

Activer les emoji’s colorés sur Archlinux

Valentin Brosseau | 19-01-2018

Une note rapide, si comme moi vous voulez activer les emoji’s colorés (comme sur un mobile) sur Archlinux sans vous prendre la tête il suffit d’installer la bonne font et créer le bon fichier de configuration :

yaourt -S noto-fonts-emoji
mkdir -p ~/.config/fontconfig/conf.d/
vim ~/.config/fontconfig/conf.d/01-emoji.conf

Dans le fichier 01-emoji.conf mettre le contenu suivant :

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <!-- Use Google Emojis -->
    <match target="pattern">
        <test qual="any" name="family"><string>Segoe UI Emoji</string></test>
        <edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
    </match>
</fontconfig>

Et voilà ! À vous les emoji’s colorés dans votre navigateur (ou autre) 😉.

Lire la suite...

MacOS: Désactiver les .DS_Store sur le réseau

Valentin Brosseau | 09-07-2017

Rien de plus chiant sous MacOs que les fichiers « .DS_Store » à défaut de pouvoir les retirer complètement il est possible de désactiver l’écriture des fichiers sur les disques réseaux :

sudo defaults write /Library/Preferences/com.apple.desktopservices DSDontWriteNetworkStores -string true

Pour la disparition complète des fichier il faudra attendre APFS et High Sierra (Enfin il me semble…)

Lire la suite...

« Page précédente Page suivante »