Articles plus anciens

Hier je bidouillais sur mon Dockstar et un programme que je testais s’est montré trop gourmand en ressource puis à crashé, mon système ne répondais plus du tout. Impatient j’ai rebooté électriquement mon Dockstar, erreur fatale, impossible après cela de me connecter en SSH sur Debian.

Voici les symptômes au début du boot le système est pingable, la lumière du Dockstar clignote en vert, puis le système ne répond plus au ping et la lumière s’éteint….

Voici les étapes suivi pour ramener le Dockstar à la vie.

Booter sous pogoplug

Tout d’abord je me suis assuré que le problème venait de Debian et pas du Dockstar lui-même, pour cela il suffit de débrancher tous les périphériques USB et de rebooter, au bout d’un certain temps le système devrait être accessible en SSH avec l’utilisateur root (comme lors de la toute première connexion au Dockstar sous Pogoplug) :

ssh root@[Ip du Dockstar]

Avec le mot de passe stxadmin

Si ce n’est pas le cas il va vous falloir vous fabriquer un connecteur JTAG, heureusement pour moi je n’en ai pas eu besoin

Installer le uBoot modifié

Jeff Doozan (encore lui) à créé une version modifié du uBoot (Universal Bootloader) permettant d’interagir avec le dockstar lors du boot, nous allons l’installer (peut n’est ce pas nécessaire, je n’ai pas vérifié mais il semblerait que le uBoot modifié soit déjà installé dès lors que l’on à installé Debian avec le script de Jeff Doozan)

cd /tmp
wget http://jeff.doozan.com/debian/uboot/install_uboot_mtd0.sh
chmod +x install_uboot_mtd0.sh
./install_uboot_mtd0.sh

Configurer netconsole

Netconsole permet de transmettre les messages du noyaux via UDP (réseau), il faut configurer netconsole (inclus dans le noyau 2.6 de Linux) pour qu’il emette les message de boot vers un autre PC via le réseau.

On réalise cette configuration avec l’utilitaire fw_setenv installé par le uBoot de Jeff Dozan, dans mon cas cet utilitaire est présent dans /usr/sbin qui n’est pas dans mon path d’où le chemin complet à chaque fois :

/usr/sbin/fw_setenv serverip [adresse IP PC]
/usr/sbin/fw_setenv ipaddr [adresse IP Dockstar]
/usr/sbin/fw_setenv if_netconsole 'ping $serverip'
/usr/sbin/fw_setenv start_netconsole 'setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;'
/usr/sbin/fw_setenv preboot 'run if_netconsole start_netconsole'

Diagnostiquer le boot du Dockstar

Sur le PC qui recevra les messages netconsole lancer la commande :

nc -lu 6666

Pour Ubuntu (11.04) sur Debian il semblerait que ce soit nc -l -u -p 6666 ce qui m’a valu un peu de recherche…

Rebooter le Dockstar (shutdown -r now sur la console en SSH que vous devez avoir sous la main pour avoir fait les manip ci-dessus) et miracle sur votre autre console (celle avec le nc) les messages de boot s’affichent :

Messages de boot sous pogoplug :

U-Boot 2010.09 (Oct 23 2010 - 11:49:22)
 Marvell-Dockstar/Pogoplug by Jeff Doozan
 Hit any key to stop autoboot:  0
 (Re)start USB...
 USB:   Register 10011 NbrPorts 1
 USB EHCI 1.00
 scanning bus for devices... 2 USB Device(s) found
 scanning bus for storage devices... 0 Storage Device(s) found
 ** Block device usb 0 not supported
 
** Invalid boot device **
 Creating 1 MTD partitions on "nand0":
 0x000002500000-0x000010000000 : "mtd=3"
 UBI: attaching mtd1 to ubi0
 UBI: physical eraseblock size:   131072 bytes (128 KiB)
 UBI: logical eraseblock size:    129024 bytes
 UBI: smallest flash I/O unit:    2048
 UBI: sub-page size:              512
 UBI: VID header offset:          512 (aligned 512)
 UBI: data offset:                2048
 UBI: attached mtd1 to ubi0
 UBI: MTD device name:            "mtd=3"
 UBI: MTD device size:            219 MiB
 UBI: number of good PEBs:        1751
 UBI: number of bad PEBs:         1
 UBI: max. allowed volumes:       128
 UBI: wear-leveling threshold:    4096
 UBI: number of internal volumes: 1
 UBI: number of user volumes:     0
 UBI: available PEBs:             1730
 UBI: total number of reserved PEBs: 21
 UBI: number of PEBs reserved for bad PEB handling: 17
 UBI: max/mean erase counter: 1/1
 UBIFS error (pid 0): ubifs_get_sb: cannot open "ubi:rootfs", error -19
 Error reading superblock on volume 'ubi:rootfs'!
 ** Block device usb 0 not supported
 ** Block device usb 1 not supported
 ** Block device usb 2 not supported
 ** Block device usb 3 not supported
 ** Block device usb 0 not supported
 ** Block device usb 0 not supported
 Wrong Image Format for bootm command
 ERROR: can't get kernel image!
 stopping USB..
 ### JFFS2 loading 'uboot-original-mtd0.kwb' to 0x800000
 Scanning JFFS2 FS: ........ done.
 ### JFFS2 load complete: 524288 bytes loaded to 0x800000
 ## Starting application at 0x00800200 ...

J’ai ensuite rebranche ma clé USB qui contient mon système Debian et le disque dur qui contient divers point de montage et rebooté une autre fois le Dockstar

 

Messages de boot sous Debian :

U-Boot 2010.09 (Oct 23 2010 - 11:49:22)
 Marvell-Dockstar/Pogoplug by Jeff Doozan
 Hit any key to stop autoboot:  0
 (Re)start USB...
 USB:   Register 10011 NbrPorts 1
 USB EHCI 1.00
 scanning bus for devices... 4 USB Device(s) found
 scanning bus for storage devices... 2 Storage Device(s) found
 Loading file "/rescueme" from usb device 0:1 (usbda1)
 ** File not found /rescueme
 reading /rescueme.txt
 
** Unable to read "/rescueme.txt" from usb 0:1 **
 Creating 1 MTD partitions on "nand0":
 0x000002500000-0x000010000000 : "mtd=3"
 UBI: attaching mtd1 to ubi0
 UBI: physical eraseblock size:   131072 bytes (128 KiB)
 UBI: logical eraseblock size:    129024 bytes
 UBI: smallest flash I/O unit:    2048
 UBI: sub-page size:              512
 UBI: VID header offset:          512 (aligned 512)
 UBI: data offset:                2048
 UBI: attached mtd1 to ubi0
 UBI: MTD device name:            "mtd=3"
 UBI: MTD device size:            219 MiB
 UBI: number of good PEBs:        1751
 UBI: number of bad PEBs:         1
 UBI: max. allowed volumes:       128
 UBI: wear-leveling threshold:    4096
 UBI: number of internal volumes: 1
 UBI: number of user volumes:     0
 UBI: available PEBs:             1730
 UBI: total number of reserved PEBs: 21
 UBI: number of PEBs reserved for bad PEB handling: 17
 UBI: max/mean erase counter: 1/1
 UBIFS error (pid 0): ubifs_get_sb: cannot open "ubi:rootfs", error -19
 Error reading superblock on volume 'ubi:rootfs'!
 Loading file "/boot/uImage" from usb device 0:1 (usbda1)
 1 bytes read
 Found bootable drive on usb 0:1
 Loading file "/boot/uImage" from usb device 0:1 (usbda1)
 1433640 bytes read
 Loading file "/boot/uInitrd" from usb device 0:1 (usbda1)
 4887353 bytes read
 ## Booting kernel from Legacy Image at 00800000 ...
 Image Name:   Debian kernel 2.6.32-5-kirkwood
 Image Type:   ARM Linux Kernel Image (uncompressed)
 Data Size:    1433576 Bytes = 1.4 MiB
 Load Address: 00008000
 Entry Point:  00008000
 Verifying Checksum ... OK
 ## Loading init Ramdisk from Legacy Image at 01100000 ...
 Image Name:   Debian ramdisk 2.6.32-5-kirkwood
 Image Type:   ARM Linux RAMDisk Image (gzip compressed)
 Data Size:    4887289 Bytes = 4.7 MiB
 Load Address: 00000000
 Entry Point:  00000000
 Verifying Checksum ... OK
 Loading Kernel Image ... OK
 OK
 
Starting kernel ...

On voit / confirme alors que le boot du Dockstar fonctionne parfaitement puisque le kernel Debian démarre. Le problème se situe donc au niveau de ce dernier…

 

Réparer Debian

Après avoir éteint le Dockstar, j’ai branché la clé USB contenant Debian sur mon PC et commencé par faire une vérification du disque :

sudo fsck /dev/sdb1

La clé contenait une erreur :

fsck de util-linux-ng 2.17.2
 e2fsck 1.41.14 (22-Dec-2010)
 /dev/sdb1 est monté.
 
AVERTISSEMENT !!! Le système de fichiers est monté.   Si vous continuez
 vous ***ALLEZ*** causer des dommages ***SÉVÈRES*** au système de fichiers.
 
Souhaitez-vous réellement continuer (o/n)? oui
 
/dev/sdb1 contient un système de fichiers comportant des erreurs, vérification forcée.
 Passe 1 : vérification des i-noeuds, des blocs et des tailles
 Passe 2 : vérification de la structure des répertoires
 Passe 3 : vérification de la connectivité des répertoires
 Passe 4 : vérification des compteurs de référence
 I-noeud 8098 non attaché
 Connecter à /lost+found<o>? oui
 
le compteur de référence de l'i-noeud 8098 est 2, devrait être 1. Corriger<o>? oui
 
Passe 5 : vérification de l'information du sommaire de groupe
 
/dev/sdb1: ***** LE SYSTÈME DE FICHIERS A ÉTÉ MODIFIÉ *****
 /dev/sdb1 : 28353/108864 fichiers (1.3% non contigus), 217045/435448 blocs

J’ai ensuite re-généré l’image du kernel, pour cela on démarre le Dockstar sous pogoplug (sans clé USB) et on se connecte dessus en SSH (voir 1er paragraphe).

On connecte alors la clé USB contenant Debian, on la monte, on fait un chroot sur le point de montage et on régénère l’image du kernel :

mount /dev/sda1 /mnt
/usr/sbin/chroot /mnt
/usr/bin/mkimage -A arm -O linux -T kernel  -C none -a 0x00008000 -e 0x00008000 -n Linux-2.6.32-5 -d /boot/vmlinuz-2.6.32-5-kirkwood /boot/uImage

Sortie de la commande :

Image Name:   Linux-2.6.32-5
 Created:      Tue Jun 21 23:58:21 2011
 Image Type:   ARM Linux Kernel Image (uncompressed)
 Data Size:    1433576 Bytes = 1399.98 kB = 1.37 MB
 Load Address: 0x00008000
 Entry Point:  0x00008000

Puis

 

/usr/bin/mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs -d /boot/initrd.img-2.6.32-5-kirkwood /boot/uInitrd

 

Sortie de la commande :

Image Name:   initramfs
 Created:      Tue Jun 21 23:58:25 2011
 Image Type:   ARM Linux RAMDisk Image (gzip compressed)
 Data Size:    4887289 Bytes = 4772.74 kB = 4.66 MB
 Load Address: 0x00000000
 Entry Point:  0x00000000

 

Laisser les périphériques branchés, sortir du chroot (exit) et rebooter et normalement miracle le Dockstar devrait démarrer sous Debian…

 

Sources :

Mon serveur web NGINX ne sert que du contenu privé protégé par mot de passe, mais si l’accès à ce contenu est protégé, les données qui transitent sur le réseau elles ne le sont pas.

Pour cela il faut mettre en œuvre un chiffrage via https.

Https se base sur un système de clé de cryptage publique/certificat, il existe plusieurs moyen pour obtenir ces fichiers :

J’ai personnellement choisi cette dernière solution.

Dans mon article OpenSSL puissance et complexité, j’ai listé/référencé les étapes et commandes openssl disponible pour créer un certificat.

 

Voici les sujets abordé par cet article :

 

Gestion des certificats manuellement

Préparation de l’environnement

Je vais créer un répertoire myCa dans le /home de mon utilisateur et y placer tout ce qui sera nécessaire à gérer les certificats

cd && mkdir -p myCA/certs && mkdir myCA/private && mkdir myCA/csr && mkdir myCA/newcerts && mkdir myCA/crl && mkdir myCA/tmp && cd myCA
echo '01' > serial  && touch index.txt
cp /etc/ssl/openssl.cnf .

Configuration d’openSSL

On édite ensuite le fichier openssl.cnf copié dans notre répertoire myCA, pour modifier les éléments suivants :

Section [ CA_default ] on paramètre les dossiers, seul la première valeur est à modifier :

dir        = <strong>/home/[utilisateur]/myCA</strong>            # Where everything is kept
certs        = $dir/certs        # Where the issued certs are kept
crl_dir        = $dir/crl        # Where the issued crl are kept
database    = $dir/index.txt    # database index file.
new_certs_dir    = $dir/newcerts        # default place for new certs.
certificate    = $certs/cacert.pem    # The CA certificate
serial        = $dir/serial         # The current serial number
crl        = $dir/crl.pem         # The current CRL
private_key    = $dir/private/cakey.pem # The private key
RANDFILE    = $dir/private/.rand    # private random number file

Un peu plus loin dans cette même section, on paramètre la duré de validité par défaut des certificats et le cryptage utilisé :

default_days    = 1825            # how long to certify for
default_crl_days= 30            # how long before next CRL
default_md    = sha1            # which md to use.

Dans la section [ req_distinguished_name ] j’ai francisé les libellé et adpater les valeurs par défaut :

[ req_distinguished_name ]
 countryName                     = Pays (2 lettres)
 countryName_default             = FR
 countryName_min                 = 2
 countryName_max                 = 2
 stateOrProvinceName             = Region
 stateOrProvinceName_default     = PAYS DE LOIRE
 localityName                    = Ville
 localityName_default            = Nantes
 0.organizationName              = Societe
 0.organizationName_default      = VoidAndAny
 #organizationalUnitName         = Organizational Unit Name (eg, section)
 #organizationalUnitName_default =
 commonName                      = Site
 commonName_max                  = 64
 emailAddress                    = Email
 emailAddress_max                = 64
 emailAddress_default            = mon_email@free.fr

Dès lors les questions sont les suivantes et il suffit de les valider par entrée pour avoir les valeurs par défaut (optionnel) :

Pays (2 lettres) [FR]:
Region [PAYS DE LOIRE]:
Ville [Nantes]:
Societe [VoidAndAny]:
Site []: mon_domaine.fr
Email [mon_email@free.fr]:

Dans la section [ usr_cert ] j’ai modifié les commentaire qui seront embarqués dans les certificats :

nsComment            = "Void And Any Generated Certificate"

Création de l’autorité de certification

On va tout d’abord créer notre autorité de certification qui permettra de signer les certificats serveurs suivant.

Cela se fait avec la commande (se placer dans le répertoire myCA) :

openssl req -new -x509 -config ./openssl.cnf -keyout ./private/cakey.pem -out ./certs/cacert.pem -days 1825

Lors de la génération du certificat un mot de passe vous est demandé, en choisir un robuste et ne pas l’oublier sous peine de ne plus pouvoir vous servir de votre autorisé de certification.

Création du/des certificats

En 2 temps, création de la clé et de la demande de certificat :

openssl req -new -keyout ./private/mondomaine.key -out ./csr/mondomaine.csr -config ./openssl.cnf -nodes -days 1825

L’option -nodes permet d’indiquer que la clé qui doit être générée ne doit pas être protégée par un mot de passe (passphrase)

 

La commande vous poseras quelques questions :

Generating a 2048 bit RSA private key
 .............+++
 ............................+++
 writing new private key to '/etc/nginx/certificates/test.key'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:FR
 State or Province Name (full name) [Some-State]:PAYS DE LOIRE
 Locality Name (eg, city) []:Nantes
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:VoidAndAny
 Organizational Unit Name (eg, section) []:
 Common Name (eg, YOUR name) []:mon_domaine.fr
 Email Address []:mon_email@free.fr

La zone la plus importante est « Common name » qui doit correspondre au nom du domaine/sous-domaine que vous voulez protéger.

 

Création du certificat à partir de la demande de certificat et signature de ce dernier avec notre autorité de certification :

openssl ca -infiles ./csr/mondomaine.csr -out ./certs/mondomaine.crt -config ./openssl.cnf

Les certificat et sa clé sont alors respectivement dans les sous-répertoires certs et private.

 

Voila pour la création manuelle voici comment automatiser tout cela et ne pas avoir de ligne de commande à taper.

 

Gestion des certificats avec easyCA

EasyCA est un script qui n’est plus maintenu depuis 2005 et que l’on peut retrouver ICI, personnellement j’ai utilisé la version modifiée de GuiguiAbloc que l’on trouve ICI

Je vais comme précédemment faire du répertoire myCA de mon home le lieu de travail. (si vous avez fait des essais manuellement il peut être conseillé de tout supprimer le contenu du dit répertoire ou d’en utiliser un autre)

Télécharger l’archive, la décompresser et rendre le script exécutable :

mkdir -p ~/myCA && cd ~/myCA
wget http://guiguiabloc.appspot.com/wp-content/2008/12/easyca.tgz
tar -xvf easyca.tgz
mv easyca/* .
chmod 755 easyCA.sh

Éditer le fichier openssl.cnf fournis, modifier les lignes préalablement décrites et supprimer la ligne :

# !!!!! remove this line after configuration as it is NOT_CONFIGURED yet !!!

Rque : j’ai en plus changé les différents paramètres nsComment en fin de fichier.

Lancer le script easyCA.sh, le menu suivant apparaît :

=====================================================================
 Certificate Management System
 easyCA version 0.9(6) by Ferry Kemps and Guiguiabloc
 GPL Licensed
 =====================================================================
 
 1) Sign a Certificate Signing Request (PKCS#10)
 2) Create a Server Certificate (PEM SelfSigned)
 3) Create a Client Certificate (PKCS#12)
 4) Create a Certificate Signing Request
 5) Generate Certificate Revocation List (CRL)
 6) List, Display and Revoke Certificates
 
 I) Initialize Root Certificate Authority (CA)
 O) Initialize OCSP Server Certificate
 B) Backup & Restore the Certificate environment
 R) Reinstall easyCA (erase)
 
==> Make your choice [none]:

(dans les « copie d’écran » suivante je n’ai pas personnalisé mon openssl.cnf, d’où les localité, adresse mail par défaut)

Création de l’autorité de certification

Pour créer l’autorité de certification il suffit de choisir l’option I :

-----------------------------------------------------------------------
 ----------------- Initialize root Certificate Authority ---------------
 -----------------------------------------------------------------------
 
Are you sure you want to (re)initialize the Root CA? [y|n]: y
 >>> Initializing Root CA <<<
 Generating a 1024 bit RSA private key
 ...................++++++
 .............................................++++++
 writing new private key to './private/cakey.pem'
 Enter PEM pass phrase:
 Verifying - Enter PEM pass phrase:
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [NL]:
 State or Province Name (full name) [Gelderland]:
 Locality Name (eg, city) [Arnhem]:
 Organization Name (eg, company) [Your Company Name]:
 Organizational Unit Name (eg, section) [HQ]:
 Common Name (eg, your name or your server's hostname) []:
 Email Address [postmaster@domain.ext]:
 
Press [enter] to continue

Comme dans le paragraphe précédent il faut choisir une passphrase sécurisé et ne pas l’oublier. Le Common Name n’a que peut d’importance ici.

Création du/des certificats

Pour générer un certificat serveur, il faut procéder en 2 temps, la demande de certificat, option 4 du menu :

-----------------------------------------------------------------------
 --------------- Generate Certificate Signing Request ------------------
 -----------------------------------------------------------------------
 
Enter Certificate CN (Common name|FQDN) like www.example.com [none]: mondomaine
 Generating a 1024 bit RSA private key
 ..................++++++
 .......++++++
 writing new private key to './private/mondomaine-key.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [NL]:
 State or Province Name (full name) [Gelderland]:
 Locality Name (eg, city) [Arnhem]:
 Organization Name (eg, company) [Your Company Name]:
 Organizational Unit Name (eg, section) [HQ]:
 Common Name (eg, your name or your server's hostname) []:mondomaine.fr
 Email Address [postmaster@domain.ext]:
 
Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:
 An optional company name []:
 
Certificate Signing Request (CSR) stored as: ./csr/mondomaine.csr
 Certificate private-key stored as: ./private/mondomaine-key.pem
 Press [enter] to continue

La première question (Enter Certificate CN (Common name|FQDN) like www.example.com [none]:) ne sert pas à alimenter le common name du certificat mais a déterminer le nom des fichier certificat et clé.

A la question common name, il faut ici indiquer le domaine sur lequel s’appliquera la certificat sous peine d’avoir des avertissement de sécurité dans les navigateurs.

 

2ème étape obtenir le certificat et le signer , option 1 du menu :

-----------------------------------------------------------------------
 --------------- Certifiace Signing Request handling -------------------
 -----------------------------------------------------------------------
 
(CSR request files should be copied into directory: ./csr)
 
1: mondomaine.csr
 
==> Select the CSR to sign [none]: 1
 
==> Add OCSP Extension to Certificate ? [y/N]: N
 
==> Select the Usage Key [server|client|none]: server
 Using configuration from ./openssl.cnf
 Enter pass phrase for ./private/cakey.pem:
 Check that the request matches the signature
 Signature ok
 Certificate Details:
 Serial Number: 1 (0x1)
 
...
 
 Certificate is to be certified until Jun 19 18:36:00 2016 GMT (1825 days)
 Sign the certificate? [y/n]:y
 
1 out of 1 certificate requests certified, commit? [y/n]y
 Write out database with 1 new entries
 Data Base Updated
 
Signed certificate stored as: ./certs/mondomaine.crt
 Return this certificate to the requesting party.
 
Display Certificate? y/n [n] n

On sélectionne les demande de certificat en cours (il peut y en avoir plusieurs), on indique le rôle du certificat à générer (server), on saisi le mot de passe de l’autorité de certification et voila…

L’utilisation de easyCA est quand même beaucoup plus simple que de se taper les lignes de commande….

 

Pour info voici les commandes par easyCA  qui sont lancées pour les 3 étapes décrites ci-dessus :

openssl req -new -x509 -config ./openssl.cnf -keyout ./private/cakey.pem -out ./certs/cacert.pem -days 1825
 
openssl req -new -nodes -config ./openssl.cnf -days 1825 -keyout ./private/mondomaine-key.pem -out ./csr/mondomaine.csr
 
openssl ca -config ./openssl.cnf -cert ./certs/cacert.pem -extensions  SERVEUR -in ./csr/mondomaine.csr -out ./certs/mondomaine.crt

Elle très très semblables à celles que j’ai décrite dans le premier paragraphe…


Configuration NGINX

Une fois un certificat généré pour votre site que ce soit manuellement ou via easyCA, il faut tout d’abord copier le clé et le dit certificat vers un répertoire qui sera accessible par NGINX.

Dans mon cas j’ai créé un répertoire certificates dans /etc/nginx.

cd ~
sudo cp myCA/certs/mondomaine.crt /etc/nginx/certificates
sudo cp myCA/private/mondomaine-key.pem /etc/nginx/certificates
sudo chown root.root /etc/nginx/certificates/mondomaine-key.pem
sudo chmod 400 /etc/nginx/certificates/mondomaine-key.pem

Il suffit ensuite d’indiquer à NGINX pour le site voulu l’écouter sur le port 443 (au lieu du 80) et l’utilisation du certificat et de la clé privée

server {
    listen               443;
    server_name          mondomaine.fr;

    ssl                  on;
    ssl_certificate      /etc/nginx/certificates/mondomaine.crt;
    ssl_certificate_key  /etc/nginx/certificates/mondomaine-key.fr;

....
  }

Et rediriger le port 443 vers votre serveur…

 

Configuration Firefox

Lorsque vous irez sur votre site pour la première fois vous aurez un message d’avertissement car votre autorité de certification (c’est à dire votre serveur) n’est pas reconnue par le navigateur :

Si on regarde les détail technique on a ceci :

Ou ceci Dans le premeir cas je ne comprend pas très bien l’erreur, peut être est ce d^au fait que j’utilise un certificat joker mais ceci est une autre histoire, dans le 2ème cas on a 2 erreurs, le fait que le certificat est auto-signée et le fait que le common name donnée lors de la création du certification ne correspond pas au domaine sur lequel il a été appliqué.

Dans tous les cas pour passer outre il suffit d’importer le certificat racine publique de notre autorité de certification.

Il faut donc diffuser, copier le fichier cacert.pem contenu dans le répertoire certs sur votre serveur sur les machine clientes. ATTENTION il ne faut surtout pas diffuser la clé privé cakey.pem

 

Ensuite sur les machines clientes dans Firefox aller dans le menu « Avancé » sur l’onglet « Chiffrement » et cliquer sur « Afficher les certificats » :

Dans l’onglet « Autorités » cliquer sur « Importer… » et sélectionner votre fichier (cacert.pem)

Sélectionner l’usage que vous souhaitez faire du certificat « identifier des sites web » :

Votre autorité de certification est désormais reconnue :

Et la page devrait s’afficher sans problème.

 

Dans IE il faut aller dans Option Internet > Onglet Contenu > Bouton Certificats, puis onglet Autorités principales de confiance > Bouton Importer

 

Sources :

Gestion des certificats :

Configuration NGINX :

Autre :

Sous Windows j’ai pris l’habitude de préfixer certains fichier dossier d’un underscore (_) afin qu’il apparaissent en haut de la liste dans l’explorateur.


Quand je suis passé sous Ubuntu ce mécanisme ne fonctionnait plus. Pire sous Nautilus je ne comprend même pas la logique utilisé pour trier les fichiers.

Enfin j’ai essayé divers autres gestionnaire de fichiers et aucun n’a le même ordre de tri !!!

Je savais que sous Linux on avait le choix des logiciels mais de là à avoir le choix du tri des fichiers…


Un exemple vaut mieux qu’un long discours, je me suis fait un jeu de test sous Ubuntu avec des fichiers ayant des nom court mais commençant par divers caractères : lettres (majuscule, minuscule), chiffres, caractères spéciaux (#_~), espace et points.

 

Windows  (ma référence) :

Les caractères spéciaux (dont l’espace et le point sont au début) suivi des chiffres puis les lettres (la distinction majuscule minuscule a été perdu puisque Windows est insensible à la casse)

A noter les chiffres sont triés numériquement 9 avant 100

 

Nautilus 2.30

L’explorateur de fichier d’Ubuntu (v10.04)

Nautilus Elementary 2.32.2

Version patchée de Nautilus (voirNautilus elementary)

Thunar 1.0.2

Explorateur de fichier de XFCE

 

SunFlower 0.1a

Nouvel explorateur de fichier : sunflower-fm – Twin-panel file manager for Linux – Google Project Hosting

 

Dolphin 1.5

L’explorateur de fichier de KDE

Gnome Terminal

avec la commande ls -hal :

 

On constatera que sur 5 logiciels testés sous Linux on a 5 ordre de tri !!!

 

Pour info voici mes locales (il semblerait que cela influe sur l’ordre de tri)

LANG=fr_FR.utf8
LC_CTYPE="fr_FR.utf8"
LC_NUMERIC="fr_FR.utf8"
LC_TIME="fr_FR.utf8"
LC_COLLATE="fr_FR.utf8"
LC_MONETARY="fr_FR.utf8"
LC_MESSAGES="fr_FR.utf8"
LC_PAPER="fr_FR.utf8"
LC_NAME="fr_FR.utf8"
LC_ADDRESS="fr_FR.utf8"
LC_TELEPHONE="fr_FR.utf8"
LC_MEASUREMENT="fr_FR.utf8"
LC_IDENTIFICATION="fr_FR.utf8"
LC_ALL=



Bref voici où j’en suis, dans la suite les liens que j’ai à étudier attentivement pour comprendre (si c’est possible).

Bug 458707 – Sort order ignores special characters

nautilus sort order – Ubuntu Forums

[all variants] Directory Order in Console – Ubuntu Forums

[all variants] sort order with LC_COLLATE: change to what? – Ubuntu Forums

[SOLVED] Nautilus sorting changed? – Ubuntu Forums

Sort order in nautilus – Ubuntu Forums

http://bugzilla.gnome.org/show_bug.cgi?id=458707

http://www.iac.es/sieinvens/siepedia/pmwiki.php?n=Tutorials.LinuxLocale

http://www.linux.com/archive/articles/53781

http://doc.dev.ubuntu-fr.org/doku.php?id=variables_d_environnement

http://ubuntuforums.org/archive/index.php/t-471154.html


Locale in Linux – SIEpedia

J’ai déjà indiqué comment allumer/démarrer un PC à distance via le wakeonlan et comment éteindre un PC à distance via ssh.

Pour mon usage personnel j’ai intégré ces commandes dans des scripts afin d’y ajouter quelques fonctionnalités.

Le script de démarrage que j’ai nommé wakeonlan.sh (original) prend en paramètre l’adresse MAC et l’adresse IP de la machine à réveiller et permet de faire n essais de réveil espacés de m secondes avant de rendre la main.

#!/bin/bash
# Wake up remote machine
# Usage: $0 mac_adress ip_adress
 
# Check interval
SLEEPTIME=60
# Temp directory where to store a file to indicate that the computer was already turn on (used for shutdow)
TEMP_DIRECTORY=/$HOME/tmp
# Number of retries
RETRY=20
 
die () {
 echo >&2 "$@"
 exit 1
}
 
[ "$#" -eq 2 ] || die "Usage : $0 Mac_adress IP_adress"
HOST_MAC=$1
HOST_IP=$2
 
[ -d $directory ] || mkdir $directory
 
ping -c 2 -w 15 $HOST_IP > /dev/null
RESULT=$?
if [ $RESULT -eq 0 ]; then
 echo "Host $HOST_IP is already up - exiting"
 touch $TEMP_DIRECTORY/$HOST_IP
 exit 0
else  
 echo "Trying to wake up $HOST_IP"
 TEST_NUMBER=0
 while [ $RESULT -ne 0 ]; do
  TEST_NUMBER=`expr $TEST_NUMBER + 1`
  echo "Test #$TEST_NUMBER)"
  wakeonlan $HOST_MAC
  sleep $SLEEPTIME
  ping -c 2 -w 15 $HOST_IP > /dev/null
  RESULT=$?
  if [ $RESULT -ne 0 ] && [ $TEST_NUMBER -eq $RETRY ]; then
   echo "$RETRY retry unsuccessful - leave"
   exit 1
  fi
 done
fi

On pourra remarquer que si la machine est déjà allumé, le script crée un fichier portant son adresse IP, ce fichier est utilisé par le script d’arrêt.

Pour fonctionner ce script à besoin du paquet wakeonlan.

 

Ce dernier nommé shutdown.sh (encore original) n’arrête l’ordinateur que si ce dernier n’était pas déjà allumé avant le wakeonlan (état connu par la présence au non du fichier nommé de l’adresse IP de la machine à réveiller / éteindre)

#!/bin/bash
# Shutdown a remote machine
# Usage: $0 user ip_adress
 
# Temp directory where to check a file that indicate if the computer doesn't need to shutdown (file created by wakeonlan script)
TEMP_DIRECTORY=$HOME/tmp
 
die () {
 echo >&2 "$@"
 exit 1
}
 
[ "$#" -eq 2 ] || die "Usage : $0 user IP_adress"
 USER=$1
 HOST_IP=$2
 
if [ -f $TEMP_DIRECTORY/$HOST_IP ]
then  
 echo "The host $HOST_IP was already turned on so we don't shutdown it"
 rm $TEMP_DIRECTORY/$HOST_IP
 exit 0
fi
 
echo "Shuting down $HOST_IP"
ssh $USER@$HOST_IP "sudo shutdown -h now"

Ce script prend en paramètre l’adresse IP de la machine à éteindre et l’utilisateur qui  lancera la commande shutdown via SSH.

La machine cible doit avoir sudo (toujours le cas sur Ubuntu) et la commande shutdown ne doit pas demander de mot de passe (paramétré dans le sudoer)

 

Image par tom.z sous CC BY-NY-SA

OK à l’ère des télé HD, parler de S-vidéo et de péritel est un peu (beaucoup) has been, mais ce truc m’a servi jusqu’à peu et je ne veux pas perdre l’info.

Comme je l’indiquais dans mon article S-vidéo vers péritel ou S-vidéo vers composite ? le branchement d’une sortie S-vidéo vers un prise péritel via l’adaptateur ci-dessous donne une image crasseuse (couleur terne voir pas du tout de couleur)

Convertisseur S-video - Péritel (SCART)

J’avais à l’époque abandonné utilisant une prise S-vidéo vers RCA, mais il y a peu je n’ai pas eu le choix, il fallait que je branche sur la péritel.

J’ai alors trouvé ce site : Camp0s.com – A nice place where to stay…

Qui indique plusieurs solutions pour résoudre le problème de perte de couleur lors de l’utilisation d’un convertisseur S-vidéo – Péritel.

Personnellement j’ai utilisé la solution 2 sans soudure Camp0s.com – A nice place where to stay… en utilisant des agrafes.


L’image n’est toujours pas top mais au moins j’ai la couleur (et bien saturée en plus)

 

Images : Camp0s.com