Changes

From SME Server
Jump to navigationJump to search
RC-001
<!--__NOTOC__ -->
__TOC__
<br>
= Description générale =
=== Introduction ===
Cette marche à suivre fait suite à celle sur [https://wiki.contribs.org/Odoo-11_%26_HTTPS Odoo-11 & HTTPS] et décrit les étapes pour créer un serveur de test/développement pour vérifier les mises à jour d'Odoo-11 etc....

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Le nouveau serveur peut être virtuel ou physique.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Cette marche à suivre assume que vous avez réalisé l'installation d'un Serveur SME-9.2 virtuel ou physique, branché sur le réseau LOCAL du serveur principal, et que vous y avez installé Odoo-11 en suivant les procédures du document: [https://wiki.contribs.org/Odoo-11 Odoo-11].

=== But final ===

[[Image:odoo-11-DEV-001-ButFinal.png|top|right|650px]]

Pour le présent document, sur le serveur <span style="color:red">dev-11</span><span style="color:blue">.dev.micronator-101.org</span>, nous avons installé ''Fail2ban'' et suivi les mêmes procédures qu'auparavant pour une nouvelle installation d'''Odoo-11''.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;L'installation de ''SME-9.2'' sur le serveur local est exactement telle que décrite dans le cahier 2 du cours ''Micronator-101'': [https://www.micronator.org/affaires/produit/micronator-101-cahier-2installation-dun-serveur-sme/ https://www.micronator.org/affaires/produit/micronator-101-cahier-2installation-dun-serveur-sme/]

Ce nouveau serveur est configuré en mode '''''Serveur uniquement'''''.

L'installation de Fail2ban est décrite dans: https://www.micronator.org/affaires/produit/sme-9-x8-x-fail2ban/.

L'installation du serveur BackupPC provient de: ''Micronator-101, Supplément: SME & BackupPC'': [https://www.micronator.org/affaires/produit/micronator-101-supplementsme-backuppc/ https://www.micronator.org/affaires/produit/micronator-101-supplementsme-backuppc/]


= Préparation du serveur =

=== Ajout d'un nouveau domaine ===

[[Image:odoo-11-DEV-002-NouveauDomaine-A.png|top|right|500px]]
'''''Serveur principal vs serveur local'''''

Si nous voulions accéder au gestionnaire Server Manager du serveur interne, on devrait spécifier <span style="color:blue">micronator-101.org/server-manager</span>; malheureusement c'est le serveur principal qui pourrait répondre...

Les noms des serveurs sont différents ''(odoo-11 pour le serveur principal et dev-11 pour le serveur local)'' mais, leur domaine principal est toujours: <span style="color:blue">micronator-101.org</span>.
<br>
<br>
<br>
<br>
<br>
<br>
<hr style="width:50%; margin: 0 auto;">
<br>

[[Image:odoo-11-DEV-003-NouveauDomaine-B.png|top|right|500px]]
'''''Le serveur physique vs serveur virtuel'''''

Pour éviter toute confusion, lors de la configuration initiale du serveur local, nous choisissons <span style="color:blue"><u>dev</u>.micronator-101.org</span> comme nom de domaine.

[[Image:Icone-SeTirerDembarrasAPT.png|20px]]&nbsp;&nbsp;Si nous redirigeons tous les accès de notre serveur <span style="color:red">dev-11</span><span style="color:blue">.dev.micronator-101.org</span> vers le port 8069 à l'aide d'un gabarit personnalisé, le gestionnaire Server Manager sera lui aussi redirigé vers le port 8069 et il générera alors une erreur de connexion.

C'est pour cette raison que nous allons créer le sous-domaine <span style="color:blue"><u>interne</u>.micronator-101.org</span>. Les accès à ce domaine particulier ne seront pas redirectionnés et nous pourrons alors accéder au gestionnaire Server Manager en spécifiant le nom de ce domaine: <span style="color:blue">https://www.interne.micronator-101.org/server-manager</span>.
<br>
<br>

<hr style="width:50%; margin: 0 auto;">
<br>

=== Création du domaine ===

<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:bottom;font-family: Courier New;text-align: left;"
|&nbsp;

Server Manager > Domaines > Ajouter un domaine.
||<nowiki>-</nowiki> Entrer les informations telles que ci-dessous.

<nowiki>-</nowiki> Ajouter.
||&nbsp;

On s'assure du succès de l'opération.
|- style="vertical-align:top;"
|[[Image:odoo-11-DEV-004-CreationDomaine-A.png|center|top|325px|border]]
||[[Image:odoo-11-DEV-005-CreationDomaine-B.png|center|top|325px|border]]
||[[Image:odoo-11-DEV-006-CreationDomaine-C.png|center|top|325px|border]]
|}
</center>


= Certificat Let's Encrypt =

===Description ===

Un certificat émis par l'autorité de certification Let's Encrypt vous permettra de chiffrer les connexions de votre serveur avec une clé TLS reconnue mondialement. Les usagers pourront utiliser https et, vu que le certificat aura été émis par une autorité de certification reconnue, le cadenas sera <span style="color:Green"><u>vert</u></span>.

Ce chapitre est inspiré de la contribution Letsencrypt produite par: DanB35, Unnilennium, Mdo, Mercyh, RayMitchell et Gieres à l'URL: [https://wiki.contribs.org/Letsencrypt https://wiki.contribs.org/Letsencrypt].

''Référence'': [https://fr.wikipedia.org/wiki/Let's_Encrypt https://fr.wikipedia.org/wiki/Let's_Encrypt].

Let's Encrypt est une autorité de certification ''(CA)'' lancée le 3 décembre 2015 ''(Bêta Version Publique)''. Cette autorité fournit des certificats gratuits X.509 pour le protocole cryptographique TLS au moyen d'un mécanisme automatisé destiné à se passer du processus complexe actuel impliquant la création manuelle, la validation, la signature, l'installation et le renouvellement des certificats pour la sécurisation des sites Internet.

=== Installation ===

On installe la contribution smeserver-letsencrypt.
# yum install -y --enablerepo=smecontribs smeserver-letsencrypt

...
Installation de 2 paquet(s)

Taille totale des téléchargements&nbsp;: 56 k
Taille d'installation&nbsp;: 98 k
...
Installé:
<span style="color:red">smeserver-letsencrypt.noarch</span> 0:0.4-4

Dépendance(s) installée(s)&nbsp;:
<span style="color:red">dehydrated.noarch</span> 0:0.5.0-3.el6.sme

Terminé&nbsp;!

<nowiki>==============================================================</nowiki>
WARNING: You now need to run BOTH of the following commands
to ensure consistent system state:

<span style="color:red">signal-event post-upgrade; signal-event reboot</span>

You should run these commands unless you are certain that
yum made no changes to your system.
<nowiki>==============================================================</nowiki>

=== Signalisation des changements ===

On applique les changements en signalant une mise à jour et un réamorçage.
# signal-event post-upgrade <nowiki>; </nowiki> signal-event reboot


[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Ne pas signaler les changements pourrait empêcher la contribution de fonctionner correctement et vos certificats ne seront pas renouvelés.

=== Mise à jour de la Contrib ===

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Vous pouvez manuellement mettre à jour la contribution i.e. <code>smeserver-letsencrypt</code> et <code>dehydrated</code> en utilisant la commande ci-dessous.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
| <nowiki>#</nowiki> yum update -y --enablerepo=smecontribs smeserver-letsencrypt dehydrated<br>
<br>
<nowiki></nowiki> Modules complémentaires chargés&nbsp;: fastestmirror, smeserver<br>
<nowiki></nowiki> Configuration du processus de mise à jour<br>
<nowiki></nowiki> Loading mirror speeds from cached hostfile<br>
<nowiki></nowiki> <nowiki>* base: centos.ca-west.mirror.fullhost.io</nowiki><br>
<nowiki></nowiki> <nowiki>* smeaddons: mirror.canada.pialasse.com</nowiki><br>
<nowiki></nowiki> <nowiki>* smecontribs: mirror.canada.pialasse.com</nowiki><br>
<nowiki></nowiki> <nowiki>* smeextras: mirror.canada.pialasse.com</nowiki><br>
<nowiki></nowiki> <nowiki>* smeos: mirror.canada.pialasse.com</nowiki><br>
<nowiki></nowiki> <nowiki>* smeupdates: mirror.canada.pialasse.com</nowiki><br>
<nowiki></nowiki> <nowiki>* updates: centos.mirror.vexxhost.com</nowiki><br>
<nowiki></nowiki> <span style="color:red">Aucun paquet marqué pour mise à jour</span>
|}

S'il y avait une mise à jour, cette commande l'installerait automatiquement.

=== Signalisation des changements ===

Si vous avez fait une mise à jour, vous devez signaler les changements.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
| <nowiki>#</nowiki> signal-event post-upgrade <nowiki>; </nowiki> signal-event reboot
|}

=== Choix des domaines et des hôtes ===

On affiche les nom d'hôtes de notre Serveur SME.

# db hosts show | grep .org

<span style="color:DarkGreen">dev-11</span>.dev.micronator-101.org=host
<span style="color:DarkGreen">dev-11</span>.interne.micronator-101.org=host
<span style="color:red">ftp.dev</span>.micronator-101.org=host
<span style="color:blue">ftp.interne</span>.micronator-101.org=host
<span style="color:red">mail.dev</span>.micronator-101.org=host
<span style="color:blue">mail.interne</span>.micronator-101.org=host
<span style="color:red">proxy.dev</span>.micronator-101.org=host
<span style="color:blue">proxy.interne</span>.micronator-101.org=host
<span style="color:red">wpad.dev</span>.micronator-101.org=host
<span style="color:blue">wpad.interne</span>.micronator-101.org=host
<span style="color:red">www.dev</span>.micronator-101.org=host
<span style="color:blue">www.interne</span>.micronator-101.org=host

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Si certains de vos défis sont renvoyés sans erreur, mais que certains échouent, il est possible que vous n'ayez pas d'enregistrements DNS A, MX ou CNAME pour tous les noms d'hôtes que vous avez ajoutés à votre certificat. Lorsque Let's Encrypt lance les défis pour une liste de noms d'hôtes et qu'un de ceux-ci ne répond pas, le défi échoue et le certificat n'est pas généré.

=== CNAME ===

Les noms d'hôtes pour les "sous-domaines" <span style="color:blue">interne.micronator-101.org</span> et <span style="color:blue">dev.micronator-101.org</span> chez le régistraire du domaine <span style="color:blue">micronator-101.org</span>.

<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:bottom;font-family: Courier New;text-align: left;"
|ftp.interne, mail.interne, <span style="color:blue">interne</span>, proxy.interne, wpad.interne et www.interne.
||ftp.dev, mail.dev, <span style="color:blue">dev</span>, proxy.dev, wpad.dev et www.dev.
|- style="vertical-align:top;"
|[[Image:odoo-11-DEV-007-CNAME-A.png|center|top|450px|border]]
|[[Image:odoo-11-DEV-008-CNAME-B.png|center|top|450px|border]]
|}
</center>

<center>[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;On entre les noms des domaines et des hôtes ci-dessus chez le régistraire du nom de notre domaine.</center>


Si on veut obtenir un certificat pour tous ''(all)'' les domaines et tous les hôtes de notre Serveur SME.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
| # config setprop letsencrypt configure all
|}

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;La commande <code>config setprop letsencrypt configure all</code> est susceptible de provoquer une erreur de défi.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Nous voulons tous les noms d'hôtes affichés avec la commande <code>db hosts show | grep .org</code> sauf ceux des noms des serveurs: <span style="color:red">dev-11</span><span style="color:blue">.dev.micronator-101.org</span> et <span style="color:red">dev-11</span><span style="color:blue">.interne.micronator-101.org</span> car, ces derniers ne répondent pas au défis de Let's Encrypt.


Pour utiliser des hôtes ou des domaines activés individuellement, on spécifie le paramètre <code>configure</code> à <code>none</code> et ensuite, on ajoute les domaines et les noms d'hôtes désirés.
# config setprop letsencrypt configure <span style="color:red">none</span>

=== Domaines ===

On inclut le domaine <span style="color:blue"><u>dev</u>.micronator-101.org</span>.
# db domains setprop dev.micronator-101.org letsencryptSSLcert enabled

On inclut le domaine <span style="color:blue"><u>interne</u>.micronator-101.org</span>.
# db domains setprop interne.micronator-101.org letsencryptSSLcert enabled

On vérifie.
# db domains show

<span style="color:blue">dev.micronator-101.org</span>=domain
Content=Primary
Description=Sous domaine
Nameservers=localhost
<span style="color:red">letsencryptSSLcert=enabled</span>
<span style="color:blue">interne.micronator-101.org</span>=domain
Content=Primary
Description=Primary domain
Nameservers=localhost
Removable=no
SystemPrimaryDomain=yes
<span style="color:red">letsencryptSSLcert=enabled</span>

=== Hôtes ===
On inclut tous les hôtes suivants:

'''''ftp'''''
# db hosts setprop <span style="color:red">ftp.dev</span>.micronator-101.org letsencryptSSLcert enabled

# db hosts setprop <span style="color:blue">ftp.interne</span>.micronator-101.org letsencryptSSLcert enabled

'''''mail'''''
# db hosts setprop <span style="color:red">mail.dev</span>.micronator-101.org letsencryptSSLcert enabled

# db hosts setprop <span style="color:blue">mail.interne</span>.micronator-101.org letsencryptSSLcert enabled

'''''proxy'''''
# db hosts setprop <span style="color:red">proxy.dev</span>.micronator-101.org letsencryptSSLcert enabled

# db hosts setprop <span style="color:blue">proxy.interne</span>.micronator-101.org letsencryptSSLcert enabled

'''''wpad'''''
# db hosts setprop <span style="color:red">wpad.dev</span>.micronator-101.org letsencryptSSLcert enabled

# db hosts setprop <span style="color:blue">wpad.interne</span>.micronator-101.org letsencryptSSLcert enabled

'''''www'''''
# db hosts setprop <span style="color:red">www.dev</span>.micronator-101.org letsencryptSSLcert enabled

# db hosts setprop <span style="color:blue">www.interne</span>.micronator-101.org letsencryptSSLcert enabled

=== Autres propriétés de configuration ===

Aucun autre paramètre n'est obligatoire; cependant, il est recommandé de configurer une adresse courriel. Si un problème est rencontré lors du renouvellement de votre certificat, les serveurs de Let's Encrypt vous en informeront.

'''Ajout d'une adresse courriel'''

Le domaine de messagerie spécifié n'a nul besoin de correspondre à l'un des domaines pour lesquels vous demandez un certificat.
# config setprop letsencrypt email admin@micronator.org

'''Longueur de la clé privée'''

Si vous ne voulez pas la valeur par défaut de 4096 bits, vous pouvez définir la longueur de la clé privée de votre certificat,. Ceci ne devrait pas être nécessaire dans la plupart des cas mais, si vous le souhaitiez, il faudrait utiliser la commande ci-dessous pour ce faire.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
| # config setprop letsencrypt keysize <span style="color:red">LONGUEUR-EN-BITS</span>
|}

=== Termes et conditions ===
[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Veuillez d'abord lire les conditions d'utilisation de Let's Encrypt: [https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf]

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;<u>Seulement si vous acceptez les termes et conditions</u> de Let's Encrypt, lancez la commande ci-dessous.
<nowiki># </nowiki>config setprop letsencrypt ACCEPT_TERMS <span style="color:red">yes</span>

=== Activation du mode TEST ===
L'étape suivante consiste à activer le mode TEST. Ce mode va obtenir des certificats du serveur de TEST de Let's Encrypt. Les limites 5/7 ''(5 certificats par 7 jours)'' ne s'appliqueront pas. Toutes erreurs ou autres problèmes rencontrés ne vous empêcheront pas, plus tard, d'obtenir votre certificat de Production.

On active le mode TEST.
<nowiki># </nowiki>config setprop letsencrypt status <span style="color:red">test</span>

On signale les changements. ''(Peut prendre plusieurs secondes.)''
<nowiki>#</nowiki> signal-event console-save

=== Vérification de la configuration ===
On vérifie si on est bien en mode TEST.
# cat /etc/dehydrated/config | grep CA

CA="https://<span style="color:red">acme-staging</span>.api.letsencrypt.org/directory"

On vérifie l'adresse courriel.
# cat /etc/dehydrated/config | grep CONTACT

CONTACT_EMAIL=admin@micronator.org

On vérifie la configuration complète.
# cat /etc/dehydrated/config

<span style="color:red">#!/bin/bash</span>
WELLKNOWN="/home/e-smith/files/ibays/Primary/html/.well-known/acme-challenge"
CA="https://acme-staging.api.letsencrypt.org/directory"
BASEDIR="/etc/dehydrated"
CONTACT_EMAIL=admin@micronator.org
HOOK="/usr/bin/hook-script.sh"

PARAM_ACCEPT_TERMS="yes"

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Il n'y a pas de ligne vide avant <span style="color:red">#!/bin/bash</span>. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.


On vérifie les domaines et les hôtes.
# cat /etc/dehydrated/domains.txt

<span style="color:red">dev.micronator-101.org</span> ftp.dev.micronator-101.org mail.dev.micronator-101.org proxy.dev.micronator-101.org wpad.dev.micronator-101.org www.dev.micronator-101.org interne.micronator-101.org ftp.interne.micronator-101.org mail.interne.micronator-101.org proxy.interne.micronator-101.org wpad.interne.micronator-101.org www.interne.micronator-101.org

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Il n'y a pas de ligne vide avant <span style="color:red">dev.micronator-101.org</span>... Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.

[[Image:Icone-SeTirerDembarrasAPT.png|20px]]&nbsp;&nbsp;Tout le contenu du fichier <code>domains.txt</code> doit être entièrement sur une seule ligne sinon, vous aurez autant de certificats que de lignes et vous atteindrez la limite 5/7 de Let's Encrypt.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Le certificat sera émis au nom du premier domaine de la ligne; ici ce sera: <span style="color:red">dev.micronator-101.org</span>.

=== Obtention d'un certificat pour un serveur local ===

''Référence'': [https://wiki.contribs.org/Letsencrypt#Obtaining_certificates_for_a_private_SME_Server https://wiki.contribs.org/Letsencrypt#Obtaining_certificates_for_a_private_SME_Server].

Votre Serveur SME doit normalement être accessible depuis l'Internet afin que les serveurs Let's Encrypt puissent valider votre contrôle sur celui-ci. Toutefois, si votre Serveur SME n'est pas accessible depuis l'Internet, la contribution <code>smeserver-letsencrypt</code> fournit une méthode permettant de valider votre contrôle sur ce domaine intranet. Pour utiliser cette méthode, les conditions suivantes doivent être remplies:

* Le domaine de votre hôte interne ''(<span style="color:red">dev.micronator-101.org</span>)'', lorsque résolu par le DNS de l'Internet, pointe vers une adresse IP publique valide.
* Le domaine vers lequel ''<span style="color:red">dev.micronator-101.org</span>'' pointe depuis l'Internet, i.e. vers <span style="color:blue">micronator-101.org</span>, dispose d'un serveur Web actif sur le port 80.
* L'utilisateur root de ''<span style="color:red">dev.micronator-101.org</span>'' peut se connecter au serveur <span style="color:blue">micronator-101.org</span> via SSH sans devoir utiliser un mot de passe ''(c'est-à-dire que vous avez configuré l'authentification par clé publique SSH)''.

Cette méthode utilise un script simple, inclus dans la contribution <code>smeserver-letsencrypt</code> mais, il requiert obligatoirement la définition de quatre entrées supplémentaires dans la base de données letsencrypt:

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|<nowiki> </nowiki>config setprop letsencrypt <span style="color:red">hookScript</span> enabled

<nowiki> </nowiki>config setprop letsencrypt <span style="color:red">host</span> <span style="color:blue">mon-domaine-externe.tld</span>

<nowiki> </nowiki>config setprop letsencrypt <span style="color:red">user</span> root

<nowiki> </nowiki>config setprop letsencrypt <span style="color:red">path</span> <span style="color:blue">/home/e-smith/files/ibays/Primary/html/.well-known/acme-challenge</span>
|}

Les parties en <span style="color:blue">bleu</span> ci-dessus doivent être modifiées pour correspondre à votre situation. La variable <code>path</code> doit être l'emplacement du répertoire dans lequel <span style="color:blue">micronator-101.org</span> sauvegarde les défis: le répertoire <code>/home/e-smith/files/ibays/Primary/html/.well-known/acme-challenge</code>. Lorsque le script <code>dehydrated</code> crée les fichiers de défis, il les transfère via SCP vers <code>user@host:path</code> puis, demande au serveur Let's Encrypt de les valider. Une fois la validation effectuée, le script <code>dehydrated</code> supprime le contenu du répertoire des défis: <code>user@host:path</code>.


Après avoir défini ces entrées, il faut en signaler les changements.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|<nowiki>#</nowiki> signal-event console-save
|}


=== Résolution Internet pour le domaine du serveur local ===

Nous avons ajouté les CNAME pour le sous domaine <span style="color:blue">dev.micronator-101.org</span> chez le régistraire du domaine <span style="color:blue">micronator-101.org</span>.

[[Image:odoo-11-DEV-010-ResolutionDNS.png|top|right|700px]]
[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;On ne peut vérifier les CNAME du serveur à sa console car il répondra lui-même, il faut demander à un autre serveur de les vérifier.

On va donc envoyer une commande au serveur principal ''(192.168.1.11)'' pour qu'il lance trois ping vers le serveur <span style="color:blue">dev.micronator-101.org</span>. Le premier ping du serveur principal va débuter en demandant au serveur DNS de son FAI ''(Fournisseur d'Accès Internet)'' de résoudre le nom <span style="color:blue">dev.micronator-101.org</span> puis, il va compléter les '''ping'''s vers l'adresse IP retournée par le DNS du FAI.


# ssh -p 2222 root@192.168.1.11 "ping -c3 dev.micronator-101.org"


{| style="border-spacing:0;"
| style="background: {{{color|#FFEED9}}};border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0in;font-family: Courier New;"|
&nbsp;&nbsp;01&nbsp;&nbsp;

&nbsp;&nbsp;02&nbsp;&nbsp;

&nbsp;&nbsp;03&nbsp;&nbsp;

&nbsp;&nbsp;04&nbsp;&nbsp;

&nbsp;&nbsp;05&nbsp;&nbsp;

&nbsp;&nbsp;06&nbsp;&nbsp;

&nbsp;&nbsp;07&nbsp;&nbsp;

&nbsp;&nbsp;08&nbsp;&nbsp;

&nbsp;&nbsp;09&nbsp;&nbsp;

&nbsp;&nbsp;10&nbsp;&nbsp;

&nbsp;&nbsp;11&nbsp;&nbsp;

&nbsp;&nbsp;12&nbsp;&nbsp;

&nbsp;&nbsp;13&nbsp;&nbsp;

&nbsp;&nbsp;14&nbsp;&nbsp;

&nbsp;&nbsp;15&nbsp;&nbsp;
| style="background: {{{color|#FFEED9}}};border:0.05pt solid #000000;padding:0in;font-family: Courier New;"|&nbsp;&nbsp;ssh -p 2222 root@192.168.1.11 "ping -c3 dev.micronator-101.org"

&nbsp;&nbsp;

&nbsp;&nbsp;The authenticity of host '192.168.1.11 (192.168.1.11)' can't be established.

&nbsp;&nbsp;RSA key fingerprint is be:a1:2f:cf:c1:5f:05:53:1a:12:c8:75:c7:a5:6c:6f.

&nbsp;&nbsp;Are you sure you want to continue connecting (yes/no)? <span style="color:red">yes</span>

&nbsp;&nbsp;Warning: Permanently added '192.168.1.11' (RSA) to the list of known hosts.

&nbsp;&nbsp;root@192.168.1.11's password: <span style="color:red">mot-de-passe-du-serveur-principal</span>

&nbsp;&nbsp;PING <span style="color:blue">micronator-101.org (206.248.138.152)</span> 56(84) bytes of data.

&nbsp;&nbsp;64 bytes from 206-248-138-152.dsl.teksavvy.com (<span style="color:blue">206.248.138.152</span>): icmp_seq=1 ttl=64 time=0.027 ms&nbsp;&nbsp;

&nbsp;&nbsp;64 bytes from 206-248-138-152.dsl.teksavvy.com (<span style="color:blue">206.248.138.152</span>): icmp_seq=2 ttl=64 time=0.038 ms&nbsp;&nbsp;

&nbsp;&nbsp;64 bytes from 206-248-138-152.dsl.teksavvy.com (<span style="color:blue">206.248.138.152</span>): icmp_seq=3 ttl=64 time=0.047 ms&nbsp;&nbsp;

&nbsp;&nbsp;

&nbsp;&nbsp;--- micronator-101.org ping statistics ---

&nbsp;&nbsp;3 packets transmitted, 3 received, 0% packet loss, time 2000ms

&nbsp;&nbsp;rtt min/avg/max/mdev = 0.027/0.037/0.047/0.009 ms

|}


* <nowiki>#01:</nowiki> La commande qui demande de se loguer en SSH ''(au port 2222)'' avec l'usager root à l'adresse 192.168.1.11 et d'exécuter la commande entre les guillemets.
* <nowiki>#02: Ligne vide pour faciliter la copie de la commande avec la souris.</nowiki>
* <nowiki>#05: On confirme que root veut se loguer,</nowiki> <span style="color:red">yes</span>.
* <nowiki>#07: Le mot de passe de root sur le serveur 192.168.1.11.</nowiki>
* <nowiki>#08: Le DNS a retourné l'adresse</nowiki> IP <span style="color:blue">(206.248.138.152)</span> pour le domaine <span style="color:blue">micronator-101.org</span>. Cette adresse est celle pointée par le CNAME <span style="color:blue">dev</span> chez notre régistraire; c'est celle du serveur principal car, l'enregistrement @ chez le régistraire pointe vers cette adresse.
* <nowiki>#09-11: L'usager root lance les trois ping,</nowiki>
* <nowiki>#13-15: Statistiques des ping.</nowiki>


=== Authentification par clé publique SSH ===
Il faut générer une clé SSH dont la partie publique devra être envoyée au serveur passerelle ''(serveur principal - 192.168.1.11)'' afin que l'usager root puisse s'y loguer sans devoir utiliser un mot de passe.

'''''Génération de la clé SSH'''''

Il faut être l'usager root pour générer la clé SSH de celui-ci.
# whoami

<span style="color:red">root</span>

On génère une clé SSH de type RSA de 2048 bits.

* On accepte le nom du fichier par défaut en tapant la touche <span style="color:red">[Entrée]</span>.
* On n'utilise pas de phrase de passe<ref name="ftn1">'''phrase de passe''': Groupe de mots et de caractères alphanumériques ou spéciaux, faisant office de mot de passe, connu de l'utilisateur seulement, qui sert à protéger sa clé privée et à l'identifier lors d'une connexion ou d'un transfert de fichier, tout en lui assurant une plus grande sécurité.<br/> '''Notes''': Les phrases de passe ne diffèrent des mots de passe que par la longueur. Les mots de passe sont généralement très courts - de 6 à 10 caractères -, alors que les phrases de passe peuvent comporter jusqu'à 100 caractères ''(et même plus)''. Leur longueur et la combinaison des mots et des caractères alphanumériques contribuent à les rendre plus difficiles à deviner que les mots de passe, et donc plus sûres.<br/> Une phrase de passe doit être: connue que de l'utilisateur, suffisamment longue pour être sûre, difficile à deviner, facile à retenir et à saisir sans erreur. Certains considèrent qu'elle devrait atteindre 80 à 100 caractères pour être vraiment efficace.<br/> '''Référence''': [http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8361195 http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8361195].</ref> en tapant la touche <span style="color:red">[Entrée]</span>.
* On confirme en tapant encore la touche <span style="color:red">[Entrée]</span>.

# ssh-keygen -t rsa -b 2048

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <span style="color:red">[Entrée]</span>
Enter passphrase (empty for no passphrase): <span style="color:red">[Entrée]</span>
Enter same passphrase again: <span style="color:red">[Entrée]</span>
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
4b:d5:f0:31:8b:56:c0:68:f3:6c:89:a3:be:ea:c7:7e root@dev-11
The key's randomart image is:
+--[ RSA 2048]----+
| ..... |
| ...o. |
| o.... . |
|ooC . |
|++++ S |
|+*oo |
|.D= |
|. . |
| |
+-----------------+

On vérifie.
# ls -ls .ssh/

total 12
4 -rw------- 1 root root 1675 12 sept. 21:00 <span style="color:red">id_rsa</span>
4 -rw-r--r-- 1 root root 393 12 sept. 21:00 <span style="color:red">id_rsa.pub</span>
4 -rw-r--r-- 1 root root 221 12 sept. 19:08 known_hosts

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;La clé <span style="color:red">id_rsa</span> est la clé privée qui doit toujours être cachée et n'être divulguée à absolument personne.

La clé <span style="color:red">id_rsa.pub</span> est la clé publique et peut être partagée avec n'importe qui. Elle sert à chiffrer un message qui vous est destiné et que seule votre clé privée peut déchiffrer.


'''''Différence entre les jeux de clés SSH de l'utilisateur root et celle du Serveur SME'''''

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Ce jeu de clés SSH, <span style="color:red">id_rsa / id_rsa.pub</span>, servira uniquement à l'utilisateur root pour ses communications SSH entre le serveur intranet et le serveur principal.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Ce jeu de clés SSH est différent du jeu standard d'un Serveur SME qui se trouve dans le répertoire <code>/etc/ssh/</code> et qui comprend: <span style="color:Blue">ssh_host_rsa_key / ssh_host_rsa_key.pub</span>.
# ls -als /etc/ssh/ssh_host_rsa*

4 -rw------- 1 root root 1675 16 juil. 10:04 /etc/ssh/<span style="color:Blue">ssh_host_rsa_key</span>
4 -rw-r--r-- 1 root root 382 16 juil. 10:04 /etc/ssh/<span style="color:Blue">ssh_host_rsa_key.pub</span>


'''''Port SSHD'''''

[[Image:odoo-11-DEV-011-PortSSH.png|top|right|500px|border]]
Le port standard utilisé par le démon SSHD est '''22'''. Pour déjouer un peu plus les pirates malveillants, lors de l'installation de nos Serveurs SME, nous configurons toujours le port '''2222''' comme port par défaut pour SSHD.

La contribution <code>smeserver-letsencrypt</code> utilise le port standard 22 pour les communications ''(ssh et scp)'' entre les serveur local et le serveur principal.

Nous allons forcer ces communications, pour l'utilisateur root, à utiliser le port 2222 en créant un fichier de configuration pour le démon SSHD. Ce fichier, <code>config</code>, doit être créé dans le répertoire .ssh de l'usager root.

Les paramètres dans le fichier de configuration SSH de root <u>auront préséance sur tous les autres paramètres</u> spécifiant le port SSH pour cet utilisateur seulement.


'''''Spécification du port SSH pour l'utilisateur root'''''

Il existe plusieurs façons de spécifier ce port mais, la plus efficace est celle ci-dessous.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|<nowiki> </nowiki>Host *
<nowiki>&nbsp; &nbsp;&nbsp;&nbsp;</nowiki>Port 2222
|}

Pour plus d'information, voir: [https://www.digitalocean.com/community/tutorials/how-to-configure-custom-connection-options-for-your-ssh-client https://www.digitalocean.com/community/tutorials/how-to-configure-custom-connection-options-for-your-ssh-client].

Nous aurions pu utiliser l'expression suivante pour spécifier uniquement le nom d'un hôte particulier.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|<nowiki> </nowiki>Host 192.168.1.11
<nowiki>&nbsp; &nbsp;&nbsp;&nbsp;</nowiki>Port 2222
|}

Ou celle-ci pour spécifier tous les serveur sur le réseau <code>192.168.1.0</code>.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|<nowiki> </nowiki>Host 192.168.1.0/24
<nowiki>&nbsp; &nbsp;&nbsp;&nbsp;</nowiki>Port 2222
|}

On peut aussi spécifier des hôtes utilisant des ports différents.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|<nowiki> </nowiki>Host 192.168.1.11

<nowiki>&nbsp; &nbsp;&nbsp;&nbsp;</nowiki>Port 2222

<nowiki> </nowiki>Host 192.168.1.1

<nowiki>&nbsp; &nbsp;&nbsp;&nbsp;</nowiki>Port 3333
|}

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Il faut que le mot "'''Port'''" soit à au moins un espace de la marge de gauche.


On spécifie le port à utiliser pour communiquer avec notre serveur passerelle à l'adresse 192.168.1.11.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Prendre tout le contenu de l'encadré pour la commande.
cat > /root/.ssh/config <<'EOT'

Host 192.168.1.11
Port 2222

EOT


On vérifie le contenu.
# cat /root/.ssh/config

<span style="color:red">Host 192.168.1.11</span>
Port 2222

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Il peut y avoir une ligne vide avant la ligne <span style="color:red">Host 192.168.1.11</span>.


'''''Téléversement de la clé SSH publique de root'''''

Sommes-nous toujours l'usager root?
# whoami

<span style="color:red">root</span>

On téléverse la clé publique de root sur le serveur passerelle ''(192.168.1.11)'' afin qu'il puisse entrer en communication SSH avec ce serveur sans devoir utiliser un mot de passe.
# cat .ssh/id_rsa.pub | ssh root@192.168.1.11 "cat >> /root/.ssh/authorized_keys2"

root@192.168.1.1's password: <span style="color:red">mot-de-passe-de-root-du_serveur-passerelle</span>

* <code>cat .ssh/id_rsa.pub</code> indique d'afficher la clé publique <code>id_rsa.pub</code> de l'usager root du serveur local.
* Le caractère de pipe "|" indique de passer le résultat de la commande précédente ''(cat)'' à la commande suivante ''(ssh)''. Le paramètre <code>-p 2222</code> n'est pas utilisé car, il l'est dans le fichier <code>config</code>. Le paramètre <code>root@192.168.1.11</code> indique de se connecter en tant que root à l'adresse <code>192.168.1.11</code>.
* La commande qui est entre guillemets "...", indique au serveur de destination i.e. odoo-11 ''(le serveur principal - passerelle)'' d'exécuter la commande qui se trouve entre ces guillemets. Donc, le serveur odoo-11 va afficher avec <code>cat</code> ce qu'il reçoit et va l'ajouter ''(>>)'' à son fichier: <code>/root/.ssh/authorized_keys2</code>.


'''''Vérification de la connexion'''''

On vérifie la connexion SSH sans spécifier le port et sans utiliser un mot de passe. ''(Notez le changement dans les invites des commandes.)''
[<span style="color:blue">root@dev-11</span> ~]# ssh root@192.168.1.11

Last login: Wed Sep 12 13:14:44 2018 from 192.168.1.81
<nowiki>************ Welcome to SME Server 9.2 *************</nowiki>
...
<nowiki>****************************************************</nowiki>
[<span style="color:red">root@odoo-11</span> ~]#

Nous sommes à la console du serveur passerelle. La connexion sans mot de passe fonctionne.

On se désengage de la connexion sans mot de passe.

[<span style="color:red">root@odoo-11</span> ~]# exit

logout
Connection to 192.168.1.11 closed.
[<span style="color:blue">root@dev-11</span> ~]#

Nous sommes de retour à la console du serveur local.


=== Entrées supplémentaires dans la base de données letsencrypt ===

'''''hookScript'''''

Activation du point d'accès qui s'occupe de récupérer le certificat Let's Encrypt pour un serveur interne.
# config setprop letsencrypt <span style="color:red">hookScript</span> enabled

'''''host'''''

On indique l'adresse IP de la passerelle.
# config setprop letsencrypt <span style="color:red">host</span> 192.168.1.11

'''''user'''''

L'usager qui récupérera le certificat.
# config setprop letsencrypt <span style="color:red">user</span> root

'''''path'''''

Le chemin du répertoire de stockage des défis sur le serveur passerelle.
# config setprop letsencrypt <span style="color:red">path</span> /home/e-smith/files/ibays/Primary/html/.well-known/acme-challenge

On signale les changements ''(peut prendre plusieurs secondes)''.
# signal-event console-save

On vérifie les quatre entrées ajoutées dans la BD letsencrypt.
# config show letsencrypt

letsencrypt=service
ACCEPT_TERMS=yes
configure=none
email=admin@micronator.org
<span style="color:red">hookScript</span>=enabled
<span style="color:red">host</span>=192.168.1.11
<span style="color:red">path</span>=/home/e-smith/files/ibays/Primary/html/.well-known/acme-challenge
status=test
<span style="color:red">user</span>=root


'''''Fichier hosts'''''

''Référence'': [https://fr.wikipedia.org/wiki/Hosts https://fr.wikipedia.org/wiki/Hosts].

Le fichier hosts est un fichier utilisé par le système d'exploitation d'un ordinateur lors de l'accès à un réseau, comme Internet par exemple. Son rôle est d'associer des noms d'hôtes à des adresses IP. Lors de l'accès à une ressource réseau par nom de domaine, <u>ce fichier est consulté avant l'accès au serveur DNS</u> et permet au système de connaître l'adresse IP associée au nom de domaine sans avoir recours à une requête DNS.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Si nous n'avons pas de serveur DNS sur le réseau LOCAL, on peut faire des entrées dans le fichier hosts de la station de travail et y indiquer les adresses IP de notre Serveur SME local.

Sur une station Windows, le fichier hosts se trouve dans le répertoire: '''C:\Windows\System32\drivers\etc\.''' Pour une station Linux, il réside dans le répertoire <code>/etc</code>.

<center>
{| style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:middle;text-align:right;"
|Clac ''(clic droit)'' sur le fichier > Propriétés.<br>Le fichier est en Lecture seule, on décoche ce paramètre > OK.
||[[Image:odoo-11-DEV-012-FichierHosts-A.png|center|top|500px|border]]
|}
</center>


On édite le fichier hosts et on entre les noms et l'adresse IP de notre Serveur SME intranet après les lignes localhost.

...
<nowiki># localhost name resolution is handled within DNS itself.</nowiki>
<nowiki>#</nowiki> 127.0.0.1 localhost
<nowiki>#</nowiki> ::1 localhost

<span style="color:blue"># Serveur SME sur le réseau local

192.168.1.101 dev.micronator-101.org
192.168.1.101 www.dev.micronator-101.org

192.168.1.101 interne.micronator-101.org
192.168.1.101 www.interne.micronator-101.org
...</span>

<center>
{| style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:middle;text-align:right;"
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On remet le fichier en Lecture seule.
||[[Image:odoo-11-DEV-013-FichierHosts-B.png|center|top|500px|border]]
|}
</center>


* ''Vidange du cache DNS''

Sur la station de travail, on ouvre un écran de commande et on vide le cache DNS de la station.

> '''ipconfig /flushdns'''

Configuration IP de Windows

Cache de résolution DNS vidé.


* ''Vidange de l'historique''

[[Image:Icone-SeTirerDembarrasAPT.png|20px]]&nbsp;&nbsp;On vidange l'historique de notre navigateur.
<center>
{| class="wikitable" style="width: 55%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:odoo-11-DEV-014-Historique-A.png|center|top|500px|border]]
||[[Image:odoo-11-DEV-015-Historique-B.png|center|top|165px|border]]
|}
</center>

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Il faut autoriser java script et les témoins dans notre navigateur Internet.


= Lancement du script dehydrated =

Vous pouvez maintenant exécuter le script <code>dehydrated</code> pour la première fois et vous assurer qu'il lui est possible de: se connecter aux serveurs de Let's Encrypt, valider les noms d'hôtes que vous demandez, relever les défis et requérir le certificat.
# dehydrated -c

<span style="color:blue"># INFO: Using main config file /etc/dehydrated/config</span>
Processing dev.micronator-101.org with alternative names: ftp.dev.micronator-101.org mail.dev.micronator-101.org proxy.dev.micronator-101.org wpad.dev.micronator-101.org www.dev.micronator-101.org interne.micronator-101.org ftp.interne.micronator-101.org mail.interne.micronator-101.org proxy.interne.micronator-101.org wpad.interne.micronator-101.org www.interne.micronator-101.org
<span style="color:Blue">+ Signing domains...
+ Generating private key...
+ Generating signing request...</span>
+ Requesting challenge for dev.micronator-101.org...
...
MgVbNZ7kU3Rzmh5SZb0cNo3Womr6_ywMqkzYph8PLcU 100% 87 0.1KB/s 00:00
+ <span style="color:red">Responding to challenge</span> for dev.micronator-101.org...
+ <span style="color:red">Challenge is valid!</span>
...
+ <span style="color:blue">Requesting certificate...</span>
+ <span style="color:blue">Checking certificate...</span>
+ Done!
+ <span style="color:blue">Creating fullchain.pem...</span>
+ Walking chain...
<span style="color:red">Set up modSSL</span> db keys
<span style="color:red">Signal events</span>
All complete
+ <span style="color:red">Done!</span>

[[Image:Icone-SeTirerDembarrasAPT.png|20px]]&nbsp;&nbsp;Si vous recevez l'erreur ci-dessous, simplement relancer la demande.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
| <nowiki>#</nowiki> INFO: Using main config file /etc/dehydrated/config

<nowiki> ERROR: Problem connecting to server (get for https://acme-staging.api.letsencrypt.org/directory; curl returned with 6</nowiki>
|}


=== Vérification du certificat ===

Si la commande fonctionne sans erreur, essayez de vous connecter à la page du gestionnaire Server Manager https://interne.micronator-101.org/server-manager. Vous devriez voir une erreur indiquant que le certificat de sécurité n'a pas été émis par une autorité de certification approuvée. C'est parfaitement normal. Cependant, il devrait incorporer tous les noms d'hôtes que vous avez inclus et être valide pour les quatre-vingt-dix prochains jours.

[[Image:odoo-11-DEV-016-Verif-A.png|top|left|400px|border]]
Avec Firefox, on se connecte au gestionnaire Server Manager sur le serveur local.


<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:bottom;font-family: Courier New;text-align: left;"
|Après avoir accepté le certificat, on clique le cadenas puis, >.
||Plus d'informations.
||Afficher le certificat.
|- style="vertical-align:top;"
|[[Image:odoo-11-DEV-017-Verif-B.png|center|top|325px|border]]
||[[Image:odoo-11-DEV-018-Verif-C.png|center|top|325px|border]]
||[[Image:odoo-11-DEV-019-Verif-D.png|center|top|325px|border]]
|}
</center>


<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:bottom;font-family: Courier New;text-align: left;"
|<nowiki>-</nowiki> Certificat de test car, émis par Fake LE Intermediate XI.

<nowiki>-</nowiki> Détails.
||<nowiki>-</nowiki> Nom alternatif du sujet du cer­tificat.

<nowiki>-</nowiki> Nos noms d'hôtes sont présents.
||&nbsp;

Valide pour 90 jours.
|- style="vertical-align:top;"
|[[Image:odoo-11-DEV-020-Verif-E.png|center|top|325px|border]]
||[[Image:odoo-11-DEV-021-Verif-F.png|center|top|325px|border]]
||[[Image:odoo-11-DEV-022-Verif-G.png|center|top|325px|border]]
|}
</center>

=== Mode Production ===

Tout fonctionne correctement, on peut passer en mode Production et demander un certificat officiel.

Activation du mode Production.
# config setprop letsencrypt status enabled

On signale les changements qui peuvent prendre plusieurs secondes.
# signal-event console-save

On vérifie.
# cat /etc/dehydrated/config

<nowiki>#!/bin/bash</nowiki>
WELLKNOWN="/home/e-smith/files/ibays/Primary/html/.well-known/acme-challenge"
CA="https://<span style="color:red">acme-v01</span>.api.letsencrypt.org/directory"
BASEDIR="/etc/dehydrated"
CONTACT_EMAIL=admin@micronator.org
HOOK="/usr/bin/hook-script.sh"

PARAM_ACCEPT_TERMS="yes"

=== Demande d'un certificat officiel ===

On fait la demande d'un certificat officiel. Le paramètre <span style="color:red"><code>-x</code></span> est nécessaire pour forcer un nouveau certificat
# dehydrated -c <span style="color:red">-x</span>

<nowiki>#</nowiki> <span style="color:blue">INFO: Using main config file /etc/dehydrated/config</span>
+ <span style="color:blue">Generating account key...</span>
+ <span style="color:blue">Registering account key with ACME server...</span>
Processing dev.micronator-101.org with alternative names: ftp.dev.micronator-101.org mail.dev.micronator-101.org proxy.dev.micronator-101.org wpad.dev.micronator-101.org www.dev.micronator-101.org interne.micronator-101.org ftp.interne.micronator-101.org mail.interne.micronator-101.org proxy.interne.micronator-101.org wpad.interne.micronator-101.org www.interne.micronator-101.org
+ Checking domain name(s) of existing cert... unchanged.
+ Checking expire date of existing cert...
+ Valid till Dec 13 18:22:51 2018 GMT <span style="color:red">(Longer than 30 days). Ignoring because renew was forced!</span>
+ Signing domains...
+ Generating private key...
+ Generating signing request...
+ Requesting challenge for dev.micronator-101.org...
...
hI3Yhd8hdrdAGdP4F42TKbVr_lpE1Yig0xvGhxqT86s 100% 87 0.1KB/s 00:00
+ Responding to challenge for dev.micronator-101.org...
+ Challenge is valid!
...
+ <span style="color:red">Requesting certificate...</span>
+ Checking certificate...
+ Done!
+ <span style="color:red">Creating fullchain.pem...</span>
+ Walking chain...
<span style="color:red">Set up modSSL</span> db keys
<span style="color:red">Signal events</span>
All complete
+ <span style="color:blue">Done!</span>

Si cette demande a réussie, félicitations! Vous avez obtenu un certificat TLS officiel et valide qui se renouvellera automatiquement à perpétuité.

[[Image:Icone-SeTirerDembarrasAPT.png|20px]]&nbsp;&nbsp;Si vous recevez l'erreur ci-dessous, simplement relancer la demande.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
| <nowiki>#</nowiki> INFO: Using main config file /etc/dehydrated/config

<nowiki> ERROR: Problem connecting to server (get for https://acme-staging.api.letsencrypt.org/directory; curl returned with 6</nowiki>
|}

=== Vérification ===

On se rend à: https://interne.micronator-101.org/.

<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:bottom;font-family: Courier New;text-align: left;"
|Le cadenas est <span style="color:DarkGreen">'''vert'''</span>.
||Émis par: Let's Encrypt Authority X3.
||Tous les domaines et noms d'hôtes sont présents.
|- style="vertical-align:top;"
|[[Image:odoo-11-DEV-023-Verif2-A.png|center|top|325px|border]]
||[[Image:odoo-11-DEV-024-Verif2-B.png|center|top|325px|border]]
||[[Image:Odoo-11-DEV-025-Verif2-C.png|center|top|325px|border]]
|}
</center>


= Connexion sécuritaire SSL/TLS (https) =

Lorsqu'on se logue à Odoo, sans utiliser une connexion sécuritaire TLS<ref name="ftn2">'''Transport Layer Security''' ''(TLS)'' ou Sécurité de la couche de transport et son prédécesseur, Secure Sockets Layer ''(SSL)'', sont des protocoles de sécurisation des échanges sur Internet. Le protocole SSL a été développé à l'origine par Netscape. L'IETF en a poursuivi le développement en le rebaptisant Transport Layer Security ''(TLS)''. On parle parfois de SSL/TLS pour désigner indifféremment SSL ou TLS.

'''Référence''': [https://fr.wikipedia.org/wiki/Transport_Layer_Security https://fr.wikipedia.org/wiki/Transport_Layer_Security].</ref>, notre mot de passe est transmis en clair sur le réseau.

Pour remédier à la situation:

[[Image:odoo-11-DEV-026-HTTPS.png|top|right|300px]]
* Nous avons déjà ajouté le sous-domaine <span style="color:Blue">'''<u>interne</u>'''</span><span style="color:blue">.micronator-101.org</span> que nous utiliserons <u>pour accéder au gestionnaire Server Manager</u>.
* À l'aide d'un gabarit personnalisé, nous allons rediriger les accès à <span style="color:Blue">'''<u>dev</u>'''</span><span style="color:blue">.micronator-101.org</span> et les contraindre à utiliser <u>une connexion sécurisée TLS vers le port 8069</u>.


<hr style="width:50%; margin: 0 auto;">


=== Redirection ===

'''''Gabarit personnalisé'''''

Vu qu'on ne doit pas modifier directement un fichier de configuration, nous allons créer un gabarit personnalisé pour accomplir les modifications nécessaires. Ainsi, lorsqu'on mettra le Serveur SME à jour, les modifications seront conservées.


'''''Copie du fragment à modifier'''''

Le fragment de la configuration d'Apache à modifier est le fichier: <code>25SSLDirectives</code>. Ce fichier se trouve dans le répertoire: <code>/etc/e-smith/templates/etc/httpd/conf/httpd.conf/VirtualHosts</code>.

Nous devons créer un répertoire qui contiendra la copie de ce fragment qu'on pourra alors modifier.
# mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts

On copie le fragment original vers le gabarit personnalisé. ''(La commande est sur deux lignes.)''
# cp /etc/e-smith/<span style="color:red">templates</span>/etc/httpd/conf/httpd.conf/VirtualHosts/25SSLDirectives <span style="color:red">'''\'''</span>
/etc/e-smith/<span style="color:red">templates-custom</span>/etc/httpd/conf/httpd.conf/VirtualHosts

On vérifie.
# ls -ls /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts

total 4
4 -rw-r--r-- 1 root root 196 14 sept. 20:41 <span style="color:red">25SSLDirectives</span>


'''''Modification du fichier du gabarit personnalisé'''''

Fichier original.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|<nowiki> </nowiki><span style="color:red"><nowiki>{</nowiki></span>
<nowiki></nowiki>&nbsp;&nbsp;&nbsp;&nbsp;return " <nowiki># skipping SSL directives\n" unless $port eq "443";</nowiki><br>
<nowiki></nowiki>&nbsp;&nbsp;&nbsp;&nbsp;<br>
<nowiki></nowiki>&nbsp;&nbsp;&nbsp;&nbsp;return "" unless $modSSL{'status'} eq 'enabled';<br>
<nowiki></nowiki>&nbsp;&nbsp;&nbsp;&nbsp;<br>
<nowiki></nowiki>&nbsp;&nbsp;&nbsp;&nbsp;$OUT = <<SSL_END;<br>
<nowiki></nowiki>&nbsp;&nbsp;&nbsp;&nbsp;<nowiki># SSL Directives</nowiki><br>
<nowiki></nowiki>&nbsp;&nbsp;&nbsp;&nbsp;SSLEngine on<br>
<nowiki> </nowiki><span style="color:Green">'''SSL_END'''</span><br>
<nowiki> </nowiki><span style="color:red"><nowiki>}</nowiki></span>
|}

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;On peut modifier le contenu du fichier du gabarit personnalisé avec <code>vi</code> / <code>Notepad++</code> / ... ou exécuter la commande du prochain paragraphe.

<span style="color:red"><nowiki>{</nowiki></span>
<span style="color:blue">if ( $port eq "80" && $virtualHost eq "<span style="color:red">dev.micronator-101.org</span>")
{
$OUT .= " \n";
$OUT .= " <nowiki># Pour la redirection d'Odoo.\n";</nowiki>
$OUT .= " <nowiki># Michel-André / 2018-09-12_22h06\n";</nowiki>
$OUT .= " Redirect / https://dev.micronator-101.org/\n";
}
</span>
return " <nowiki># skipping SSL directives\n" unless $port eq "443";</nowiki>

return "" unless $modSSL{'status'} eq 'enabled';

$OUT = <<SSL_END;
<nowiki># SSL Directives</nowiki>
SSLEngine on
<span style="color:Green">'''SSL_END'''</span>
<span style="color:blue">
if ( $virtualHost eq "<span style="color:red">dev.micronator-101.org</span>" )
{
$OUT .= " \n";
$OUT .= " <nowiki># Pour la redirection vers le port 8069\n";</nowiki>
$OUT .= " <nowiki># Michel-André / 2018-09-12_22h06\n";</nowiki>
$OUT .= " ProxyPass / http://localhost:8069/ retry=0\n";
$OUT .= " ProxyPassReverse / http://localhost:8069/\n";
}
</span>
<span style="color:red"><nowiki>}</nowiki></span>

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;La ligne <span style="color:Green">'''SSL_END'''</span> doit obligatoirement débuter sur la première colonne.


[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Prendre tout le contenu de l'encadré pour la commande.

cat > /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/25SSLDirectives <<'EOT'
{
if ( $port eq "80" && $virtualHost eq "<span style="color:red">dev.micronator-101.org</span>")
{
$OUT .= " \n";
$OUT .= " <nowiki># Pour la redirection d'Odoo.\n";</nowiki>
$OUT .= " <nowiki># Michel-André / 2018-09-12_22h06\n";</nowiki>
$OUT .= " Redirect / https://dev.micronator-101.org/\n";
}

return " <nowiki># skipping SSL directives\n" unless $port eq "443";</nowiki>

return "" unless $modSSL{'status'} eq 'enabled';

$OUT = <<SSL_END;
<nowiki># SSL Directives</nowiki>
SSLEngine on
<span style="color:Green">'''SSL_END'''</span>

if ( $virtualHost eq "<span style="color:red">dev.micronator-101.org</span>" )
{
$OUT .= " \n";
$OUT .= " <nowiki># Pour la redirection vers le port 8069\n";</nowiki>
$OUT .= " <nowiki># Michel-André / 2018-09-12_22h06\n";</nowiki>
$OUT .= " ProxyPass / http://localhost:8069/ retry=0\n";
$OUT .= " ProxyPassReverse / http://localhost:8069/\n";
}

}
EOT



On développe le gabarit <code>httpd.conf</code> pour qu'il intègre le gabarit personnalisé.
# expand-template /etc/httpd/conf/httpd.conf

On vérifie le fichier de configuration de <code>httpd.conf</code> pour s'assurer que le gabarit personnalisé a bien été intégré.
# cat /etc/httpd/conf/httpd.conf | grep "Pour la redirection"

&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue"># Pour la redirection d'Odoo.</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue"># Pour la redirection vers le port 8069</span>


'''''Redémarrage des démons'''''

On redémarre le démon <code>httpd</code>.
# /etc/rc.d/init.d/httpd-e-smith restart

On redémarre le démon <code>odoo</code>.
# /etc/rc.d/init.d/odoo restart


=== Vérification ===

'''''Connexion à Server Manager'''''

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;On supprime l'historique de notre navigateur.

On s'assure qu'on peut toujours accéder au gestionnaire Server Manager du serveur local en allant à: [https://www.interne.micronator-101.org/server-manager.

<center>
{| style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:odoo-11-DEV-027-Verif3-A.png|center|top|250px|border]]
||[[Image:odoo-11-DEV-028-Verif3-B.png|center|top|700px|border]]
|}
</center>

'''''Connexion à Odoo'''''

On se rend sur notre site Odoo en spécifiant toujours <span style="color:Blue">'''<u>dev</u>'''</span><span style="color:Blue">.micronator-101.org</span>:

* http://dev.micronator-101.org
* http://www.dev.micronator-101.org
* https://dev.micronator-101.org
* https://www.dev.micronator-101.org

Le résultat est toujours le même, on est automatiquement redirigé vers la page de connexion d'Odoo: https://dev.micronator-101.org/web/login et le cadenas est <span style="color:Green">'''<u>vert</u>'''</span>.

<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:odoo-11-DEV-029-ConnexionOdoo-A.png|center|top|350px|border]]
<nowiki>-</nowiki> Vu que notre certificat a été émis par Let's Encrypt Authority X3, une véritable autorité de certification reconnue, le serveur Web d'Odoo a accepté le certificat et a émis une connexion sécurisée.

<nowiki>-</nowiki> On se logue, la page d'accueil d'Odoo apparaît et le cadenas est toujours <span style="color:Green">'''<u>vert</u>'''</span>.
||[[Image:odoo-11-DEV-030-ConnexionOdoo-B.png|center|top|650px|border]]
|}
</center>

<center><span style="font-size:125%">'''Notre connexion à Odoo est maintenant toujours sécurisée. ''(CQFD'')'''</span></center>


'''''Certificat'''''

<center>
{| class="wikitable" style="width: 90%; background-color:#ffffff;"
|- style="vertical-align:bottom;font-family: Courier New;text-align: left;"
|&nbsp;

On clique le cadenas puis, >.
||&nbsp;

Plus d'informations.
||&nbsp;

Afficher le certificat.
||<nowiki>-</nowiki> Le certificat a été émis par Let's Encrypt Authority X3 qui est une autorité de certification reconnue.

<nowiki>-</nowiki> Détails.
|- style="vertical-align:top;"
|[[Image:odoo-11-DEV-031-Certif-A.png|center|top|250px|border]]
||[[Image:odoo-11-DEV-032-Certif-B.png|center|top|250px|border]]
||[[Image:odoo-11-DEV-033-Certif-C.png|center|top|250px|border]]
||[[Image:odoo-11-DEV-034-Certif-D.png|center|top|250px|border]]
|}
</center>


<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:bottom;font-family: Courier New;text-align: left;"
|Pas avant.
||Pas après donc, valide pour 90 jours.
||Nos CNAME sont tous là.
|- style="vertical-align:top;"
|[[Image:odoo-11-DEV-035-Certif-E.png|center|top|325px|border]]
||[[Image:odoo-11-DEV-036-Certif-F.png|center|top|325px|border]]
||[[Image:odoo-11-DEV-037-Certif-G.png|center|top|325px|border]]
|}
</center>


=== Fichier index de l'i-bay Primary ===

[[Image:odoo-11-DEV-009-PageDeLaSociete.png|top|right|400px|border]]
Le fichier <code>index.html</code> dans l'i-bay Primary peut contenir un texte en HTML décrivant notre organisation et sera affiché lors d'une visite à la page: http://www.micronator-101.org ou https://www.micronator-101.org.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

===Mise en garde ===

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Il ne faut plus utiliser: <span style="color:blue">https://<u>dev</u>.micronator-101.org</span><span style="color:red">:8069</span>, car vous obtiendrez l'erreur de connexion suivante: <code>SSL_ERROR_RX_RECORD_TOO_LONG</code>.

[[Image:odoo-11-DEV-038-MiseEnGarde.png|top|center|700px|border]]


<center><span style="font-size:115%">'''L'accès au gestionnaire Server Manager est toujours possible.'''</span></center>

<center><span style="font-size:115%">'''Les connexions vers Odoo sont redirigées vers des connexions SSL/TLS.'''</span></center>

<center><span style="font-size:115%">'''L'accès à interne.micronator-101.org affiche une page décrivant notre société.'''</span></center>


= Certificat standard SME =

On veut recréer un certificat original émis et certifié par le Serveur SME lui-même.

Après s'être logué avec l'utilisateur <span style="color:red">root</span>, on devrait être dans le répertoire personnel de ce dernier.
# pwd

<span style="color:red">root</span>


'''Création d'un répertoire de sauvegarde'''

# mkdir dehydrated

On se rend dans le répertoire de sauvegarde.
# cd dehydrated/


'''Sauvegarde des fichiers du certificat actuel'''

Recherche des chemins des fichiers du certificat présentement actif.
# cat /etc/httpd/conf/httpd.conf | grep SSLCertificate

<span style="color:Blue">SSLCertificateChainFile</span> /etc/dehydrated/certs/micronator-101.org/<span style="color:red">chain.pem</span>
<span style="color:Blue">SSLCertificateFile</span> /etc/dehydrated/certs/micronator-101.org /<span style="color:red">cert.pem</span>
<span style="color:Blue">SSLCertificateKeyFile</span> /etc/dehydrated/certs/micronator-101.org /<span style="color:red">privkey.pem</span>

On sauvegarde le fichier de la chaîne de certification.
# cp /etc/dehydrated/certs/micronator-101.com/chain.pem .

On sauvegarde le fichier du certificat.
# cp /etc/dehydrated/certs/micronator-101.com/cert.pem .

On sauvegarde le fichier de la clé privée.
# cp /etc/dehydrated/certs/micronator-101.com/privkey.pem .

On vérifie le fichier <code>pem</code>.
# ls -ls /home/e-smith/ssl.pem/

total 8
8 -rw-r--r-- 1 root root 7637 2 mars 20:46 <span style="color:blue">dev-11.micronator-101.org.pem</span>

Il n'est pas nécessaire de le faire, mais on sauvegarde quand même le fichier <code>pem</code>.
# cp /home/e-smith/ssl.pem/dev-11.micronator-101.com.pem .

On vérifie les sauvegardes.
# ls -ls

total 20
4 -rw------- 1 root root 2329 3 mars 17:23 cert.pem
4 -rw------- 1 root root 1684 3 mars 17:23 chain.pem
4 -rw------- 1 root root 3243 3 mars 17:23 privkey.pem
8 -rw-r--r-- 1 root root 7637 3 mars 17:25 dev-11.micronator-101.org.pem


'''Suppression de certaines propriétés de modSSL'''

On affiche les propriétés de <code>modSSL</code>.
# config show modSSL

modSSL=service
<span style="color:red">CertificateChainFile</span>=/etc/dehydrated/certs/micronator-101.org/chain.pem
TCPPort=443
access=public
<span style="color:red">crt</span>=/etc/dehydrated/certs/micronator-101.org /cert.pem
<span style="color:red">key</span>=/etc/dehydrated/certs/micronator-101.org /privkey.pem
status=enabled

On supprime la propriété <code>CertificateChainFile</code>.
# config delprop modSSL CertificateChainFile

On supprime la propriété <code>CommonName</code>.
# config delprop modSSL CommonName

On supprime la propriété <code>crt</code>.
# config delprop modSSL crt

On supprime la propriété <code>key</code>.
# config delprop modSSL key

À nouveau, on vérifie les propriétés de <code>modSSL</code>.
# config show modSSL

<span style="color:blue">modSSL=service
TCPPort=443
access=public
status=enabled</span>


'''Suppression des paramètres de tous les anciens certificats'''

[[Image:015-IconeASurveiller.png|left|caption|32px]]On utilise la très dangereuse commande <code>rm -rf</code> pour supprimer tous les anciens fichiers: <code>.crt</code>, <code>.key</code> et <code>.pem</code> du Serveur SME.


''.crt''
# rm -rf /home/e-smith/ssl.crt/*

''.key''
# rm -rf /home/e-smith/ssl.key/*

''.pem''
# rm -rf /home/e-smith/ssl.pem/*


Il faut signaler les changements avec un des blocs de commandes ci-dessous:

* Si on ne veut pas réamorcer, on lance le bloc de commandes ci-dessous. Sans réamorçage, le serveur ne prendra que quelques secondes pour effectuer les modifications nécessaires.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
signal-event domain-modify; \<br>
signal-event email-update; \<br>
signal-event ibay-modify
|}


* Si on veut réamorcer, le bloc de commandes ci-dessous applique les changements en signalant une mise à jour et un réamorçage.
# signal-event post-upgrade ; signal-event reboot

[[Image:odoo-11-HTTPS-029-CerttifSMEPostUpgrade.png|top|right|450px|border]]
Si on choisit le bloc de commandes avec réamorçage, la commande <code>signal-event post-upgrade</code> mettra à jour les paramètres de configuration de <code>modSSL</code>, le serveur réamorcera avec la commande <code>signal-event reboot</code> pour activer tous les nouveaux paramètres et prendra environ une minute pour redevenir actif.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

'''Vérification'''

* '''''Console du serveur'''''

On affiche la date.
# date

ven. <span style="color:red">mars 3 18:30:02</span> EST 2017

Fichier <code>pem</code>.
# ls -ls /home/e-smith/ssl.pem/

total 4
4 -rw-r--r-- 1 root root 3564 <span style="color:red">3 mars 18:23</span> dev-11.micronator-101.com.pem

Le fichier <code>pem</code> vient tout juste d'être recréé depuis quelques minutes seulement.


* '''''Navigateur Web'''''

On se rend au site: https://www.interne.micronator-101.com.

Firefox affiche un écran d'avertissement. Avancé > Ajouter une exception... > Voir... > onglet Détails > Validité > Pas avant.

[[Image:Odoo-11-DEV-040-NavigateurWeb.png|top|left|300px|border]]

Le certificat est au nom de: ''dev-11.micronator-101.com''.

On voit qu’il vient d'être émis ''(3 mars 2017 18:23:01)'' en même temps que la création du fichier <code>pem</code> ''(lors du réamorçage)''.

Fermer les fenêtres et ajouter l'exception.


Le nouveau certificat, émis et certifié par le Serveur SME lui-même, est fonctionnel.
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;<br>

<span style="font-size:120%">'''Mot de la fin'''</span>

Cette troisième marche à suivre conclut notre étude sur l'application Odoo-11.

# Description de l'installation d'Odoo-11 sur un Serveur SME-9.2: https://wiki.contribs.org/Odoo-11.
# Description ses étapes pour assurer une connexion sécuritaire à Odoo-11 roulant sur un Serveur SME: https://wiki.contribs.org/Odoo-11_%26_HTTPS.


[[Image:Odoo-11-BanniereDeLaVictoire-APT.png|caption|36px]]&nbsp;&nbsp;Victoire totale, hissons la bannière de la victoire.
<br>
<br>

----
<references/>

----
<references/>
[[Category:Howto]] [[Category:Howto/fr]]
2,785

edits

Navigation menu