Configuration Apache

1) Introduction.

Ce didacticiel propose de configurer le fichier httpd.conf d’Apache. Cette configuration n’est pas spécifique à WampServer mais à tous les serveurs web fonctionnant sous windows.

Ce didacticiel fonctionne actuellement sous Windows 7 Pro et ses particularités sont ceux de la version 2.4 d’apache. En aucune façon, vous ne pouvez utiliser ce didacticel pour configurer une version antérieur à la 2.4 d’Apache, ou de le faire tourner sous windows XP qui est devenu obsolète depuis Avril 2014.

Nous ne détaillerons pas ici l’installation de WampServer, ni celle d’une nouvelle version d’Apache. On suppose que ces deux points sont déjà opérationnels.

Nous avons volontairement fait un découpage du fichier httpd.conf afin de détailler chaque partie pour comprendre l’usage que nous faisons.

2) Le fichier des paramètres.

Tout au début du fichier httpd.conf, j’ai introduit un fichier paramètre, qui se trouve dans le sous-répertoire « /conf » du répertoire racine d’Apache, que voici.

# ******************************************************* #
#                                                         #
#     Fichier de Configuration du Serveur HTTP Apache     #
#                                                         #
# ******************************************************* #

include conf/param.conf

Le but est de rendre paramétrable le numéro de la version d’Apache, ainsi que le numéro de la version de PhpMyAdmin. Dans ma version modifiée de WampServer, ce sont deux nouvelles fonctionnalités que j’ai mis en place. Les valeurs réelles seront placées dans le fichier param.conf comme ci-après :

Define Version_Apache      f:/Wamp/bin/apache/apache2.4.10
Define Version_PhpMyAdmin  f:/Wamp/apps/phpmyadmin4.2.10

Une des nouvelles fonctionnalités misent en place à partir de la version 2.4 d’Apache est de pouvoir substituer les chaines de caractères que voici « ${Version_Apache} » et « ${Version_PhpMyAdmin} », par la valeur qui est stockée dans le fichier paramètre.

Si vous n’avez aucun usage de ces paramètres, vous pouvez supprimer cette partie.

3) Les fonctionnalités de Base d’Apache.

Ce sont les paramétres généraux que nous appliquons au service « WampApache afin d’obtenir la meilleure réactivitée en fonction du nombre d’utilisateurs.

Vous trouverez plus d’explications dans la documentation d’apache dans le chapitre consacré aux « fonctionnalités de Base d’Apache« .

# ====================== #
#                        #
#     Serveur Apache     #
#                        #
# ====================== #

ServerRoot "${Version_Apache}"

PidFile Logs/httpd.pid

LogLevel warn

ServerSignature On
ServerTokens Full

AcceptFilter http none
AcceptFilter https none

HostnameLookups Off
UseCanonicalName Off

Timeout 60
KeepAlive On
MaxKeepAliveRequests 150
KeepAliveTimeout 2

MaxRequestsPerChild 0
ThreadsPerChild 250

4) Liste des Modules.

Nous mettons dans le fichier httpd.conf la liste de tous les modules qui sont présents dans le sous-répertoire « /modules » du répertoire racine d’Apache.

Si un module est présent dans le sous-répertoire « /modules » d’Apache mais absent dans le fichier httpd.conf, l’image suivante logo danger apparait dans l’onglet « Modules d’Apache » de l’icône WampServer et signifie que la déclarative de ce module est absente dans le fichier Httpd.conf. Pour remédier à cela, vous devez mettre le nom de ce module dans le fichier Httpd.conf.

Nous plaçons un « # » au début de la ligne si nous ne faisons aucun usage de ce module. Même si le module est en commentaire, le fait qu’il soit présent dans le fichier httpd.conf vous évite d’avoir un avertissement sous la forme de l’image logo danger.

Ci-après, la liste des modules n’ayant aucun paramétrage associé.

# ========================== #
#                            #
#     Les Modules Apache     #
#                            #
# ========================== #

  LoadModule access_compat_module        modules/mod_access_compat.so
  LoadModule actions_module              modules/mod_actions.so
  LoadModule allowmethods_module         modules/mod_allowmethods.so
  LoadModule asis_module                 modules/mod_asis.so
  LoadModule auth_basic_module           modules/mod_auth_basic.so
# LoadModule auth_digest_module          modules/mod_auth_digest.so
# LoadModule auth_form_module            modules/mod_auth_form.so
# LoadModule authn_anon_module           modules/mod_authn_anon.so
  LoadModule authn_core_module           modules/mod_authn_core.so
# LoadModule authn_dbd_module            modules/mod_authn_dbd.so
# LoadModule authn_dbm_module            modules/mod_authn_dbm.so
  LoadModule authn_file_module           modules/mod_authn_file.so
# LoadModule authn_socache_module        modules/mod_authn_socache.so
# LoadModule authnz_fcgi_module          modules/mod_authnz_fcgi.so
# LoadModule authnz_ldap_module          modules/mod_authnz_ldap.so
  LoadModule authz_core_module           modules/mod_authz_core.so
# LoadModule authz_dbd_module            modules/mod_authz_dbd.so
# LoadModule authz_dbm_module            modules/mod_authz_dbm.so
  LoadModule authz_groupfile_module      modules/mod_authz_groupfile.so
  LoadModule authz_host_module           modules/mod_authz_host.so
# LoadModule authz_owner_module          modules/mod_authz_owner.so
  LoadModule authz_user_module           modules/mod_authz_user.so
  LoadModule autoindex_module            modules/mod_autoindex.so
# LoadModule buffer_module               modules/mod_buffer.so
# LoadModule cache_disk_module           modules/mod_cache_disk.so
# LoadModule cache_module                modules/mod_cache.so
# LoadModule cache_socache_module        modules/mod_cache_socache.so
# LoadModule cern_meta_module            modules/mod_cern_meta.so
# LoadModule charset_lite_module         modules/mod_charset_lite.so
# LoadModule data_module                 modules/mod_data.so
# LoadModule dav_module                  modules/mod_dav.so
# LoadModule dav_fs_module               modules/mod_dav_fs.so
# LoadModule dav_lock_module             modules/mod_dav_lock.so
# LoadModule dbd_module                  modules/mod_dbd.so
# LoadModule dumpio_module               modules/mod_dumpio.so
  LoadModule env_module                  modules/mod_env.so
# LoadModule expires_module              modules/mod_expires.so
# LoadModule ext_filter_module           modules/mod_ext_filter.so
# LoadModule file_cache_module           modules/mod_file_cache.so
# LoadModule heartbeat_module            modules/mod_heartbeat.so
# LoadModule heartmonitor_module         modules/mod_heartmonitor.so
# LoadModule ident_module                modules/mod_ident.so
# LoadModule imagemap_module             modules/mod_imagemap.so
  LoadModule isapi_module                modules/mod_isapi.so
# LoadModule lbmethod_bybusyness_module  modules/mod_lbmethod_bybusyness.so
# LoadModule lbmethod_byrequests_module  modules/mod_lbmethod_byrequests.so
# LoadModule lbmethod_bytraffic_module   modules/mod_lbmethod_bytraffic.so
# LoadModule lbmethod_heartbeat_module   modules/mod_lbmethod_heartbeat.so
# LoadModule ldap_module                 modules/mod_ldap.so
# LoadModule log_debug_module            modules/mod_log_debug.so
# LoadModule log_forensic_module         modules/mod_log_forensic.so
# LoadModule lua_module                  modules/mod_lua.so
# LoadModule macro_module                modules/mod_macro.so
# LoadModule mime_magic_module           modules/mod_mime_magic.so
# LoadModule proxy_module                modules/mod_proxy.so
# LoadModule proxy_ajp_module            modules/mod_proxy_ajp.so
# LoadModule proxy_balancer_module       modules/mod_proxy_balancer.so
# LoadModule proxy_connect_module        modules/mod_proxy_connect.so
# LoadModule proxy_express_module        modules/mod_proxy_express.so
# LoadModule proxy_fcgi_module           modules/mod_proxy_fcgi.so
# LoadModule proxy_ftp_module            modules/mod_proxy_ftp.so
# LoadModule proxy_http_module           modules/mod_proxy_http.so
# LoadModule proxy_scgi_module           modules/mod_proxy_scgi.so
# LoadModule proxy_wstunnel_module       modules/mod_proxy_wstunnel.so
# LoadModule ratelimit_module            modules/mod_ratelimit.so
# LoadModule reflector_module            modules/mod_reflector.so
# LoadModule remoteip_module             modules/mod_remoteip.so
# LoadModule reqtimeout_module           modules/mod_reqtimeout.so
# LoadModule request_module              modules/mod_request.so
# LoadModule sed_module                  modules/mod_sed.so
# LoadModule session_module              modules/mod_session.so
# LoadModule session_cookie_module       modules/mod_session_cookie.so
# LoadModule session_crypto_module       modules/mod_session_crypto.so
# LoadModule session_dbd_module          modules/mod_session_dbd.so
# LoadModule slotmem_plain_module        modules/mod_slotmem_plain.so
# LoadModule slotmem_shm_module          modules/mod_slotmem_shm.so
# LoadModule socache_dbm_module          modules/mod_socache_dbm.so
# LoadModule socache_memcache_module     modules/mod_socache_memcache.so
# LoadModule speling_module              modules/mod_speling.so
# LoadModule unique_id_module            modules/mod_unique_id.so
# LoadModule userdir_module              modules/mod_userdir.so
# LoadModule usertrack_module            modules/mod_usertrack.so
# LoadModule version_module              modules/mod_version.so
# LoadModule watchdog_module             modules/mod_watchdog.so

5) Les Modules avec paramétrage.

Nous regroupons les modules qui fonctionnent en synergie. Dans l’exemple ci-après, le module alias et le module vhost_alias vont de pairs.

Le « <IfModule> » … « </IfModule> » permet d’activier le paramétrage si le module est actif.

# -------------------------------------- #
#     Module Alias                       #
# -------------------------------------- #

LoadModule alias_module                modules/mod_alias.so
LoadModule vhost_alias_module          modules/mod_vhost_alias.so

<IfModule alias_module>
	ScriptAlias /cgi-bin/ "f:/site-01/Ex_03/  f:/site-04/"
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Alias.

# -------------------------------------- #
#     Module CGI                         #
# -------------------------------------- #

LoadModule cgi_module                  modules/mod_cgi.so

<IfModule cgi_module>
	ScriptLog "f:Wamp/Logs/apache_cgi.log"
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Cgi.

# -------------------------------------- #
#     Module Deflate                     #
# -------------------------------------- #

LoadModule deflate_module              modules/mod_deflate.so
LoadModule filter_module               modules/mod_filter.so

<IfModule deflate_module>
	SetOutputFilter DEFLATE
	DeflateCompressionLevel 9

	<Location />
		AddOutputFilterByType DEFLATE application/atom_xml
		AddOutputFilterByType DEFLATE application/rss+xml
		AddOutputFilterByType DEFLATE application/xhtml+xml
		AddOutputFilterByType DEFLATE application/xml
		AddOutputFilterByType DEFLATE application/x-javascript
		AddOutputFilterByType DEFLATE image/svg+xml
		AddOutputFilterByType DEFLATE text/css
		AddOutputFilterByType DEFLATE text/html
		AddOutputFilterByType DEFLATE text/plain
		AddOutputFilterByType DEFLATE text/xml

# Pour les proxies
		Header append Vary User-Agent env=!dont-vary
	</Location>
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Deflate.

# -------------------------------------- #
#     Module Directory                   #
# -------------------------------------- #

LoadModule dir_module                  modules/mod_dir.so

<IfModule dir_module>
	DirectoryIndex index.php index.html index.shtml /Erreurs/404.php
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Directory.

# -------------------------------------- #
#     Module Headers                     #
# -------------------------------------- #

LoadModule headers_module              modules/mod_headers.so

<IfModule headers_module>
	<FilesMatch "\.(php|php3|html|htm|shtml|js|css|cgi|pl)$">
		Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0"
		Header set Pragma "no-cache"
		Header set Expires "0"
	</FilesMatch>
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Headers.

# -------------------------------------- #
#     Module Include                     #
# -------------------------------------- #

LoadModule include_module              modules/mod_include.so

<IfModule include_module>
	SSITimeFormat "%A %d %B %Y - %T"
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Include.

# -------------------------------------- #
#     Module Info_module                 #
# -------------------------------------- #

LoadModule info_module                 modules/mod_info.so

<IfModule info_module>
	<Location /server-info>
		SetHandler server-info
		<RequireAny>
			Require local
			Require ip 192.168.1.20
		</RequireAny>
	</Location>
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Info.

Pour utiliser le module Info, il suffit de taper « /server-info » après l’url du site. Exemple : « http://mon-site-un/server-info ».

# -------------------------------------- #
#     Module log_config                  #
# -------------------------------------- #

LoadModule log_config_module           modules/mod_log_config.so
LoadModule logio_module                modules/mod_logio.so

<IfModule log_config_module>
	LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
	LogFormat "%h %l %u %t \"%r\" %>s %b" common

	<IfModule logio_module>
		LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
	</IfModule>
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Log.

# -------------------------------------- #
#     Module Mime                        #
# -------------------------------------- #

LoadModule mime_module                 modules/mod_mime.so

<IfModule mime_module>
	TypesConfig conf/mime.types
#
	AddType application/json .json
	AddType application/xml  .xml
#
	AddType application/x-tar            .tgz
	AddType application/x-rar-compressed .rar
#
	AddType application/x-compress .Z
	AddType application/x-gzip     .gz .tgz
#
	AddType application/x-httpd-php        .php .phtml .htm .html
	AddType application/x-httpd-php-source .phps
#
	AddType image/x-icon .ico
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Mime.

# -------------------------------------- #
#     Module Php5                        #
# -------------------------------------- #

LoadModule php5_module "f:/Wamp/bin/php/courant/php5apache2_4.dll"

phpIniDir "f:/Wamp/bin/php/courant"

Dans la documentation de Php, voici comment installer Php5 en tant que gestionnaire.

La directive « phpIniDir » permet de préciser le chemin où se trouve le répertoire php de la version courante. Il est aussi nécessaire de préciser dans la commande « Path » de windows où se trouve ce chemin.

# -------------------------------------- #
#     Module Proxy_Html                  #
# -------------------------------------- #

LoadModule proxy_html_module           modules/mod_proxy_html.so
LoadModule xml2enc_module              modules/mod_xml2enc.so

<IfModule proxy_html_module>
	Include conf/extra/proxy-html.conf
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Proxy_Html.

# -------------------------------------- #
#     Module Rewrite                     #
# -------------------------------------- #

LoadModule rewrite_module              modules/mod_rewrite.so
LoadModule substitute_module           modules/mod_substitute.so
LoadModule negotiation_module          modules/mod_negotiation.so

#<IfModule rewrite_module>
#	RewriteEngine On
#</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Rewrite.

# -------------------------------------- #
#     Module Setenvif                    #
# -------------------------------------- #

LoadModule setenvif_module             modules/mod_setenvif.so

Dans la documentation d’apache 2.4, voici le détail du module Setenvif.

# -------------------------------------- #
#     Module SSL                         #
# -------------------------------------- #

LoadModule ssl_module                  modules/mod_ssl.so
LoadModule socache_shmcb_module        modules/mod_socache_shmcb.so

<IfModule ssl_module>
	SSLProtocol -ALL +SSLv3 +TLSv1
#
	SSLRandomSeed startup builtin
	SSLRandomSeed connect builtin

#	SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
	SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
#
	SSLPassPhraseDialog		builtin
#	SSLPassPhraseDialog		"exec:${Version_Apache}/conf/Certificat/passphrase.txt"
#	
	SSLSessionCache         "shmcb:f:/Wamp/tmp/ssl_scache(512000)"
	SSLSessionCacheTimeout  300
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module SSL.

# -------------------------------------- #
#     Module Status                      #
# -------------------------------------- #

LoadModule status_module               modules/mod_status.so

<IfModule status_module>
	ExtendedStatus On
#
	<Location /server-status>
		SetHandler server-status
		<RequireAny>
			Require local
			Require ip 192.168.1.20
		</RequireAny>
	</Location>
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Status.

Pour utiliser le module status, il suffit de taper « /server-status » après l’url du site. Exemple : « http://mon-site-un/server-status ».

6) Les accès aux répertoires.

Nous définissons l’usage que nous voulons faire des sous-répertoires du répertoire racine du site. Voici trois exemples de redéfinitions.

# ======================= #
#                         #
#     Les Répertoires     #
#                         #
# ======================= #

# -------------------------------- #
#     Répertoire "f:/Erreurs/"     #
# -------------------------------- #

<Directory "f:/Erreurs/">
	Options +Includes
#
	<RequireAny>
		Require local
		Require ip 192.168.1.20
	</RequireAny>
</Directory>
#
Alias /Erreurs/ "f:/Erreurs/"
#
ErrorDocument 400 /Erreurs/400.php
ErrorDocument 401 /Erreurs/401.php
ErrorDocument 403 /Erreurs/403.php
ErrorDocument 404 /Erreurs/404.php
ErrorDocument 500 /Erreurs/500.php

Lorsque nous rencontrons une erreur de type 400, 401, 403, 404 et 500, le serveur web affiche la page HTML qui est associée. Nous précisions que toutes les pages HTML sont regroupées dans le répertoire « f:/Erreurs » et que les accès en mode local ou via internet sont autorisés.

# ----------------------------------------------------------------- #
#     Répertoires utilisant les commandes "Server Side Include"     #
# ----------------------------------------------------------------- #

<Directory "f:/site-01/Ex_05/">
	Options +Includes
#
	AddType text/html        .shtml
	AddOutputFilter INCLUDES .shtml
</Directory>

Nous définissons le sous-répertoire « /Ex_05 » du répertoire racine du site « httpd://mon-site-un » comme pouvant exécuter des commandes SSI (Server Side Include).

# ---------------------------------------- #
#     Répertoires exécutant du cgi-bin     #
# ---------------------------------------- #

<DirectoryMatch "f:/site-01/Ex_05/">
	Options +ExecCGI
#
	AddHandler cgi-script .pl
</DirectoryMatch>

Nous définissons le sous-répertoire « /Ex_05 » du répertoire racine du site « httpd://mon-site-un » comme pouvant exécuter des scripts CGI (Common Gateway Interface).

7) Les accès aux fichiers.

Nous définissons les autorisations d’accès aux fichiers.

# ==================== #
#                      #
#     Les Fichiers     #
#                      #
# ==================== #

# -------------------------------------- #
#     Liste des Fichiers à Protéger      #
# -------------------------------------- #

<FilesMatch "\.(?i)(bat|c|htaccess|htpasswd|ini|log|sql|txt)$">
	Require all denied
</FilesMatch>

Les fichiers dont le suffixe se termine par « .bat », « .htaccess », « .htpasswd », « .ini », « .log », « .sql », « .txt » ne sont pas accessible à partir de l’url.

Le « (?i) » signifie que le suffixe est insensible à la casse. Autrement dit, « .Ini » ou « .inI » avec des majuscules ou « .ini » sans majuscule sera traité de la même façon.

# ------------------------------------------------- #
#     Fichiers paramètres des bases de données      #
# ------------------------------------------------- #

<FilesMatch "(?i)(MySql_In|MySql_Out)">
	Require all denied
</FilesMatch>

De même, j’ai interdit les accès à des fichiers dont le préfixe commence par « MySql_In » ou par « MySql_Out ». Ce sont les fichiers de paramétrages aux accès des bases de données.

8) Les ports en écoutes et les adresses IP autorisées.

Nous définissons le port 80, ainsi que le port 443 comme des ports autorisés à l’écoute par Apache. le port 443 est autorisé que si le module SSL est activé.

# =============================== #
#                                 #
#     Les Adresses IP & Ports     #
#                                 #
# =============================== #

Listen 80 http
#
<IfModule ssl_module>
	listen [::1]:443 https
</IfModule>

9) La police des caractères et le langage par défaut.

J’ai désactivé l’usage par défaut de la police de caractères pour mon serveur Web. Elle est définie dans les documents HTML par la balise HTML5 <meta charset= »utf-8″ />.

J’ai laissé en commentaire deux exemples. Le premier est la valeur « ISO-8859-1′ par défaut des documents HTML et Php. Le deuxième concerne les fichiers dont le suffice est « .php », « .htm », « .html », « .css », « .js », « .xml », « .json », « .rss ».

Comme je suis français, j’ai indiqué que le langage par défaut est le « fr ».

# ============================ #
#                              #
#     Police de Caractères     #
#                              #
# ============================ #

AddDefaultCharset Off

#AddDefaultCharset "ISO-8859-1"
#AddCharset "ISO-8859-1" .php .htm .html .css .js .xml .json .rss
#
DefaultLanguage "fr"

10) Le serveur principal.

J’utilise le serveur principal comme un site de redirection du genre poubelle dans le cas où l’url est mal écrit. Le port et l’adresse IP ne sont pas précisés.

Il est conseillé dans la documentation d’Apache, de définir le premier VirtualHost comme étant celui du serveur principale, ce que j’ai fait.

# ========================= #
#                           #
#     Serveur Principal     #
#                           #
# ========================= #

ServerName _default_
DocumentRoot "f:/Default/"
#
ErrorLog  "${Version_Apache}/Logs/apache_error.log"
CustomLog "${Version_Apache}/Logs/apache_custom.log" common
#
<Directory />
	Options none
	AllowOverride none
	<RequireAny>
		Require local
	</RequireAny>
</Directory>

# --------------- #
#     default     #
# --------------- #

<VirtualHost *:*>
	ServerName _default_
	ServerAdmin [email protected]
	DocumentRoot "f:/Default/"
#
	ErrorLog  "f:/Default/Logs/error.log"
	CustomLog "f:/Default/Logs/custom.log" common
#
	<Directory />
		Options none
		AllowOverride none
		<RequireAny>
			Require local
		</RequireAny>
	</Directory>
</VirtualHost>

11) Les autres sites.

Voici plusieurs exemples de déclaratives des VirtualHosts pour des usages différents.

# ===================== #
#                       #
#     Virtual Hosts     #
#                       #
# ===================== #

# -------------------------- #
#     Localhost avec SSL     #
# -------------------------- #

<VirtualHost [::1]:443>
	ServerName localhost
	ServerAdmin [email protected]
	DocumentRoot "f:/Wamp/www/"
#
	ErrorLog "f:/Wamp/www/Logs/error.log"
#
	SSLEngine on
	SSLCertificateFile    "${Version_Apache}/conf/Certificat/localhost.crt"
	SSLCertificateKeyFile "${Version_Apache}/conf/Certificat/localhost.key"
#
	<FilesMatch "\.(cgi|shtml|phtml|php)$">
		SSLOptions +StdEnvVars
	</FilesMatch>
#
	<Directory />
		SSLOptions +StdEnvVars
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride none
		<RequireAny>
			Require local
			Require ip 192.168.1.20
		</RequireAny>
	</Directory>
#
	BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
	CustomLog "f:/wamp/www/Logs/custom.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

J’ai défini l’accès au site localhost en tapant « https://localhost », c’est-à-dire par le protocole https qui est sécurisé. Cela nécessite d’avoir une certification de type SSL.

# -------------------------- #
#     Localhost sans SSL     #
# -------------------------- #

<VirtualHost [::1]:80>
	ServerName localhost
	ServerAdmin [email protected]
	DocumentRoot "f:/Wamp/www/"
#
	ErrorLog  "f:/Wamp/www/Logs/error.log"
	CustomLog "f:/Wamp/www/Logs/custom.log" common
#
	<Directory />
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride none
		<RequireAny>
			Require local
			Require ip 192.168.1.20
		</RequireAny>
	</Directory>
</VirtualHost>

Ici, l’accès au site localhost se fait en tapant « http://localhosy », c’est-à-dire sans le protocole sécurité.

# ------------------ #
#     PhpMyAdmin     #
# ------------------ #

<VirtualHost [::1]:80>
	ServerName phpmyadmin
	ServerAdmin [email protected]
	DocumentRoot "${Version_PhpMyAdmin}/"
#
	ErrorLog  "f:/Wamp/Logs/phpmyadmin_error.log"
	CustomLog "f:/Wamp/Logs/phpmyadmin_custom.log" common
#
	<Directory />
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride none
		<RequireAny>
			Require local
		</RequireAny>
	</Directory>
</VirtualHost>

L’accès à l’utilitaire PhpMyAdmin est défini en tant que site et non en tant qu’alias. On retrouve la variable « ${Version_PhpMyAdmin}/ » qui indique le numéro de la version de PhpMyAdmin courante.

# ------------------- #
#     mon-site-un     #
# ------------------- #

<VirtualHost 127.0.0.1:80>
	ServerName mon-site-un
	ServerAdmin [email protected]
	DocumentRoot "f:/Site-01/"
#
	ErrorLog  "f:/Site-01/Logs/error.log"
	CustomLog "f:/Site-01/Logs/custom.log" common
#
	<Directory />
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride all
		<RequireAny>
			Require local
		</RequireAny>
	</Directory>
</VirtualHost>

Pour mon environnement de développement, j’utilise size sites dont les noms vont de « mon-site-un » à mon-site-seize ». Ils sont tous construits sur le même modèle ci-dessus.

# ----------------- #
#     mon-forum     #
# ----------------- #

<VirtualHost 127.0.0.17:80>
	ServerName mon-forum
	ServerAdmin [email protected]
	DocumentRoot "f:/Site-forum/"
#
	ErrorLog  "f:/Site-forum/Logs/error.log"
	CustomLog "f:/Site-forum/Logs/custom.log" common
#
	<Directory />
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride none
		<RequireAny>
			Require local
		</RequireAny>
	</Directory>
</VirtualHost>

J’ai aussi un forum en test sur mon ordinateur. Il est définit en tant que site.

# ----------------- #
#     mon-forum     #
# ----------------- #

Alias /forum "f:/site-forum/"
#
<Directory "f:/site-forum/">
	Options -Indexes +FollowSymLinks +MultiViews
	AllowOverride none
	<RequireAny>
		Require local
		Require ip 192.168.1.20
	</RequireAny>
</Directory>
#

Et ce même forum est aussi définit en tant qu’Alias.

12) Les includes.

A la fin du fichier httpd.conf, j’ai placé les deux includes dont j’ai l’usage, à savoir celui des alias qui est présent dans le sous-répertoire « /alias » de WampServer et celui de « httpd-autoindex.conf ».

# =========== #
#             #
#    Alias    #
#             #
# =========== #

Include "f:/Wamp/alias/*"

# ================================ #
#                                  #
#     Fancy directory listings     #
#                                  #
# ================================ #

Include conf/extra/httpd-autoindex.conf

13) Conclusion.

Ceci est le Httpd.conf que j’utilise pour la version d’Apache 2.4, en usage avec la version php 5 & 6. Il y a sûrement des améliorations à faire, mais pour débuter avec WampServer, c’est largement suffisant.

Vous pouvez télécharger le fichier zipper httpd.conf que j’utilise sous WampServer !

1) Introduction.

Nous allons aborder la question du protocole ‘SSL’ (Secure Sockets Layer) qui est un protocole de sécurisation des échanges sous internet. Pour ce faire, nous allons d’une part configurer apache et d’autre part créer et installer des certificats sous windows.

À l’origine, le standard SSL a été créé et développé par la société Netscape. Aujourd’hui SSL a évolué et l’on devrait plutôt parler de TLS (Transport Layer Security) dont la dernière version finalisée est la TLS v1.2 normalisé en 2008. Une nouvelle version, la TLS v1.3 est en cours d’élaboration depuis 2015, au moment où j’écris ce didicticiel.

Nous n’aborderons pas les questions historiques sur ces normes de sécurités, ni le fonctionnement des échanges entre le client et le serveur, mais simplement comment mettre en oeuvre ce protocole dans un environnement de test sous wampserver.

2) Ce qu’il faut savoir.

Pour les tests, j’ai utilisé deux navigateurs, à savoir Google Chrome et Mozilla Firefox. Je tiens à signaler qu’il existe quelques petites différences que nous aborderons au moment du rangement des certificats.

Comment reconnaitre l’état de sa connexion sous Google Chrome ? A vrai dire, j’ai travaillé sur ce navigateur car les symboles étaient bien plus parlant que chez les autres navigateurs.

Vous trouverez toutes les explications de ces symboles en vous rendant sur la page « Vérifier la connexion d’un site Web » de Google.

Si dans la barre des adresses, vous avez le symbole Blank Page Icon, votre connexion n’est pas sécurisé. Cela ne veut pas dire que vous avez un problème, mais que vous utilisez le protocole « http ». En cliquant sur ce symbole, voici ce que vous pouvez obtenir :

Connexion http non sécuriséeDans le cas d’un connexion sécurisée, vous devez voir apparaitre le symbole Cadenas Vert que l’on nomme cadenas vert. Il fait l’usage du protocole « https » et normalement, tout ce passe correctement, comme dans l’exemple ci-après :

Connexion https sécuriséeAvec ce symbole Cadenas barré, vous rencontrez un problème de sécurité, bien que vous fassiez l’usage du protocole « https » comme dans l’exemple ci-après :

Connexiion https non sécuriséeQuatrième et dernier symbole Cadenas attention, la connesion est sécurisée mais la clef publique est absente, comme dans l’exemple ci-après :

Connexion https sans clef publiqueVous risquez d’obtenir quelques différences d’interprétations avec les autres navigateurs, mais avec Google Chrome, nous aurons une interprétation facile à interpréter. Notre but, avec ce didacticiel est d’obtenir le cadenas vert Cadenas Vert pour nos connexion sécurisé.

3) Vérification à faire avant de faire nos tests.

Nous nous trouvons dans un WampServer normalement configuré, dont l’icône est de la couleur verte. Autrement dit, nous avons une configuration en état de marche. Pour effectuer nos tests, nous avons besoin d’activer des modules d’apache, et des extensions de php, pour utiliser le protocole SSL et créer nos certificats.

3-A) Activation des modules d’apache.

Nous nous rendons dans l’icône de WampServer, en cliquant dans l’onglet « apache », puis dans « Module d’apache ». Nous devons nous assurer que les deux modules suivants sont bien activés :

flechesocache_shmcb

flechessl

S’ils ne sont pas cochés, alors vous devez cliquer dessus. Cela va se traduire dans le fichier ‘httpd.conf’ par la suppression du commentaire devant les deux lignes suivantes :

LoadModule socache_shmcb_module        modules/mod_socache_shmcb.so
LoadModule ssl_module                  modules/mod_ssl.so

Normalement, il n’y a rien d’autre à faire, mais assurez-vous que ces modules sont bien présents dans le répertoire ‘/apache/modules’.

flechemod_socache_shmcb.so

flechemod_ssl.so

Sur ce point, nous reviendrons lors de la configuration d’apache afin d’introduire le protocole ‘SSL’ sur le site ‘localhost’.

3-B) Activation des extensions php.

Nous nous rendons aussi sous Wampserver, en cliquant dans l’onglet « php », puis dans « Extensions php ». Nous devons nous assurer que l’extension ‘OPENSSL’ soit bien activé.

flechephp_openssl

S’il n’est pas coché, vous devez cliquer dessus. Dans le fichier ‘php.ini’, vous obtiendrez l’extension sans commentaire et vous pouvez ajouter le paramétrage suivant :

extension = php_openssl.dll

[openssl]
openssl.cafile =
openssl.capath =

Nous laissons en l’état ce paramétrage, vu que l’autorité de certification (CA) sera renseigné sous apache. Afin de vérifier que l’extension ‘OPENSSL’ soit bien activé, nous nous rendons dans ‘phpinfo()’. Voici ce que nous devons obtenir :

extension php_openssl sous phpinfo()Normalement, c’est terminé. Vous pouvez vérifier que vous avez bien dans le répertoire « /php/ext » :

flechephp_openssl.dll

ainsi que les DLL dans le répertoire « /php » :

flechessleay32.dll

flechelibeay32.dll

Pour travailler avec cet extension ‘OPENSSL’, nous avons besoin du fichier ‘OPENSSL.CNF’ que nous trouvons, soit dans le répertoire « /php/extras/ssl » ou soit dans le répertoire « /apahe/conf ». À partir d’une de ces copies, nous allons créer un environnement de travail afin de créer nos certificats ‘SSL’.

4) Configuration d’apache.

Nous nous rendons dans le fichier ‘httpd.conf’ afin de renseigner d’une part la configuration ‘SSL’ général à tout le serveur Apache et d’autre part le site ‘localhost » en VirtualHost, qui va utiliser le protocole ‘https’. Dans mon ‘httpd.conf’, l’emplacement de WampServer est paramétré avec la variable d’apache « ${Repertoire} », qui contient la valeur « F:/Wamp ». C’est la seule particularité vis-à-vis de mon environnement.

Cette configuration se décompose en trois parties que voici :

4-A) Activation de l’écoute du port 443.

Nous ajoutons les directives suivantes afin de signaler à Apache que l’on désire faire une écoute sur les ports 80 et 443.

Listen 80 http
#
<IfModule ssl_module>
	listen 443 https
</IfModule>

Pourquoi ces deux ports ? Le protocole « http » utilise le port 80 pour ses échanges alors que le protocole « https » utilise avec le port 443. Il est donc impératif d’activer l’écoute du port 443 pour nos échanges sécurisés.

4-B) Configuration du protocole ‘SSL’.

Nous retrouvons nos deux modules que nous avons activé précédemment. Afin de pouvoir désactiver ces modules, nous devons toujours placer le paramétrage ‘SSL’ dans un bloc testant l’activation du module ‘SSL_MODULE’.

# -------------------------------------- #
#     Module SSL                         #
# -------------------------------------- #

LoadModule ssl_module                  modules/mod_ssl.so
LoadModule socache_shmcb_module        modules/mod_socache_shmcb.so

<IfModule ssl_module>
	SSLProtocol +All -SSLv3
#
	SSLRandomSeed startup builtin
	SSLRandomSeed connect builtin
#
	SSLCipherSuite HIGH:!aNULL:!MD5
#
	SSLPassPhraseDialog             builtin
#	
	SSLSessionCache                 "shmcb:${Repertoire}/tmp/ssl_scache(512000)"
	SSLSessionCacheTimeout          300
</IfModule>

Deux remarque à faire :

flecheNous rejetons le protocole SSLv3 car il a été interdit d’utilisation par le navigateur Mozilla Firefox (voir ce lien en anglais).

Suite aux vulnérabilités découvertes sur la version ‘SSLv3’, voici ce que vous pouvez ajouter :

	SSLProtocol -ALL +TLSv1 +TLSv1.1 +TLSv1.2
#
	SSLHonorCipherOrder On
	SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:HIGH:!MD5:!aNULL:!EDH:!RC4
#
	SSLCompression off

Ainsi nous utilisons que le protocole ‘TLS’ pour les version 1.0, 1.1 et 1.2 qui est la dernière.

La directive ‘SSLCipherSuite’ définie les algorityhmes de chiffrement que vous utilisez.

flecheDans nos certificats, nous n’utilisons pas de ‘Pass Phrase’. Si vous désirez mettre un mot de passe, voilà comme procéder :

	SSLPassPhraseDialog             "exec:${Version_Apache}/conf/Certificat/passphrase.txt"

Si vous désirez plus d’explication, je vous conseille de lire la documentation officielle d’apache.

4-C) La configuration du site ‘localhost’.

Nous avons configuré notre site ‘localhost’ avec le protocole ‘http’ pour le port 80, comme ci-après :

# -------------------------- #
#     Localhost sans SSL     #
# -------------------------- #

<VirtualHost 127.0.0.51:80>
	ServerName localhost
	ServerAdmin [email protected]
	DocumentRoot "${Repertoire}/www/"
#
	ErrorLog  "${Repertoire}/www/Logs/error.log"
	CustomLog "${Repertoire}/www/Logs/custom.log" common
#
	<Directory />
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride none
		<RequireAny>
			Require local
		</RequireAny<
	</Directory>
</VirtualHost>

Afin de conserver un accès non sécurisé, nous pouvons laisser cette déclarative en l’état dans le fichier ‘httpd.conf.

Si vous désirez faire une redirection vers votre site sécurisé, autrement dit, vous désirez forcer l’url par un « https://localhost », il suffit dans ce virtualHost d’ajouter la ligne suivante :

	Redirect / https://localhost/

Nous ajoutons dans le fichier ‘httpd.conf’ cette autre déclarative de ‘localhost’, mais cette fois-ci sur le port 443 avec le protocole « https » sécurisé :

# -------------------------- #
#     Localhost avec SSL     #
# -------------------------- #

<IfModule ssl_module>
	<VirtualHost 127.0.0.51:443>
		ServerName localhost
		ServerAdmin [email protected]
		DocumentRoot "${Repertoire}/www/"
#
		ErrorLog  "${Repertoire}/www/Logs/error.log"
		CustomLog "${Repertoire}/www/Logs/custom.log" common
#
		SSLEngine on
		SSLCertificateFile      "${Version_Apache}/conf/Certificat/Site/localhost.crt"
		SSLCertificateKeyFile   "${Version_Apache}/conf/Certificat/Site/localhost.key"
#
#		SSLCACertificatePath    "${Version_Apache}/conf/Certificat/Ca"
		SSLCACertificateFile    "${Version_Apache}/conf/Certificat/Ca/Ca.crt"
#
		SSLVerifyClient none
		SSLVerifyDepth  10
#
		<Directory />
			SSLOptions +StdEnvVars
			Options    -Indexes +FollowSymLinks +MultiViews
			AllowOverride none
#
			<RequireAny>
				Require local
			</RequireAny>
		</Directory>
#
		<FilesMatch "\.(cgi|shtml|phtml|php)$">
#			SSLOptions +StdEnvVars
		</FilesMatch>
#
		BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
		CustomLog "f:/wamp/www/Logs/custom.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
	</VirtualHost>
</IfModule>

Quelques remarques :

flechenous avons conditionné le virtualHost en fonction de l’activation du module ‘SSL’. Sans cela, nous aurions une erreur en désactivant le module ‘SSL’.

fleche« SSLCertificateFile » désigne le certificat serveur qui a été signé par un CA. (CRT)

fleche« SSLCertificateKeyFile » désigne le fichier contenant la clef privée. (KEY)

fleche« SSLCACertificateFile » désigne le certificat d’autorité de certification (CA) auto-signé. (CA CRT)

fleche« SSLCACertificatePath » désigne le chemin vers un répertoire contenant tous les CA.

fleche« SSLVerifyClient » désigne la façon dont le client doit s’identifier.

fleche« SSLVerifyDepth » désigne le niveau de profondeur de la vérification du certificat client.

fleche« CustomLog » contient la nouvelle présentation des messages d’erreurs en provenance du ‘SSL’.

Pour tester une connexion sécurisée, c’est largement suffisant !

5) Comment créer nos certificats.

Pour ce faire, nous avons besoin de créer un environnement de travail, destiné à la création de nos certificats. Nous devons récupérer le fichier ‘OPENSSL.CNF’ que nous avon signalé ci-dessus, au paragraphe 3-B). Nous devons le modifier pour l’adapter à nos spécificités.

Vous pouvez nommer comme vous le désirez, votre répertoire de travail. À l’intérieur de celui-ci, pour stocker les étapes intermédiaires de la création de vos certificats, j’ai créé un répertoire de stockage, de nom « /certificats ». Je sais, ce n’est pas très original. Si vous désirez le modifier, vous pouvez le renommer comme bon vous semble. Ne pas oublier de le modifier dans le fichier ‘OPENSSL.CNF’ (ce qui est en rouge) dont voici un exemplaire, ci-après :

RANDFILE                       = ./Certificats/.rnd

#==================================================================#
[ ca ]
default_ca                     = CA_default

#==================================================================#
[ CA_default ]

dir                            = ./Certificats
certs                          = $dir/Cacerts
new_certs_dir                  = $dir/NewCerts
private_dir                    = $dir/Private    

database                       = $dir/Other/index.txt
serial                         = $dir/Other/serial.txt

certificate                    = $certs/ca.crt
private_key                    = $private_dir/ca.key
RANDFILE                       = $private_dir/ca.rnd

default_days                   = 4383
default_crl_days               = 30
default_md                     = md5
preserve                       = no

policy                         = policy_anything

Hormis le nom du répertoire de stockage, vous ne pouvez pas changer les autres répertoires, qui sont nécessaire à l’utilitaire ‘OPENSSL’.

Dans ‘Default_days’, j’ai mis une période de validité de douze ans, ce qui correspond exactement à une période couvrant quatre années bisextiles, soit 4383 jours. Je n’ai pas touché au reste du paramétrage.

Ci-après, nous définissons les champs qui sont obligatoires, de ceux qui sont facultatifs. Il vous est demandé quelques renseignements d’identifications de votre certificat.

#==================================================================#
[ policy_match ]
countryName                    = match
stateOrProvinceName            = match
localityName                   = match
organizationName               = optional
organizationalUnitName         = optional
commonName                     = supplied
emailAddress                   = optional

#==================================================================#
[ policy_anything ]
countryName                    = optional
stateOrProvinceName            = optional
localityName                   = optional
organizationName               = optional
organizationalUnitName         = optional
commonName                     = supplied
emailAddress                   = optional

Ci-après, nous définissons les valeurs par défaut et les caractéristiques du mot de passe.

#==================================================================#
[ req ]
default_bits                   = 4096
default_keyfile                = privkey.pem
distinguished_name             = req_distinguished_name
attributes                     = req_attributes

#==================================================================#
[ req_distinguished_name ]
countryName                    = Country Name (2 letter code)
countryName_default            = FR
countryName_min                = 2
countryName_max                = 2

stateOrProvinceName            = State or Province Name (full name)
stateOrProvinceName_default    = Aquitaine

localityName                   = Locality Name (eg, city)
localityName_default           =

0.organizationName             = Organization Name (eg, company)
0.organizationName_default     =

organizationalUnitName         = Organizational Unit Name (eg, section)
organizationalUnitName_default =

commonName                     = Common Name (eg, your website’s domain name)
commonName_max                 = 64

emailAddress                   = Email Address
emailAddress_default           = [email protected]
emailAddress_max               = 40

#==================================================================#
[ req_attributes ]
challengePassword              = A challenge password
challengePassword_min          = 4
challengePassword_max          = 20

Et enfin, les caractéristiques du certificat d’autorité (Authority Certificate = CA)

#==================================================================#
[ x509v3_extensions ]

# These extensions are added when 'ca' signs a request.

# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.

basicConstraints=CA:TRUE

# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.

# This is OK for an SSL server.
# nsCertType			= server

# For an object signing certificate this would be used.
# nsCertType = objsign

# For normal client use this is typical
# nsCertType = client, email

# and for everything including object signing:
# nsCertType = client, email, objsign

# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment

# This will be displayed in Netscape's comment listbox.
nsComment			= "OpenSSL Generated Certificate"

# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move

# Copy subject details
# issuerAltName=issuer:copy

#nsCaRevocationUrl		= http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName

# This is required for TSA certificates.
# extendedKeyUsage = critical,timeStamping

#==================================================================#
[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment


#==================================================================#
[ v3_ca ]

# Extensions for a typical CA
# PKIX recommendation.

subjectKeyIdentifier=hash

authorityKeyIdentifier=keyid:always,issuer

# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.

basicConstraints = CA:true

6) Usage de la commande ‘OPENSSL’ pour créer nos certificats.

Le but de ce paragraphe est de montrer comment créer des certificats nécessaire à notre exemple :

flecheun certificat d’autorité de certification auto-signé que l’on note ‘CA’.

flecheun certificat serveur (CSR).

flecheun certificat client (PFX).

flechela clef privée (KEY).

Nous allons passer en revue les différents paramétrages de la commande ‘OPENSSL’ pour produire la création de nos trois certificats et de ma clef privée. Afin d’illustrer chaque commande, je donnerai le contenu du fichier ainsi produit.

7) Création d’un certificat d’authenticité auto-signé (CA).

Afin d’être dans un cas réel, nous avons besoin de créer un certificat faisant office d’autorité de certification noté CA, sous le nom ‘Artemus & Cie ».

Dans les étapes ci-après, nous détaillons la création de ce certificat CA qui va nous servir, par la suite, pour signer le certificat client que nous allons utiliser pour nous identifier vis-à-vis du serveur de nom ‘localhost’.

7-A) Générateur d’un nombre pseudo aléatoire.

openssl rand  -out %DIRNAME%/Private/Ca.rnd  -base64  1257

La variable d’environnement ‘%DIRNAME%’ contient le chemin vers le répertoire ‘/certificats’ que nous avons créé précédemment dans notre environnement.

Nous produisons un nombre aléatoire dont la longueur est de 1257 bits. C’est juste un exemple que nous utilisons et vous pouvez mettre autre chose que 1257. Voici ce que nous obtenons dans le fichier ‘ca.rnd’ :

xvVMxMaCINBjdiWwURQ9aPgyIrUyM6jP5DRsw3g/nCr3rjZ8j1Xai7FQcLLAqQ78
WgR5s8ATZC5I1/5JGZUSPRMdDUmCrKrgA3l44QTM7vAFk0MCBGYIvCHxM3aKoCG5
cE0yj5NlqckgbYsDHaqs/UPsPnMz0F+ApqjjdUL0kQzZ53N9txNgR5B6oQ2R8j0y
Yv2RyqrIvOwKa0QGLgFKZbKw8Q7FCYh0WnOLJU8v4YLzo2iekFwdSiiMmQ7QNZKo
4vxu7rP9dK5LdnPE01zpjDxslZ6DPazIE38HOfeEPFrp16r1rEEqfLSbpCuFgGBP
sP532oWTDQ03PG904ZScPZ21I7ysMyA1AyZS0SpcjLXgO/Ek6DEYkRVNXUS1WjGr
7ZQowiUqrOfLPj+YpUsRxdT3iodIxrbyaARx4jYfmFYFktYqaDOcgGlfDtiZ1d+k
BQaWi6KgB4SyHkXt5R/GPlBtTqdflCV+MOlSl0MKrC+UkPjtPmLMRga9Wl0caSW3
JeBPL+hWJ0ZayKtXMlwiOqSKn0wjw+7ba1NxF4HANeFVV3GwQB7ma3WagfA3P4Ei
O+qfCMaj7+BD+FTnRroVK0nz/JtlZtY9gRGf5SAyUchCGB2peb4g8GxbK3r1jmME
y/AGbtHINzAsRCxnIgFG4qbnFCQ6BnjUcnIYKj88OHQrujjuaC4c+dB/77VDmvLm
wSn/C1zYzwPDSQvLBZcOscY2TwTBNUrRcPKuIAElejq0QlVlj5miraBTgz+Jxn4d
1Sz+938XRkoLG2gjDnblQJiPFZ1fzS3oCt+b3/gvsQoeYtNPPbIUU0801O/p6CLU
aS3vriXTgnbvHzOX4CYAWBb3vGU4Ww7QGXJCPBTCFw5OO82ii6ALdTdbq/cE4PXS
4XhfHnQiouN4+f0M0hDjCCRs7RK0xKYq1/vd7x9bR95zVfxh0lUm7iZx7vNc6HkQ
lasQLOPxrpQu/lRsZxtjB+UIY8aOdRGeni9Qhjc9KacDlPpgWFd9syK7BfRJQoSi
kHBE9+K9CspQFE3x1MgoK2GYLHQAQUGrv+jQoA68CIEgjdryqXEQoMitAz0LR0b7
xNS1mdSryzwehKExzJcAJHDq1rKQSzV9qTKq5KJllHJ1pG/3GLyaMcSInYELLkZt
HLdTiOg+6W5gcai91AXz4imXZ+qkuiO7EXj/s8QazKjnrQLKcwY3opU6AXsIOfUi
55Qx/jG1afxj+0++eLqCaiqulN7dxcLjtN0/7CgqDOd5pOsOF5Q7j3WwE+jnPhem
1J+3Gc4a/ZMeN2VOa1jk5HryQVfDuVo/dMKJScKtAhAl5dstKMpsDujfhMwtmojw
AD7Od4pkvjhdHhBj1+r+BobHSghFlq9Jf/dhzvGEYDSivtRf1//AajmO23fltEvR
DOb5H+O3VVOLx8XLkZ3rbV/oqJWp22f03xh7av3IkbZm60O51FyalB+Njqsc2wr1
QGPkaPIbqmIy9M91GMOtSdiHfYYV4mwqrQcR9aF5BDgV5eL1exWDC91469TY8c1I
Nyv7IEQb4t2Lig3gqH+hGKEUIq+QQ0ZepEFlCI7yhQ75gItA7LhmrloztXdYA1Ut
DMNRlr0R2nNeRJBrear1pm9kotP0lYH7ij93etgwTt+mqCJQddUxfWzc6Af0eFze
TpZG1i1L5Ca5

Chaque ligne fait exactement 64 caractères, et il y a 26 lignes + 12 caractères, ce qui donne un total de 1676 caractères. À chaque exécution, vous obtenez une nouvelle séquence aléatoire.

7-B) Produire une clef RSA privée.

openssl genrsa  -out %DIRNAME%/Private/Ca.key  -rand %DIRNAME%/Private/Ca.rnd  4096

Nous reprenons la séquence aléatoire que nous avons produit précédemment. 4096 est la taille en bit de la clef privée. Voici ce que nous obtenons dans le fichier ‘Ca.key’ :

Aucun ‘pass phrase’ sera demandé lors de la création de la clef privée. Si vous en désirez un, il suffit d’ajouter l’un des codes d’encryptage ci-après : -aes128 -aes192 -aes256 -camellia128 -camellia192 -camellia256 -des -des3 -idea.

-----BEGIN RSA PRIVATE KEY-----
MIIJKgIBAAKCAgEAvKuydX2Dt0LXdz1B4nJnFmyyRNlDzj1IW6i185qHyfFA+xmu
hLyU767JeVl7/8zuY5L9q+2+mQ8UUhO1JOYTHovbJg0Zvfd+Mk+m0PbjtN9CkT4A
RF2u1iFyb/ai0JqqYc9SMrCKYToo9ktx7oOuN5B5yVhdb9gecEOxPXlEMMjER0QW
qb7qkPAJIB2pkCAesg8FqDQRJBhcUqkaclgERLbdGFwWhk9b3GY1P/F6ff7PG60I
axt7w6/8aNE2meFGM1cRyCdMqkUNpFvfMUAE3X2ITZbagdKFcIcNR5L968gE2dIW
QXm3/rIHC9gLcbepIS4QAipQ8QxEE9s65RJkZ2Ss6mc2WQuy7LFgdSCAcmsFrFVV
t8qGjoFs73kDynVkLEseh7jnxM4G46l6yDzFdW/aJmwSTyxVVBak/xY/ktQN4nX5
NHZ5bMANiaUoOjwR/vp2fxTrimO2tI8cDHeVoztiBm18z6TL+JdsbrVNCfgEMFlO
OYkKYzLYnHKZ66/3UFGuRXElaz6MMbc7mPXASS/Al3TlbWS/UWFiDRfZBQca689i
hzg1FXrYyfOqy4qH/71sR7E7cEC+GfttiqEYufmNzo68Jz+tSGMsJnSGzFubdC4w
1iBMW81usHlSYrvbwvWVklgek6WEw03p7Ec03NO9miuw5GFdSWBGu5/LhcsCAwEA
AQKCAgB7Sg/CKxUJiopWhxcorO2kf782smtWuEEydFsCJzcYxaha7ftXDgydW7CY
tdsL25TkSMevtBpa1rnGsM4soJRZ37aDdQgfVT2IDvjJkKxYI5TSaJuwETARCaZI
d/kJLCiu5dWm/ipPQrxFxiNbY31THfwXkMDuN2Icpn+J1lazMl7g2yOcJQAPWmv8
KqYFYpfsb1iZA/03gxvBgHOhyNZxOLXeFz844V779WZStLAA6aPZSAc6RqlnxPbC
YAS4JbfEEN+z1cqJcbpqbwa4nkcPndqWKT/8md9NG1OYM/vuObTBykF0499Sdm+Y
U8OWuhexcPJRF+nwur055Ibl7lDhB3D5GSXymdJG3JA8hIZ/51+cRLBQoPfegn48
V9FwWfXTV+NmSM6O8eTF6FxzwgiLRD8u/9JGWZVL/YleUCqg1bQzy4Rqqme2zKw1
eu7tQjy9rf+LLyv0BILX2q++jw7azxW3lv3KlpMeHRGBGuQbNZ9bAv+cIYj2j+FB
xL8LNWHF3JhSjQvdw8pJEZaEPOxF3nRb8OWDTtP8811Ou3YmPRgcvXpxmaF4oumj
ZJimeLVueYB1Xf8vjn7sZcNjXflVJrK/9c80YZXRRCWBYcEUl/qP4xErk8SXkgNk
OK472pssJl4q/LHbhdFvUNguQmU8dsoMWJbJHLKVhzWEH8SX8QKCAQEA7wJXQq+M
SsQ4Rm83GijyTXMzps77BdbqrlqTrsCEX2ngG6qK61Dm7fqmdFGCgIfwKVkN7ACu
wdNAuojt14niQyPQEOTMlJKhdtvs6PgXSEqXKFinb4WFr85XJhLZvUXvrZHI739R
ftkZakfpgNwg7EOilr0hkd5jQn6AayQpCg1IFB0uywQUm1rQ5gwG++up8zrbnRKF
idpD4U5z/1pgZBBge8JxehCW7t87bGSKoYJ/3cunUaEVkn8BZ12cHUTDW+dKoWde
OSrtzMgzEZio5QMPmXDn+5eIEJJ/L9HrfqZi+uR9pjwnL1ZXth0vD9irqr14YvT8
cID2j9KfjexBfwKCAQEAyhVC2YxcTY7axwcjVft3L4Uhog2radWZ72zkNlo6H0QX
F+WGx1HWhRro1PpuPLXzeaJ3tOp1uW1xd6WK+ibv0eKvup53EqEZYD/o8ZQFufZ8
eabOy3tBhFH57r88IcCoB4QLcVtqoomHb1RspWyCmiMWA1lf+kwx6D9R1AXxMx/9
wOIdcYARW7YmM2bLBKvHHXkVJ20FW9yBh+fgcM26xVCp08SHxcBwONLeDdTpEO3V
MX38kgb+xRD9pps0bwV/5iLoKEzMRcaXBaFhUgK5O83MWxIelLP+gqfcz2YpKmWG
zRF08TgI4B+7ehsNU1zSDh8vaM83OEuyvsoMeOxJtQKCAQEA08yjPzkJfYf8xo3v
qoL2laOs9fkdgcM+HFuv24BGzbapHls21+jNe75Om21P1E6iiEGekLDaLHDkP2jw
O7y4gP7PdukKUe7OnuGtQ5X2K93NrbdCSRVtrqmPmPHDenLrPkieY33T3jDM0N4B
Emv/0N7uyd24Tedg1p/7dPaKV5oFca2atdVb3X/Q9stZtQzVgfF6g+rR46ND2/kF
2hdgq8vHdGSO4riox+2SXy+Jmi5m2UmLcE7rKvLZb5wIp/czl9GS1Q0g9lAQgxQ2
DTXXFXps7HCdYtqZfPYVN28y3PzdYa/xmMpdfxloiL274rMDDT7x2991hM0DsdfY
BJCESQKCAQEAmm5DBwNnqnGIKV8AFv4z5+HCgRgXLarpl3nMsOik0C31w/JI3Ftj
J5cX5WJ4Cfc2WHbbKiueyZSkiL2+hkppLSkiB+h/sIHiZZaRisQG2EVQfJsIH6JS
wC7xZA1Kg7S58/xpzjgBNrMJCAApgwV4jRhRA0Ayw5Gk9golm3TrDZneDp/9xjYL
jd2WNePRNAGeCZz1mIqM9NV/O3/tGeduWsm47rea1nmoiRREU6eocKKAMPFJqcKk
wa6pWL/1Av7d7d4xMlL2LECGOuxH9idUrSopiFNBgXxH/EsRyIEW5mpt6Jr1lj2v
Mq+tUrQHq/QcJmSYk2z/kwruTzUS8PoJnQKCAQEAm8rTSczTMYDnSXYknz0XPdsf
s7boT8ipibk36PdS4Z+53zgsoJ2AgUnZY22GvVxqKF6ttHdy2tpQpMC8DqovvLJ0
IJ+EA+e5b/xCz3oLdMau1UBOySgRo+wHmIOQSDG1JZMEzfBtjBLxCRx2ZWlJQHcc
YoD7W92cV3uIIufndvmUqo+yRu0ZoR8Np+3kAk+hfzdQdWFFJ6YiL6cRZszwnxzG
F0qZyE7I36QSV62fIvKR6r0L5t5kXXhHnDMMBH/4jYOiMku751M8Qn32gPEfRPYo
CenV/axKgor/NzpmP02BkwmOLIY86AcF6rzHb38KLX4vWrAIMchq42O1guMopg==
-----END RSA PRIVATE KEY-----

Nous avons deux lignes servant de prologue et d’épilogue à chaque contenu, dont le message commence et se termine toujours par cinq tirets. Nous retrouverons ce même format dans les autres fichiers produit par la commande ‘OPENSSL’.

7-C) Création d’une demande de signature.

openssl req  -new  -sha256  -key %DIRNAME%/Private/Ca.key  -out %DIRNAME%/Cacerts/Ca.csr
  -subj "/C=FR/ST=Aquitaine/L=/O=Artemus & Cie/CN=Artemus & Cie"

Pour créer cette demande de signature, nous nous servons de la clef privée créé précédemment. Nous renseignons cette demande avec les caractéristiques qui nous intéresse. Ici, mon futur certificat se nommera ‘Artemus & Cie’. Voici la requête que nous obtenons dans le fichier ‘Ca.csr’ :

-----BEGIN CERTIFICATE REQUEST-----
MIIEqjCCApICAQAwZTELMAkGA1UEBhMCRlIxEjAQBgNVBAgMCUFxdWl0YWluZTES
MBAGA1UEBwwJTW9udGlnbmFjMRYwFAYDVQQKDA1BcnRlbXVzICYgQ2llMRYwFAYD
VQQDDA1BcnRlbXVzICYgQ2llMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
AgEA0f4LWQPPRu33LiWiQQKukJfVfKLNPouykc90FL7CrW8ymaayW+0nj/FVrca6
016a3CC2YiYq/FQabvKMwsruo+BzmvDYNY7kNIXpPFeadQKxWTkssCVvGICeZT54
8W685uKjFIvBZLqP5ncNv6LZrFS6/vZTt9TVFuGAzNje9vBH4Ry4cqnWPbXc/pFi
/UbYxdD/NbZQHZCVOVZCDeivYiiGlZLyutbi39CgXtqIztj5ldOvemexx5aXGyba
SO811wgZMjBIliwnUmNpRAUMWWLLSVHHpU58xTKcUTeNUnxT+MiDdOUKhr3tXrsC
aT0XfMRHxnnnc33WNLXhJr9yac44dUZzTXf0cpmSvwBmjTNU2WJB72YnrLfhoV7U
4QfTB3kFzg8/i59Qlv3WBaLn/0+FOIhgx5gKg0blqD4+WqNNqZ8GchfzM2Yp1UYg
Ol8gP5Kf2Y3uTxsN9LGMF4XdZoj/AEtxqZupW6VjpSYJnEwvJIIQKRn7KT2tU/lr
x+ys8BDq9+BjmuAJ1KF1FIUy388dTZO51EQdf10UYYUXQ6Rvzr1UYIMr/qoRGz0+
QxGM03IBbeRVC6jmxYBVUIbNiX95W9pPWz4kSPf7p8Gc1X9ucN/Ols3yivMM4oE1
DLctKfdA7BkyU2mNn9/7L+g1FDWknDk88d2wTGdYiJzvLZsCAwEAAaAAMA0GCSqG
SIb3DQEBCwUAA4ICAQCqtSo7jS80reISJ1dG5pj7ufLeSqoCj1m8H7oqpWV0Vt+l
CRw/oFw7n4B2lzhLFKD+uYYxGhL0aWhyMMqCCCZR3r08b8HRZtmx17RW3o1YdU/z
z2X6b1Bue8XytgUGiKbeZQh2dByVrDhMZ2XVkkqbr65U8t6XujjUPMj3FnvtSFgI
KLqWDD9KTG9TnuL7exUXW6hSepZpUnRI64kyJcVA97EZQjg7+K1YhuQOftL58qrZ
PfHiuBfS4ht4W9NyPVFaGMnWlE556AdR+UJ925G4lawOhWoqWN9ZplB4/90rbVDS
PeBf2m2aMYbkcceIMthRxyWItyQrWZdQPlWXR+w+J04hljIvqR1dgInmwz1qyS3V
6bA09EiM/nNJB0pp3yF2Ks7Ymh/pYzGkDLBG5IaJcpFroUTApWAbQiTjtUZmXRyP
rVz/A7gTTSUbvRLZ8ZPZbKMjQoyStBS+dXpeLvphpfRPMM2asxc1gEuYvDY4CvWf
Qyb7wVbTS+7/MU6s9/Po7pdUEID5jvChgj+AT11BlRTDhdcwTZ2tfL4QtU5ZK3w8
A84/kEN4pZBAuk5QUHoloythGDFRwbwU5hbfw6jEKNxWJBHdhNBzPkEht1F17Y7s
wx1snWovzAonNmBTN7mHCo12aF6HHzM0TRz96c+2TUAaGkGgvENJwMrnthoL1g==
-----END CERTIFICATE REQUEST-----

7-D) Création d’un certificat auto-signé.

openssl x509  -req  -days 4383  -sha256  -in %DIRNAME%/Cacerts/Ca.csr
  -signkey %DIRNAME%/Private/Ca.key  -out %DIRNAME%/Cacerts/Ca.crt

Pour créer ce certificat auto-signé, nous nous servons de la demande de signature et de la clef RSA privée. En fait, la demande de signature n’était pas nécessaire mais nous avons préféré décomposer les étapes afin de comparer le résultat lors de la création d’un certificat client signé, justement ce certificat d’autorité.

-----BEGIN CERTIFICATE-----
MIIFRjCCAy4CCQDkCFUxKTZCzzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJG
UjESMBAGA1UECAwJQXF1aXRhaW5lMRIwEAYDVQQHDAlNb250aWduYWMxFjAUBgNV
BAoMDUFydGVtdXMgJiBDaWUxFjAUBgNVBAMMDUFydGVtdXMgJiBDaWUwHhcNMTUw
MzI5MTYwMTM0WhcNMjcwMzI5MTYwMTM0WjBlMQswCQYDVQQGEwJGUjESMBAGA1UE
CAwJQXF1aXRhaW5lMRIwEAYDVQQHDAlNb250aWduYWMxFjAUBgNVBAoMDUFydGVt
dXMgJiBDaWUxFjAUBgNVBAMMDUFydGVtdXMgJiBDaWUwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQDR/gtZA89G7fcuJaJBAq6Ql9V8os0+i7KRz3QUvsKt
bzKZprJb7SeP8VWtxrrTXprcILZiJir8VBpu8ozCyu6j4HOa8Ng1juQ0hek8V5p1
ArFZOSywJW8YgJ5lPnjxbrzm4qMUi8Fkuo/mdw2/otmsVLr+9lO31NUW4YDM2N72
8EfhHLhyqdY9tdz+kWL9RtjF0P81tlAdkJU5VkIN6K9iKIaVkvK61uLf0KBe2ojO
2PmV0696Z7HHlpcbJtpI7zXXCBkyMEiWLCdSY2lEBQxZYstJUcelTnzFMpxRN41S
fFP4yIN05QqGve1euwJpPRd8xEfGeedzfdY0teEmv3Jpzjh1RnNNd/RymZK/AGaN
M1TZYkHvZiest+GhXtThB9MHeQXODz+Ln1CW/dYFouf/T4U4iGDHmAqDRuWoPj5a
o02pnwZyF/MzZinVRiA6XyA/kp/Zje5PGw30sYwXhd1miP8AS3Gpm6lbpWOlJgmc
TC8kghApGfspPa1T+WvH7KzwEOr34GOa4AnUoXUUhTLfzx1Nk7nURB1/XRRhhRdD
pG/OvVRggyv+qhEbPT5DEYzTcgFt5FULqObFgFVQhs2Jf3lb2k9bPiRI9/unwZzV
f25w386WzfKK8wzigTUMty0p90DsGTJTaY2f3/sv6DUUNaScOTzx3bBMZ1iInO8t
mwIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQAZFYHeWlkGoYwBXxZHQCnWazRzETuV
Mut8r+DRVPmQzf3KbT1/ka5/+darR3VK+tI7nch7os8fCWLKnT3kMF6xe9Epo5aX
FmfLfleYnAE5h+njQrOWt+Y4Nsiw7P3NTWvmTaKglT21Ez5x0L3vAO235nOUz0aR
zAGn5mudbOYeeYhJbBZa0CrtSKowmaBDAef9RBrVltqGyF0oG/SLlEv5/p5v8KL2
lpB/SgL0Ijb+0takgaKikgwEweicFu5h3LrMGe6VQ2cr6ICnniu89b9LBgp+HbZ7
cIJjIJlya1QoMJNkFdHH9rXqlLz8R5721AjM4QzsCPJ7FtVSU5i9poHx7QmuFY46
lH41qknOqcu7lKmRA/Embmwe9q8Oxc2P3V1DLdI0I8F9FJZQifL7QRRO33r+aQvt
Ig3jCQ0UyEnuNg/Ytf1Db/3vcAVxz6kDt++/HGy2dhwjnV5Cf04HvZW7melppXiA
xO3+7d/WrmzjAVOHKanxkf+dO/sl6QTnMLaQ9knwEjPCHuHE80zBTI6jLWUaiKaB
OF9p+qnos9O0a/rCu4tSzAqSqRDmj/RpjVWsfgP2lR+4pbnLe2LJ7uUe0PFTmm+t
EeY3X1WQwnEGQHQ8iJeH4HsJIsY88Zm0/6sRsYF+xcsvJfkpS73Rgxv55omdl348
41Q9xOPgFRz2XQ==
-----END CERTIFICATE-----

Ce certificat qui est un ‘CA’ (certificate Authority en anglais) va nous servir pour signer le certificat client que nous allons créer un peu plus bas dans ce didacticiel.

7-E) Visualisation du certificat CA.

openssl x509  -in %DIRNAME%/Cacerts/Ca.crt  -noout  -text

Dans cet exemple, nous obtenons la visualisation du certificat CA auto-signé que nous avons produit ptécédemment. Voici le résultat obtenu :

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            e4:08:55:31:29:36:42:cf
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=FR, ST=Aquitaine, L=, O=Artemus & Cie, CN=Artemus & Cie
        Validity
            Not Before: Mar 29 16:01:34 2015 GMT
            Not After : Mar 29 16:01:34 2027 GMT
        Subject: C=FR, ST=Aquitaine, L=, O=Artemus & Cie, CN=Artemus & Cie
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    00:d1:fe:0b:59:03:cf:46:ed:f7:2e:25:a2:41:02:
                    ae:90:97:d5:7c:a2:cd:3e:8b:b2:91:cf:74:14:be:
                    c2:ad:6f:32:99:a6:b2:5b:ed:27:8f:f1:55:ad:c6:
                    ba:d3:5e:9a:dc:20:b6:62:26:2a:fc:54:1a:6e:f2:
                    8c:c2:ca:ee:a3:e0:73:9a:f0:d8:35:8e:e4:34:85:
                    e9:3c:57:9a:75:02:b1:59:39:2c:b0:25:6f:18:80:
                    9e:65:3e:78:f1:6e:bc:e6:e2:a3:14:8b:c1:64:ba:
                    8f:e6:77:0d:bf:a2:d9:ac:54:ba:fe:f6:53:b7:d4:
                    d5:16:e1:80:cc:d8:de:f6:f0:47:e1:1c:b8:72:a9:
                    d6:3d:b5:dc:fe:91:62:fd:46:d8:c5:d0:ff:35:b6:
                    50:1d:90:95:39:56:42:0d:e8:af:62:28:86:95:92:
                    f2:ba:d6:e2:df:d0:a0:5e:da:88:ce:d8:f9:95:d3:
                    af:7a:67:b1:c7:96:97:1b:26:da:48:ef:35:d7:08:
                    19:32:30:48:96:2c:27:52:63:69:44:05:0c:59:62:
                    cb:49:51:c7:a5:4e:7c:c5:32:9c:51:37:8d:52:7c:
                    53:f8:c8:83:74:e5:0a:86:bd:ed:5e:bb:02:69:3d:
                    17:7c:c4:47:c6:79:e7:73:7d:d6:34:b5:e1:26:bf:
                    72:69:ce:38:75:46:73:4d:77:f4:72:99:92:bf:00:
                    66:8d:33:54:d9:62:41:ef:66:27:ac:b7:e1:a1:5e:
                    d4:e1:07:d3:07:79:05:ce:0f:3f:8b:9f:50:96:fd:
                    d6:05:a2:e7:ff:4f:85:38:88:60:c7:98:0a:83:46:
                    e5:a8:3e:3e:5a:a3:4d:a9:9f:06:72:17:f3:33:66:
                    29:d5:46:20:3a:5f:20:3f:92:9f:d9:8d:ee:4f:1b:
                    0d:f4:b1:8c:17:85:dd:66:88:ff:00:4b:71:a9:9b:
                    a9:5b:a5:63:a5:26:09:9c:4c:2f:24:82:10:29:19:
                    fb:29:3d:ad:53:f9:6b:c7:ec:ac:f0:10:ea:f7:e0:
                    63:9a:e0:09:d4:a1:75:14:85:32:df:cf:1d:4d:93:
                    b9:d4:44:1d:7f:5d:14:61:85:17:43:a4:6f:ce:bd:
                    54:60:83:2b:fe:aa:11:1b:3d:3e:43:11:8c:d3:72:
                    01:6d:e4:55:0b:a8:e6:c5:80:55:50:86:cd:89:7f:
                    79:5b:da:4f:5b:3e:24:48:f7:fb:a7:c1:9c:d5:7f:
                    6e:70:df:ce:96:cd:f2:8a:f3:0c:e2:81:35:0c:b7:
                    2d:29:f7:40:ec:19:32:53:69:8d:9f:df:fb:2f:e8:
                    35:14:35:a4:9c:39:3c:f1:dd:b0:4c:67:58:88:9c:
                    ef:2d:9b
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         19:15:81:de:5a:59:06:a1:8c:01:5f:16:47:40:29:d6:6b:34:
         73:11:3b:95:32:eb:7c:af:e0:d1:54:f9:90:cd:fd:ca:6d:3d:
         7f:91:ae:7f:f9:d6:ab:47:75:4a:fa:d2:3b:9d:c8:7b:a2:cf:
         1f:09:62:ca:9d:3d:e4:30:5e:b1:7b:d1:29:a3:96:97:16:67:
         cb:7e:57:98:9c:01:39:87:e9:e3:42:b3:96:b7:e6:38:36:c8:
         b0:ec:fd:cd:4d:6b:e6:4d:a2:a0:95:3d:b5:13:3e:71:d0:bd:
         ef:00:ed:b7:e6:73:94:cf:46:91:cc:01:a7:e6:6b:9d:6c:e6:
         1e:79:88:49:6c:16:5a:d0:2a:ed:48:aa:30:99:a0:43:01:e7:
         fd:44:1a:d5:96:da:86:c8:5d:28:1b:f4:8b:94:4b:f9:fe:9e:
         6f:f0:a2:f6:96:90:7f:4a:02:f4:22:36:fe:d2:d6:a4:81:a2:
         a2:92:0c:04:c1:e8:9c:16:ee:61:dc:ba:cc:19:ee:95:43:67:
         2b:e8:80:a7:9e:2b:bc:f5:bf:4b:06:0a:7e:1d:b6:7b:70:82:
         63:20:99:72:6b:54:28:30:93:64:15:d1:c7:f6:b5:ea:94:bc:
         fc:47:9e:f6:d4:08:cc:e1:0c:ec:08:f2:7b:16:d5:52:53:98:
         bd:a6:81:f1:ed:09:ae:15:8e:3a:94:7e:35:aa:49:ce:a9:cb:
         bb:94:a9:91:03:f1:26:6e:6c:1e:f6:af:0e:c5:cd:8f:dd:5d:
         43:2d:d2:34:23:c1:7d:14:96:50:89:f2:fb:41:14:4e:df:7a:
         fe:69:0b:ed:22:0d:e3:09:0d:14:c8:49:ee:36:0f:d8:b5:fd:
         43:6f:fd:ef:70:05:71:cf:a9:03:b7:ef:bf:1c:6c:b6:76:1c:
         23:9d:5e:42:7f:4e:07:bd:95:bb:99:e9:69:a5:78:80:c4:ed:
         fe:ed:df:d6:ae:6c:e3:01:53:87:29:a9:f1:91:ff:9d:3b:fb:
         25:e9:04:e7:30:b6:90:f6:49:f0:12:33:c2:1e:e1:c4:f3:4c:
         c1:4c:8e:a3:2d:65:1a:88:a6:81:38:5f:69:fa:a9:e8:b3:d3:
         b4:6b:fa:c2:bb:8b:52:cc:0a:92:a9:10:e6:8f:f4:69:8d:55:
         ac:7e:03:f6:95:1f:b8:a5:b9:cb:7b:62:c9:ee:e5:1e:d0:f1:
         53:9a:6f:ad:11:e6:37:5f:55:90:c2:71:06:40:74:3c:88:97:
         87:e0:7b:09:22:c6:3c:f1:99:b4:ff:ab:11:b1:81:7e:c5:cb:
         2f:25:f9:29:4b:bd:d1:83:1b:f9:e6:89:9d:97:7e:3c:e3:54:
         3d:c4:e3:e0:15:1c:f6:5d

Nous constatons que ce certificat contient une clef public.

7-F) Extraction de la clef publique.

openssl rsa  -in %DIRNAME%/Private/Ca.key  -pubout  -out %DIRNAME%/Private/Ca.pbc

Nous suffixons le fichier contenant la clef publique des trois lettres ‘PBC’ extraite du mot PuBliC en anglais. Voici le contenu de ce fichier :

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0f4LWQPPRu33LiWiQQKu
kJfVfKLNPouykc90FL7CrW8ymaayW+0nj/FVrca6016a3CC2YiYq/FQabvKMwsru
o+BzmvDYNY7kNIXpPFeadQKxWTkssCVvGICeZT548W685uKjFIvBZLqP5ncNv6LZ
rFS6/vZTt9TVFuGAzNje9vBH4Ry4cqnWPbXc/pFi/UbYxdD/NbZQHZCVOVZCDeiv
YiiGlZLyutbi39CgXtqIztj5ldOvemexx5aXGybaSO811wgZMjBIliwnUmNpRAUM
WWLLSVHHpU58xTKcUTeNUnxT+MiDdOUKhr3tXrsCaT0XfMRHxnnnc33WNLXhJr9y
ac44dUZzTXf0cpmSvwBmjTNU2WJB72YnrLfhoV7U4QfTB3kFzg8/i59Qlv3WBaLn
/0+FOIhgx5gKg0blqD4+WqNNqZ8GchfzM2Yp1UYgOl8gP5Kf2Y3uTxsN9LGMF4Xd
Zoj/AEtxqZupW6VjpSYJnEwvJIIQKRn7KT2tU/lrx+ys8BDq9+BjmuAJ1KF1FIUy
388dTZO51EQdf10UYYUXQ6Rvzr1UYIMr/qoRGz0+QxGM03IBbeRVC6jmxYBVUIbN
iX95W9pPWz4kSPf7p8Gc1X9ucN/Ols3yivMM4oE1DLctKfdA7BkyU2mNn9/7L+g1
FDWknDk88d2wTGdYiJzvLZsCAwEAAQ==
-----END PUBLIC KEY-----

7-G) Conclusion.

Tout ce dont nous avons besoin est le fichier noté ‘Ca.crt’ pour, d’une part signer le certificat client et d’autre part l’introduire dans le répertoire ci-après :

SSLCACertificateFile    "${Version_Apache}/conf/Certificat/Ca/Ca.crt"

Dans le cas de la signature du certificat serveur, nous avons également aussi besoin de la clef privée noté ‘Ca.key’.

8) Création du certificat serveur, client et de la clef privée.

Je ne vais pas détailler à nouveau les commandes que nous venons de voir, car nous allons devoir les utilise pour créer nos certificats. Entre autre, créer un nombre pseudo-aléatoire (paragraphe 7-A) où il suffit de changer la taille de ce qui sera produit (mettez autre que chose que 1257) et créer une clef privée (paragraphe 7-B). Il faut juste renommer les fichiers en remplaçant ‘Ca’ par ‘Server’.

 

8-A) Création d’une demande de signature pour certificat serveur.

openssl req  -new  -sha256  -key %DIRNAME%/Server/Server.key  -out %DIRNAME%/Server/Server.csr
  -subj "/C=FR/ST=Aquitaine/L=/O=Artemus & Cie/CN=Localhost"

C’est pratiquement identifique au paragraphe 7-C). Afin de faire le lien avec le certificat CA, nous mettons l’identité du CA qui est ‘Artemus & Cie’. Nous précisons aussi pour quel site nous créer ce certificat. Ici, il s’agit de ‘localhost’.

8-B) Création d’une demande de signature pour certificat serveur.

openssl x509  -req  -days 4383  -sha256  -in %DIRNAME%/Server/Server.csr  -CA %DIRNAME%/Cacerts/Ca.crt
  -CAkey %DIRNAME%/Private/Ca.key  -CAcreateserial  -out %DIRNAME%/Server/Server.crt

Nous retrouvons la demande de signature qui est le fichier ‘server.csr’. Afin de faire le lien avec le certificat CA, nous indiquons le certificat CA de nom ‘Ca.crt’ et la clef privée de nom Ca.key’.

Je ne me suis pas trop compliqué l’existence, puisque j’ai repris la même durée que pour le certifricat CA, c’est-à-dire une période de validité de douze ans, qui correspond à une période de quatre années bisextiles, soit 4383 jours.

8-C) Création du certificat client.

openssl pkcs12  -export  -in %DIRNAME%/Server/Server.crt  -inkey %DIRNAME%/Server/Server.key
  -out %DIRNAME%/Server/Server.pfx  -clcerts  -descert  -name "Client Localhost Certificate"

Nous créons le certificat client à partir du certificat serveur, en effectuant une conversion au format PFX ou P12. Nous devons préciser quelques paramètres comme ci-après :

fleche« -export » permet de faire cette conversion.

fleche« -clcerts » définit qu’il s’agit d’un certificat client.

fleche« -descert » triple encryptage ‘DES’ du certificat afin de le rendre illisible.

fleche« -name » nous donnons un nom à ce certificat.

C’est ce certificat que nous nommons client ! PFX ou P12 sont synonymes. Il faut savoir qu’un mot de passe sera demandé lors de la création de ce certificat client. Il faudra s’en souvenir.

8-D) Visualisation du certificat client.

openssl pkcs12  -info  -passout file:./%DIRNAME%/Other/Password.txt  -in %DIRNAME%/Server/Server.pfx

Nous retrouvons dans la fichier ‘password.txt’ le mot de passe que nous avons saisi à l’étape précédent.

Cette commande est le pendant du paragraphe 7-E).

8-E) Conclusion.

Nous avons créé tous nos fichiers en les préfixant avec le mot « Server » afin de les distinguer du « Ca » qui est un certificat à part.

Voici les certificats que nous avons créé dans cette deuxième partie :

flechecertificat serveur de nom « server.crt » que nous renommons en « localhost.crt ».

flecheclef privée du certificat serveur de nom « server.key » que nous renommons en « localhost.key ».

flechecertificat client de nom « server.pfx ». Nul besoin de changer son nom.

Nous rangeons les deux fichiers préfixés ‘localhost’ dans le répertoire ci-après :

SSLCertificateFile      "${Version_Apache}/conf/Certificat/Site/localhost.crt"
SSLCertificateKeyFile   "${Version_Apache}/conf/Certificat/Site/localhost.key"

Ne pas oublier de « relancer les services » de WampServer après avoir terminé vos modifications dans Apache, même pour l’introduction des certificats dans les répertoires ci-dessus. Normalement, la création de nos certificats est terminée.

9) Test du protocole HTTPS pour le site ‘localhost’.

Pour l’instant, tout ce que nous venons de faire, c’est de créer nos certificats, et de les ranger dans les répertoires utilisés par Apache, c’est-à-dire le serveur Web.

Si dans le navigateur « Google Chrome », nous tappons dans la barre des adresses « http://localhost », vous devez accéder au site ‘localhost’. C’est tout à fait normal car vous n’utilisez pas le protocole de sécurité ‘https’.

Si nous tappons maintenant « https://localhost », cette fois-ci, Google Chrome vous indique le message d’erreur suivant : « Erreur de connexion SSL ». C’est tout à fait normal car vous demandez d’accéder à un site sécurisé sans que le certificat client soit reconnu sur votre ordinateur.

Si nous faisons le même test avec le navigateur « Mozilla Firefox », nous avons le même problème mais avec un autre message :

message d'erreur Mozilla FirefoxPour résoudre ce problème, nous devons appliquer le rangement du certificat ‘CA’ selon le navigateur.

9-A) Le navigateur « Google Chrome ».

Ce navigateur, comme « Opera » ou Microsoft Internet Explorer » ou encore « Safari » utilise les magasins des certificats de Windows pour vérifier les autorisations. Pour accéder à l’utilitaire de Windows qui gère ces magasins, vous devez dans l’invite de commandes, tapez la ligne suivante :

certmgr.msc

Un magasin en particulier nous intéresse :

flecheAutorités de certification racines de confiance / certificats.

Nous allons détailler comment ranger notre certificat.

9-A-1) Le magasin « Autorités de certification racines de confiance ».

Nous allons ranger le certificat ‘CA’, qui se trouve dans le répertoire « /Certificats/Cacerts » sous le nom de « Ca.crt » dans le magasin « Autorités de certification racines de confiance ». Il suffit de cliquer avec le bouton droite de la souris sur ce certificat et cliquer sur « installer le certificat ».

On coche « placer tous les certificats dans le magasin suivant ». Et ce magasin est « autorités de certification racines de confiance », et on valide. Une deuxième validation vous sera demandé, genre avertissement, en précisant les caractéristiques de ce certificat Ca, comme ci-après :

Avertissement certificat CASi vous refaites le même test avec le navigateur « Google Chrome », on vous demande de sélectionner le certificat client et cette fois-çi, vous obtenez le cadenas vert ! Ca y est, vous avez un site sécurisé.

9-B) Le navigateur « Mozilla Firefox ».

Après voir fait le rangement des certificats dans les magasins de Windows, nous faisons le même test avec le navigateur « Mozilla Firefox » et nous obtenons le message d’anomalie déjà signalé.

Pourquoi avons-nous ce message ? Qu’est-ce que nous avons oublié de faire ?

Il faut savoir que « Mozilla Firefox » n’utilise pas les magasins de windows mais a ses propres magasins, que l’on trouve en tapant dans le navigateur sur l’onglet « outils », puis « options », sur « avancé » et enfin sur l’onglet « certificats ». Nous cliquons maintenant sur « afficher les certificats ».

9-B-1) Le magasin « autorités ».

Comme au paragraphe 9-A-1), pour importer le certificat ‘CA’, nous devons cliquer sur le bouton « importer » qui se trouve en bas de la page.

Une demande de renseignement vous est demandé comme ci-après :

Information complémentaireNous cochons les trois cases, puisque nous sommes en test local sur notre ordinateur.

Nous faisons le test et cette fois-ci, nous avons la confirmation de la sélection du certificat, comme dans le cas de « Google Chrome », comme ci-après :

Demande de confirmationNous acceptons, et nous avons l’accès à notre site « localhost » sécurisé.

À la différence de « Google Chrome », nous pouvons ne plus obtenir cette confirmation, en venant dans le paragraphe « lorsqu’un serveur demande mon certificat personnel : », on coche alors sur la case « en sélectionner un automatiquement ».

9-C) Nécessité d’avoir le certificat client et le certificat Ca.

Nous avons réussi à obtenir un accès avec le protocole « https à notre site « localhost » d’une manière sécurisé sur le navigateur « Google Chrome  » et sur Mozilla Firefox ». C’était le but recherché de ce didacticiel.

Pour obtenir un bon fonctionnement, nous avons besoin de nos deux certificats, et surtout que ceux-ci puisse être vu d’une manière hiérarchisée, comme ci-après :

Lien entre certificatsC’est ce lien qui permet la reconnaissance et la validation du certificat client vis-à-vis du certificat d’authorité (CA). Sans cela, notre certificat client ne serait pas valide.

Pour nos tests, il existe une autre solution, qui consiste à faire de nos deux certificats, un seul qui sera à la fois signé et d’authentification et que l’on nomme auto-signé.

9-D) Nécessité d’avoir un certificat officiel.

Depuis quelque temps, il est possible d’avoir un certificat de nom Let’s Encrypt, qui est gratuit. Oui, vous avez bien lu, il est gratuit.

Ca durée de vie n’excède pas les trois mois, et une alerte au bout de 60 jours, vous demande de le renouveller.

L’avantage de ce certificat SSL est que le CA se trouve sur tous les ordinateurs du monde sous le nom de Let’s Encrypt Autority X3 qui se trouve dans le magasin des cetrtificats intermédiaire.

10) Les outils qui m’ont permis de faire ce test.

Afin de faire ce didacticiel, je mets à votre disposition les fichiers qui m’ont servi à créer less certificats. Vous pouvez modifier ces fichiers afin de créer les votre.

flecheopenssl.cnf

flechelancer.bat

De même, je vous donne aussi le descriptif à installer dans le fichier ‘httpd.conf’, à savoir celui du paragraphe 4-B) et celui du 4-C).

flecheconfiguration du protocole SSL

flecheconfiguration du site ‘Localhost’

11) Conclusion.

Ce didacticiel est un peu plus complet que ce que j’ai pu trouvé sur le net car fréquemment, on n’aborde que la question de la création des certificats sans parler ni du paramétrage, ou très peu, ni du fichier ‘httpd.conf’, ni où ranger ces certificats dans votre environnement.

Pour un usage local, ce didacticiel répond à toutes vos demandes d’un site sécurisé. Comme nous venons de le voir, on peut créer nos propres certificats.

Mais si maintenant, vous avez besoin de rendre accessible votre site depuis internet, vous aurez besoin d’un certificat officiel de nom Let’s Encrypt.

Si vous avez des réponses à mes questions, vous pouvez me joindre par l’onglet contact afin de venir compléter ce didacticiel.

Doingbuzz, le site d’actualités

L’information est la clé du succès. L’avoir en temps réel est l’ultime défi de tous les sites web. Doingbuzz.com s’inscrit dans la vision d’être le leader en matière d’information , d’actualité, d’offre d’emploi , de bourse et s’illustre comme une agence de publicité… Aujourd’hui, on vous fait un petit retour sur le parcours admirable de votre média préféré.

 

 

Comment est né Doingbuzz ?

 

Doingbuzz a fait ses débuts dans l’année 2015. Le média fête ses cinq années d’existence en cette année. Il est lourdement visité chaque jour et a de nombreux abonnés qui rendent réellement son importance de plus en plus capital . Les informations qu’il fournit donnent des nouvelles à temps sur l’actualité de chaque pays. Quelque soit ce qui se passe, Doingbuzz.com s’efforce à rendre compte et à mettre à la lumière du jour toute information, actualité, nouvelle dans le monde. Les informations que le média met à disposition s’inscrivent dans tous les domaines d’actualité : la politique, le sport, la religion, l’actualité people, etc.

 

 

Les opportunités offertes par Doingbuzz

 

Doingbuzz vous propose une panoplie d’offres d’emploi. Ces offres s’élargissent non seulement en Afrique mais aussi à l’extérieur du continent. Ceci est sûrement traduit par le partenariat avec plusieurs autres entreprises afin de produire de la richesse et de réduire le chômage. Toute personne diplômée, grâce à Doingbuzz, peut avoir la possibilité de trouver de l’emploi sans trop de difficulté. Doingbuzz s’investit donc dans la lutte contre le chômage en Afrique. Le média s’investit également dans le développement intellectuel des jeunes à travers la culture et l’information. Les nombreuses bourses d’études proposées sur le site aident beaucoup de jeunes. Ces derniers se voient ainsi dans la capacité de faire des études, de pouvoir s’instruire et, d’une manière ou d’une autre, de pouvoir contribuer au développement efficace de leur pays en particulier et de l’Afrique en général.

 

Doingbuzz permet également le développement des activités des entreprises grâce à des publicités, en passant de façon régulière des produits fabriqués par les producteurs et qui pourraient intéresser les consommateurs. Dans cet objectif, le média s’inscrit plus dans le domaine commercial. Il fait partie des premiers sur l’exclusivité et tout ce qui est sujet brûlant.

 

 

Doingbuzz s’efforce de fournir l’information en temps réel. Aujourd’hui, Doingbuzz, c’est plus d’un million de visites par mois et plus de 100.000 par jour.

Comment générer une clé SSH facilement et avec succés

Introduction

Dans ce tutoriel, vous apprendrez à générer une clé SSH sur votre périphérique local et à utiliser la clé générée pour se connecter à un serveur distant. Cette méthode est plus pratique et fournit une manière plus sécurisée de se connecter au serveur / machine distante que d’utiliser simplement un mot de passe.

 

Ce dont vous aurez besoin

Avant de générer une clé SSH, assurez vous d’avoir les éléments suivants:

  • Accès à votre appareil local.
  • Accès à l’appareil distant.
  • Une machine compatible avec la connexion SSH.

Étape 1 – Génération des clés SSH

Vous pouvez générer et configurer les clés RSA sur un système Linux / Unix en utilisant n’importe quel Terminal/console en local.

Après être entré dans le Terminal , vous serez conduit à une fenêtre similaire à celle-ci:

terminal linux

Ici, vous pouvez commencer à écrire les commandes :

La première chose que vous devez faire est de générer la clé sur votre machine locale. Vous pouvez le faire avec cette simple commande:

ssh-keygen -t rsa

Une fois que vous aurez entré cette commande, quelques questions apparaîtront:

Enter file in which to save the key (/home/james/.ssh/id_rsa):

En général, il est recommandé de laisser tel quel (appuyez sur ENTRÉE sans taper quoi que ce soit) afin que le générateur de clé puisse créer la clé à l’emplacement par défaut. Les questions qui apparaîtront ensuite :

Enter passphrase (empty for no passphrase):

Et:

Enter same passphrase again:

Pour des raisons de commodité, j’aime laisser ceux-ci vides aussi. De cette façon, après avoir configuré la clé avec votre serveur distant, vous n’aurez pas besoin d’utiliser un mot de passe pour vous connecter. Vous entrerez ssh [email protected] et serez immédiatement connecté. Mais si vous avez besoin de plus de sécurité, vous pouvez entrer une phrase secrète (passphrase) dans cette section. Si vous choisissez cette option, vous devrez entrer le mot de passe chaque fois que vous vous connectez au serveur distant.

Via doingbuzz

C’est tout. Vous devriez voir quelque chose comme ceci dans votre Terminal :

generation cle ssh linux

L’image générée sera différente de la mienne. En plus de l’empreinte digitale de la clé.

IMPORTANT! Il y a deux clés qui ont été créées ici ( PRIVEE et PUBLIQUE ): id_rsa et id_rsa.pub. Prenez soin du fichier nommé id_rsa (c’est la clé privée ), gardez la sur votre ordinateur et ne le donnez à personne.

L’autre fichier, id_rsa.pub, doit être envoyé sur votre serveur distant. Par exemple, si vous et votre ami travaillez sur le même projet sur le même serveur distant, vous pouvez placer vos clés publiques dans ce serveur distant. Dans la prochaine étape, nous allons apprendre à le faire.

 

Étape 2 – Copie de la clé publique sur votre serveur distant

Après la génération de la paire de clés RSA, nous devons mettre notre clé publique sur le serveur virtuel distant.

Il existe une commande simple qui mettra votre clé publique directement sur le fichier authorized_keys du serveur distant (ce fichier contient toutes les clés publiques) :

ssh-copy-id [email protected]

Ici, au lieu de ipduserveur, vous devez entrer l’adresse IP de votre serveur distant et au lieu d’ utilisateur, vous devez saisir le nom d’utilisateur du serveur auquel vous vous connectez.

Après avoir entré la commande, vous devriez être accueilli avec un message d’ avertissement semblable à ceci:

The authenticity of host 'Server's IP address' can't be established. RSA key fingerprint is ... Are you sure you want to continue connecting (yes/no)?

Tapez yes dans la ligne de commande et appuyez sur ENTRÉE. Ce message apparaît uniquement la première fois que vous effectuerez cette action.

Un autre message s’affichera:

Warning: Permanently added 'SERVER IP' (RSA) to the list of known hosts. [email protected]'s password:

Ici, vous devez entrer le mot de passe de l’utilisateur du serveur distant (dans la plupart des cas, le nom d’utilisateur est root ). Après avoir entré le mot de passe, ça devrait être bon. Vous serez accueilli avec un autre message:

Maintenant essayez de vous connecter à la machine avec « ssh ‘[email protected]’ », et vérifiez dans : ~/.ssh/authorized_keys* pour vous assurer que nous n’avons pas ajouté de clé en trop.

Là ils vous disent de vous connecter sur votre serveur avec la commande :

ssh '[email protected]

Mais aussi de vérifier dans le fichier ~/.ssh/authorized_keys qu’il n’y a pas de clé SSH en trop.

La nouvelle clé publique a donc été ajoutée à votre serveur distant. Chaque fois que vous vous connecterez à votre serveur distant, vous ne serez pas invité à entrer un mot de passe (sauf si vous avez configuré une phrase secrète pour votre clé RSA dans le processus de génération).

Conclusion

Dans ce tutoriel, vous avez appris à générer une paire de clés publiques / privées SSH et à utiliser ces clés avec votre serveur distant afin de configurer une connexion plus sécurisée qu’avec un simple mot de passe.

J’espère vous avoir été utile ! Nous nous reverrons bientôt pour un futur tutoriel ! 😉

Togopapel, site des annonces du Togo

Togopapel.com est un site d’annonces totalement gratuit et accessible à tous. Peu importe le produit que vous voulez vendre, Togopapel est un carrefour idéal pour trouver rapidement un client.
Vous n’avez plus besoin de se servir d’une multitude de canaux pour conclure une vente. Et plus besoin d’un carnet d’adresses bien fourni ou d’être un buisnessman bien aguerri pour vendre votre ancien téléphone ou véhicule par exemple.
Togopapel vous offre aussi la possibilité d’offrir une très grande audience à toute activité quelconque peu importe sa nature ou sa taille.

Les acheteurs potentiels sont déjà aux aguets de Lomé à Cinkassé et n’attendent que vous. Postez une simple annonce sur Togopapel.com peu importe le coin du Togo où vous résidez.
Emboîtez le pas aux nombreux vendeurs qui ont déjà trouvé satisfaction en faisant confiance à une plateforme 100% togolaise. C’est aussi une manière à tout un chacun de nous de contribuer à l’évolution économique de notre chère patrie.

Pourquoi Togopapel.com est le meilleur site-web pour tous vos achats au Togo ?

Plus besoin de faire le tour de ta ville pour trouver l’article qu’il te faut. Que ce soit pour un besoin courant ou spécial, la réponse à ton besoin se trouve sur Togopapel.com.
Une panoplie de vendeurs de plusieurs secteurs différents offrent leurs produits ou services à des prix très intéressants et ce sur toute l’étendue du territoire togolais.

Entrez www.togopapel.com puis défilez entre les différentes offres postées. Cliquez sur celle qui vous convient puis ensuite, défilez jusqu’en bas et cliquez sur « Contacter le vendeur ».
Exprimez lui votre intérêt pour son annonce et la réponse ne saurait tarder. Discutez avec le vendeur des termes de l’échange en toute quiétude du prix au mode de livraison. Et voilà un achat conclu en quelques clics.

Faîtes confiance à une plateforme 100% togolaise et participez au développement économique à votre manière.

Petites annonces gratuites au Togo sur Togopapel

Le succès des petites annonces sur le web

Sur Togopapel, tout le monde peut passer des petites annonces gratuites,

partout en Togo, quand il le souhaite, autant de fois qu’il le souhaite.
Grâce au web, et à la multiplication des sites d’annonces gratuites, le secteur a subi une véritable révolution, et on trouve désormais des petites annonces à profusion sur Internet où que l’on soit, dans toutes les catégories. Vendre sa voiture, sa maison, les vêtements de ses enfants, des livres, CD, DVD, consoles de jeux, ou de l’électroménager via des petites annonces n’a jamais été aussi simple qu’en ligne, la preuve : même votre mamie s’y est mise !
En quelques clics, on explore les petites annonces, et on trouve chaussure à son pied, à moindre coût. La petite annonce et l’achat d’occasion sont totalement rentrés dans les mœurs, et c’est à qui fera la meilleure affaire. Pensez à votre copine Mumu qui a dégoté ce somptueux sac de seconde main pour une bouchée de pain, ou à Marco qui frime avec sa nouvelle auto et qui ne cesse de vous rabâcher que « c’était une super occase ! ». Aujourd’hui, le web offre tellement de possibilités en termes de mises en relation par des petites annonces que les autres médias passent un peu à la trappe… Si bien que les jeunes nés avec Internet ne savent peut-être pas comment le marché des petites annonces fonctionnait avant.

 

L’histoire des petites annonces

Les petites annonces et la Presse

À notre connaissance, aucune petite annonce concernant une machine à voyager dans le temps n’a été publiée sur Togopapel, mais nous pouvons tout de même vous expliquer comment sont nées les petites annonces.
On ne peut pas parler de l’histoire des petites annonces sans évoquer celle des médias, et plus particulièrement de la Presse. En 1631, lorsque Théophraste Renaudot crée La Gazette, l’un des premiers journaux périodiques français, il se rend vite compte qu’il aura besoin de financement pour son journal via la publicité. Le fait que ce dernier soit consulté par un grand nombre de Français légitime alors le fait de publier des petites annonces à l’intérieur, faisant ainsi du journal un intermédiaire entre les gens. Les prémices des réseaux sociaux !
On assiste alors à l’émergence de petites annonces qui nous paraitraient bien désuètes aujourd’hui, voire cocasses. Imaginez-vous aujourd’hui, lorsque vous parcourez tranquillement les petites annonces sur votre tablette, tomber sur la petite annonce d’un valet proposant ses services ?

L’évolution des petites annonces dans les nouveaux médias

La mayonnaise a visiblement pris, puisque l’histoire des petites annonces ne s’est pas arrêtée là ! Au XXe siècle, d’autres médias se sont imposés : radio, tv, minitel puis Internet ont à leur tour proposé des petites annonces gratuites ou payantes. La nature de celles-ci a d’ailleurs évolué, puisque c’est aussi devenu un moyen de faire des rencontres, amicales ou amoureuses… Cela nous paraît risible actuellement, mais peut-être que votre Tatie Josiane a rencontré Jean-Marc grâce à une petite annonce du minitel !
Ces nouveaux médias ont servi à prolonger l’expérience des petites annonces, mais aussi à les faire évoluer. Ce qui était difficilement envisageable sur le papier ou bridé par la ligne éditoriale d’un journal est désormais possible. Désormais, tout se vend et s’achète via des petites annonces : maison, voiture, location, cours, jeux, vêtements, services à la personne, animaux…
La forme des petites annonces a elle aussi changé avec Internet : les descriptions sont plus longues, on trouve en général plusieurs photos, et toutes sortes d’options sont proposées aux internautes (contacter le vendeur, partager sur les réseaux sociaux, enregistrer dans ses favoris, etc.). De plus, publier une petite annonce est devenu tellement simple et instantané grâce à Internet que tout le monde s’y met. Les internautes prennent conscience que tout peut se vendre et qu’il est ridicule de laisser dormir de l’argent dans son garage.

 

Petites annonces et humour

Si les petites annonces sont pratiques et utiles, elles prêtent aussi parfois à sourire… Rappelez-vous des fameuses « Petites annonces » d’Élie Semoun dans les années 90. Avec des personnages caricaturés à l’extrême, comme Cyprien ou Kevina, l’humoriste touche toutefois du doigt une certaine réalité.
La petite annonce est populaire, et comme elle peut être publiée par tout un chacun, certaines sont parfois drôles (volontairement ou involontairement). Il existe d’ailleurs plusieurs « tops » compilant les petites annonces les plus drôles du web
Effectivement, l’humour et le second degré (s’ils sont savamment dosés) peuvent être une façon de capter l’attention des internautes. Un bon plan pour vendre plus vite ! Ou au moins, faire rire !

Conclusion : Quel est le meilleur outil SEO entre SEMRush et Ahrefs ?

Présentation rapide de Ahrefs

Ahrefs

Ahrefs est une suite d’outils SEO utilisée par de grands noms comme Uber, Facebook, Linkedin, Shopify, Netflix et bien d’autres.

Les principaux outils sont les suivants :

  • Site Explorer : Analyse approfondie d’URLs
  • Keyword Explorer : Analyse détaillée de mots-clés
  • Content Explorer : Découverte et analyse des contenus les plus viraux et/ou organiques
  • Rank Tracker : Suivi de vos classements et ceux de vos concurrents
  • Site Audit : Analyse de votre site et détections des problèmes SEO
  • Alerts : Notifications sur vos performances SEO
  • SEO Toolbar : Barre d’outils pour Chrome qui analyse les sites visités et les résultats de recherche

Les différents plans vont de 99$, 179$, 399$ à $999 par mois, avec possibilité de 2 mois offerts si vous vous engagez sur 12 mois.

Présentation rapide de SEMRush

SEMrush revendique son statut d’outil de marketing numérique tout-en-un. Leurs clients comme eBay, Quora et Booking.com semblent plutôt être d’accord.

Les principaux outils sont les suivants :

  • Domain and Keyword Analytics : Analyse avancée d’URL et de mots-clés
  • Traffic Analytics : Outil avancé d’analyse de vos sources de trafic
  • Site Audit : Analyse les problèmes de votre site diminuant sa performance SEO
  • Projects : Analyse complète d’un site Web incluant le suivi de mots-clés, des backlinks et des concurrents
  • Reports : Outil de création et génération automatique de rapports SEO

Les différents plans vont de 99$, 179$ à 399$ par mois, avec possibilité de 2 mois offerts si vous vous engagez sur 12 mois.

Semrush logo

Méthodologie de comparaison

Lors de la préparation de ce compratif, j’ai essayé de me mettre à la place d’un spécialiste SEO lambda et de me poser la question suivante :

Quelles sont caractéristiques d’un outil SEO dont j’ai le plus besoin ?

La réalité est que la plupart d’entre nous n’accordons vraiment d’importance qu’à une poignée de fonctionnalités :

  • Analyse du trafic organique 
  • Analyse et recherche de mots-clés 
  • Analyse et recherche des liens
  • Création de rapports
  • Audit de site

Je vais donc comparer Ahrefs et SEMRush sur ces 5 domaines de fonctionnalités pour définir le meilleur outil du moment.

Le prix sera un 6ème critère afin de départager ces deux outils SEO.


Analyse du trafic organique

semrush ahrefs traffic organique

Lorsque vous analysez un domaine concurrent, la première chose que vous voulez examiner est son trafic organique.

Quel est le volume de trafic organique qu’il reçoit chaque mois ? Quelles pages et quels mots-clés leur donnent le plus de trafic ?

Il est important que l’outil SEO que nous utilisons soit aussi précis que possible. Aucun outil ne peut être précis à 100% sur cette partie, car il n’a pas accès au Google Analytics du domaine en question. Mais plus il est précis, mieux c’est.

Nous avons fait une comparaison côte à côte de SEMRush et Ahrefs pour leur partie Trafic Organique (cliquez pour afficher) :

Les deux outils montrent le trafic organique, divisé par pays, ainsi que les mots-clés, le trafic, la valeur monétaire, et plus encore. Les chiffres sont un peu différents les uns des autres, mais généralement plutôt proches.

À mon avis, SEMrush est légèrement plus précis que Ahrefs à évaluer le trafic organique réel.

J’ai analysé des centaines, voire des milliers, de sites Web. J’ai souvent trouvé que, surtout quand je le compare au trafic réel, SEMrush est plus précis.

D’un autre côté, selon moi Ahrefs est un peu plus rapide pour analyser les fluctuations de trafic organique.

Ainsi, les changements d’un jour à l’autre ou d’un mois à l’autre seront mis à jour plus rapidement. Il affiche également plus de mots-clés, mais ce n’est pas toujours utile.

Les deux outils vous permettent d’exécuter diverses fonctions.

Par exemple, si vous voulez voir quelles pages d’un site Web reçoivent le plus de trafic organique, vous pouvez le faire sur SEMrush et Ahrefs.

Vous pouvez également avoir accès en un coup d’oeil à la liste des concurrents du domaine.

Pour chaque concurrent vous aurez accès à une liste de tous les mots-clés en concurrence et les classements respectifs.

Meilleur outil SEO pour l’analyse du trafic organique : SEMRush

SEMRush

Analyse et recherche de mots-clés

Si vous êtes blogueur, consultant SEO ou encore spécialiste du marketing d’affiliation, vous savez que la recherche de mots-clés est l’élément le plus important de votre réussite.

Vous devez planifier votre article avant de l’écrire. Seul un bon outil de recherche par mot-clé vous aidera efficacement dans cette tâche.

Voici selon moi ce qui devrait être important d’obtenir d’un bon outil SEO :

  • Le volume de recherche d’un mot-clé
  • Un indice de difficulté
  • Le pourcentage de clics générés par cette recherche
  • Des milliers d’idées de mots-clés à longue traîne
  • Les variations du mot-clé avec leur volume de recherche
  • L’analyse de la concurrence positionnée sur ce mot-clé
  • Les questions liées à ce mot-clé

Voici à quoi ressemble la recherche par mot-clé sur SEMrush et Ahrefs :

semrush ahrefs recherche mots cles

Encore une fois, je pense que ces deux outils sont très bons dans la recherche de mots-clés. Il y a cependant des différences de présentation et de qualité de données qu’il est important de mentionner.

SEMRush

Interface

Visuellement, l’interface est claire mais datée, elle vous permet d’avoir une vue d’ensemble rapide des métriques importantes, notamment :

  • Volume
  • Tendances
  • Difficulté
  • Caractéristiques du SERP

Un inconvénient est que vous avez deux paramètres de difficulté de mots-clés affichés sur la même page – KD (organique) et Comp (PPC).

Si vous comprenez la différence entre les deux, ce n’est pas un problème.

Mais si vous êtes un nouvel utilisateur, vous pourriez hésiter les premières fois, ce qui n’est jamais une bonne chose.

C’est l’un des défauts généraux de SEMrush – il essaie d’être parfait partout et pour tous les types d’utilisation.

C’est un objectif admirable, mais cela signifie aussi que leur interface manque de clarté, et cela commence à se voir.

Indice de difficulté d’un mot-clé

SEMrush utilise l’autorité d’un domaine (DA) pour évaluer à quel point il est difficile de classer un mot-clé donné.

Ainsi, lorsque nous appliquons leur métrique à notre mot-clé test (« collier pour chien »), nous constatons qu’il obtient un score de difficulté de 73.84%.

Recherche Mots Clés SEMRush

En d’autres termes, c’est un mot-clé extrêmement compétitif et cela ne vaut probablement pas la peine d’essayer de s’y indexer.

Le problème est que ce résultat entre en conflit avec les données que nous avons trouvées dans d’autres outils SEO, et de loin.

En fait, selon les requêtes c’est entre 20% et 60% plus élevé que le score donné par les autres outils SEO :

  • Ahrefs : 30/100
  • Moz : 19/100
  • Serpstat : 15/100
  • Ubersuggest : 56/100
  • KwFinder : 30/100

Donc, soit tout le monde se trompe, soit SEMrush a besoin de mettre à jour leur algorithme de notation de difficulté des mots-clés.

Filtrage des mots-clés

SEMrush vous permet de filtrer les mots-clés en utilisant tous les raccourcis habituels comme le nombre de mots, le volume de recherche, et la difficulté des mots-clés.

Mais ils ont un filtre très intéressant qui mérite d’être mentionné : le filtre par caractéristiques SERP.

SEMRush filtre mots clés

Pourquoi est-ce important ?

Parce qu’il vous permet d’éliminer les mots-clés qui n’ont aucune caractéristique SERP, ce qui devrait les rendre plus faciles à vous référencer dessus.

Suggestion de mots-clés

SEMRush retourne 5339 suggestions de mots-clés supplémentaires sur notre requête « collier pour chien ».

SEMRush suggestion mots clés

Vous aurez besoin de filtrer à travers cette quantité de données pour trouver des mots-clés longue traine vraiment intéressants, mais ce nombre énorme de suggestions de mots-clés vous donne beaucoup de possibilité au départ.

Ahrefs

Ahrefs est un outil hybride un peu comme SEMRush. Il offre des outils de recherche de mots-clés, de marketing de contenu, de suivi de classement et d’audit de site.

Mais sa vraie force est de vous aider à trouver les mots-clés de longue traine qui vous permettront d’identifier les meilleures opportunités SEO.

Cette force n’est pas toujours évidente dans vos recherches en langue Française, alors qu’en Anglais cet outil est clairement devant la concurrence.

Interface

L’interface du Keyword Explorer mélange des visuels simples avec des données complexes, mais sans vous submerger.

Globalement, malgré l’importante quantité de données, c’est facile pour les yeux et facile à comprendre.

Beaucoup trop d’outils SEO se contentent de caser le plus de données et de mots-clés dans un seul écran pour montrer la puissance de leur base de données.

Ahrefs ne fait pas cette erreur.

Ahrefs Interface

Indice de difficulté

Ahrefs base son score de difficulté de mots-clés (KD) sur le nombre de liens entrants d’une URL donnée référencée sur ce mot-clé.

L’outil prend aussi en compte d’autres facteurs, mais la façon la plus simple de comprendre leur algorithme est de savoir qu’il est basé sur le modèle de l' »autorité de page ».

Pour notre requête test « collier pour chien » la difficulté est de 30/100, exactement comme celui de KWFinder.

Encore une fois, ce genre de calcul n’est pas à suivre aveuglément.

Il est néanmoins rassurant de voir que les valeurs d’Ahrefs sont plus proches des autres outils que celles de SEMRush.

Filtrage des mots-clés

Personnellement, j’adore les possibilités de filtrage offertes par Ahrefs.

C’est probablement en partie parce que les filtres sont affichés à l’horizontale avec les résultats des mots-clés.

Vous pouvez filtrer par difficulté de mot-clé, volume de recherche, nombre de mots, caractéristiques du SERP (snippets, etc), inclure et aussi exclure certains mots.

Ahrefs filtres

Suggestion de mots-clés

Ahrefs prouve une fois encore qu’il est le meilleur outil pour la recherche de mots-clés.

Notre requête « collier pour chien » retourne 7603 suggestions de mots-clés, à comparer aux 5339 de SEMRush.

Ahrefs suggestion de mots clés

Autre chose que j’aime chez Ahrefs, c’est qu’il identifie aussi le sujet parent (« Parent Topic ») pour un mot-clé particulier.

Pourquoi cette fonctionnalité est utile ?

Parce que ces sujets « parents » représentent une branche entière de mots-clés que vous n’auriez peut-être jamais considérés auparavant.

Un exemple parfait est le « harnais pour chien » dans notre requête test – qui constituerait une excellente catégorie supplémentaire pour un site de niche axé sur les colliers, laisses et harnais pour chiens.

Vous pouvez donc utiliser cette fonctionnalité comme un guide pour la création de votre contenu.

Meilleur outil SEO pour l’analyse et la recherche de mots-clés : Ahrefs

Ahrefs

Création de rapports

Par défaut, cette fonctionnalité n’est pas ce que je recherche en premier dans un outil SEO.

Cependant, lorsque je paye 99$ par mois, je m’attends à avoir un peu plus que de l’analyse de liens et de mots-clés.

Cette fonctionnalité devient aussi vite indispensable si vous êtes une petite équipe ou une agence, avec des clients à tenir informés, ou des tâches d’optimisation SEO à distribuer.

Ahrefs et SEMRush proposent la possibilité d’exporter vos données, mais avec des approches différentes.

En effet, le débat va être assez court sur cette partie, car Ahrefs ne propose tout simplement pas de capacité de créer des rapports.

À la place, ils ont privilégié le fait de pouvoir exporter n’importe quelle donnée que vous générez depuis les différents modules au format CSV.

Vous avez généralement le choix d’exporter la liste actuelle consultée, les 1000 premières lignes ou l’intégralité des réponses.

ahrefs export

Une fois le fichier exporté, c’est à vous de vous débrouiller pour créer un report à la main.

Pour le coup, SEMRush est sans conteste bien meilleur.

Tout d’abord, il vous permet comme Ahrefs d’exporter toutes vos données au format CSV, mais aussi XLS.

semrush export csv

Pour les écrans pour lesquels un export CSV ou XLS n’est pas possible (comme un dashboard par exemple), SEMRush propose à la place un export au format PDF.

Vous pouvez opter pour plusieurs options :

  • Génération immédiate du PDF
  • Envoi par email du PDF
  • Programmation automatique et récurrente de ce rapport
  • Personalisation du rapport
semrush export pdf

SEMRush propose également la création de rapports PDF à partir de zéro.

Vous pourrez ainsi communiquer les résultats d’un audit de site web, présenter une analyse concurrentielle, ou montrer les progrès réalisés après une campagne marketing.

Plutôt complet, vous pourrez dans vos rapports intégrer les modules des outils SEMrush, mais aussi de Google Analytics, Google Search Console, Google My Business et aussi vos propres données ou images.

À noter que les rapports en marque blanche sont uniquement disponibles avec l’abonnement Business à 399$ par mois.

Lors de la création d’un nouveau rapport, vous pouvez choisir de partir de zéro (1), à partir d’un modèle préexistant (2) ou de votre propre modèle personnalisé (3).

semrush rapport template

Pour utiliser un modèle, sélectionnez celui que vous souhaitez utiliser dans le menu et entrez le domaine et la base de données sur lesquels vous voulez faire rapport. 

Après avoir entré ces informations, SEMrush remplira le template avec les données de votre domaine. 

Vous pourrez ensuite continuer à personnaliser votre rapport dans le Report Builder comme si vous le faisiez à partir de zéro.

Pour créer votre propre modèle personnalisé pour les rapports clients, sélectionnez l’option Create Template dans le menu déroulant. Une fois que vous aurez créé votre propre modèle personnalisé, vous le trouverez dans l’onglet My Templates.

Une fois dans l’édition de votre rapport, tout se passe en drag-and-drop, c’est hyper simple. 

semrush rapport drag and drop

Vous avez la possibilité d’ajouter un certain nombre de widgets, prenant leur source dans les différents modules de SEMRush :

  • Site Audit
  • Position Tracking
  • Backlink Audit
  • On Page SEO Checker
  • Social Media Tracker

Le widget Site Audit vous permet d’accéder aux données de votre vue d’ensemble, ainsi que le rapport des problèmes, le rapport des pages parcourues, la liste détaillée des problèmes et plus encore.

Le widget de Position Traking peut afficher la tendance de visibilité ainsi que le tableau de classement des mots-clés.

Le widget On Page SEO Checker vous permet d’ajouter la liste des idées de contenu que SEMrush a généré pour votre site, ainsi qu’un graphique de la tendance des idées recommandées.

Le widget Backlink Audit vous permet d’inclure le résumé de votre audit, une représentation graphique des domaines référents par score de toxicité, les types d’ancres, et le rapport des liens follow et nofollow.

Le widget Social Media Tracker peut ajouter des données sur les posts de vos concurrents, leur audience, leurs activités et leur engagement sur Facebook, Twitter, Pinterest, Instagram et YouTube.

Vous pouvez également intégrer des widgets de données Google Analytics et de Search Console dans votre rapport personnalisé.

Les widgets Google Analytics disponibles incluent :

  • Vue d’ensemble
  • Graphiques métriques
  • Principaux canaux de trafic
  • Nouveaux visiteurs et visiteurs récurrents
  • Conversions (commerce électronique)
  • Pages vues
  • Tableau des objectifs
  • Lieu
  • Langue et source/médium
  • Référents de trafic
SEMRush rapport google analytics

Le widget Google Search Console est plus limité, mais permet malgré tout d’intégrer :

  • Vue d’ensemble (1)
  • Performance de recherche par mot-clé (2)
  • Performance de recherche globale (3)
SEMRush Rapport GSC

Si une de vos activités est de travailler le référencement de commerces locaux, vous allez aimer ce qui va suivre.

Vous avez en effet la possibilité d’intégrer des widgets Google My Business.

Vous pourrez ainsi présenter comment les utilisateurs de moteurs de recherche trouvent et interagissent avec les informations d’une entreprise locale sur le Web.

C’est une excellente information à inclure dans un rapport local SEO client.

Les 5 widgets disponibles présentent les éléments suivants :

  • Une vue d’ensemble des actions que le site a reçues pendant la période définie : visites du site Web, demandes de directions, appels et vues de photos.
  • Comment les utilisateurs ont trouvé l’entreprise : recherche directe ou recherche indirecte
  • Quels sont les services Google utilisés pour trouver l’entreprise : Google Search vs. Google Maps
  • Comment les utilisateurs interagissent avec l’annonce une fois qu’ils l’ont trouvée : clics sur le site Web, demandes de directions et appels téléphoniques
  • Appels téléphoniques : Quel jour de la semaine et quelle heure de la journée l’entreprise reçoit le plus d’appels téléphoniques ?

Pour terminer, vous pouvez automatiser l’envoi des rapports et les planifier.

Les paramètres vous permettent de définir l’e-mail spécifique auquel vous voulez que les rapports soient envoyés, ainsi que le jour et la fréquence à laquelle ils seront envoyés.

Les rapports peuvent être envoyés n’importe quel jour de la semaine, selon un horaire quotidien, hebdomadaire ou mensuel.

SEMRush rapport automatique

Meilleur outil SEO pour la création de rapports : SEMRush

SEMRush

Audit de site

Si vous êtes sur cette page, vous n’êtes pas sans savoir que maintenir un site en bonne santé est crucial dans la performance SEO de celui-ci.

Dès lors, vous avez besoin d’un outil robuste permettant de tester de manière récurrente différents domaines :

  • Architecture
  • On page SEO
  • SEO Technique
  • HTTPS
  • International
  • AMP
  • Performance
  • Liens internes / externes

Et bien d’autres encore.

Ahrefs et SEMRush proposent tous les deux une fonctionnalité d’audit de votre site.

Leur principe est identique : l’outil scanne toutes les pages de votre site, liste les problèmes trouvés, calcule un score de santé et vous présente toutes les données dans un rapport.

Ahrefs prétend analyser plus de 100 critères, tandis que SEMRush en affiche 120.

Dans la réalité, je n’ai pas trouvé de grande différence entre les deux.

Commençons tout d’abord par l’outil proposé par Ahrefs.

Ahrefs

Après avoir ajouté votre site à Ahrefs, vous pouvez effectuer un audit de site qui vous dira comment votre site performe du point de vue d’un robot de moteur de recherche.

En d’autres termes, il révélera tous les problèmes de référencement sur votre site qui nuisent à votre positionnement dans les moteurs de recherche.

L’outil parcourra toutes les pages de votre site Web et créera un journal où vous pourrez passer en revue tous les problèmes. Vous pouvez également programmer un crawl régulier que Ahrefs répétera périodiquement.

ahrefs site audit overview

Un temps de crawl élevé signifie qu’il y a quelque chose qui ne va pas avec la page.

C’est mauvais pour vos utilisateurs et mauvais pour le référencement puisque Google place la vitesse de chargement comme critère de plus en plus important en SEO.

ahrefs site audit performance

Vous pouvez aussi l’utiliser pour trouver des pages avec des erreurs 4xx (comme des erreurs 404) et réparer les pages cassées de votre site très facilement.

Les pages manquantes et les codes d’erreur sont mauvais pour vos utilisateurs.

Si vos visiteurs ne peuvent pas trouver le contenu qu’ils recherchent, vous pouvez parier que Google ne vous fera pas de cadeau.

ahrefs erreurs 4xx

Un grand nombre de pages d’erreur 404 peut avoir un impact négatif sur le référencement, il est donc toujours conseillé de les supprimer ou de les corriger aussi vite que possible.

ahrefs erreurs 404

La fonction la plus utile, cependant, est la possibilité d’analyser l’ensemble de votre contenu en un coup d’œil.

Cette fonctionnalité vous aide à trouver des titres dupliqués, des méta descriptions manquantes, des balises H1 multiples sur une page, tous ces petits 1% d’Onpage SEO peuvent faire une différence et qui sont faciles à corriger.

ahrefs audit onpage seo

Passons maintenant à l’outil d’audit de site proposé par SEMRush.

SEMRush

Une fois que vous avez exécuté votre audit de site, vous pouvez voir vos résultats dans le dashboard.

Vous verrez une estimation de l’état de santé de votre site Web, indiquant tous les problèmes détectés lors du dernier crawl.

À partir de là, vous pourrez accéder à différents rapports :

  • Analyse du robots.txt de votre site
  • Crawlabilité
  • HTTPS
  • Référencement international
  • Performances (vitesse de chargement des pages),
  • Liens internes / externes
semrush site audit

Sous la partie « Thematic Reports », vous verrez cinq widgets de prévisualisation : Explorabilité, HTTPS, SEO International, Performance, et Liens Internes.

En cliquant sur un widget, vous aurez accès au rapport détaillé.

semrush audit score thematique

Explorabilité 

Le rapport Crawlability vous donne une analyse générale des éléments du site qui affectent la façon dont les moteurs de recherche explorent votre site.

Vous aurez ainsi accès à un rapport filtré des pages parcourues présentant un problème.

semrush explorabilite

Implémentation HTTPS 

Le rapport HTTPS vous fournira une liste de tous les problèmes potentiels concernant l’enregistrement du certificat (1), le support du serveur (2) et l’architecture du site Web (3).

Il vous suffira de cliquer sur l’un des blocs pour obtenir une explication sur le problème et la façon de le résoudre.

semrush site audit https

Performance 

Le rapport de performance analysera les ressources des pages de votre site, et vous listera tous les problèmes de performance, de chargement et de vitesse liés à celui-ci.

Vous serez en mesure de visualiser rapidement la vitesse moyenne du chargement HTML des pages de votre site ainsi qu’une ventilation par temps de chargement (0-0.5s, 0.5-1s, 1-3s, et >>s).

Dans le cas de crawl planifiés et récurrents, vous aurez également un indicateur d’évolution de la performance globale par rapport au crawl précédent.

semrush performance audit

La note globale indiquée est calculée en fonction du nombre d’erreurs et d’avertissements liés au crawl de votre site web.

Liens internes

Tout comme les liens externes, les liens internes peuvent également aider à renforcer l’autorité d’une page.

L’audit de site vous permet de voir les liens internes ou externes brisés, ainsi que leur distribution par page.

Une fonction intéressante du rapport vous permettra de voir si une page reçoit/envoie trop/pas assez de liens et donc de « jus ».

semrush internal linking

Internal LinkRank est une métrique propriétaire de SEMRush, basée sur le nombre de liens internes entrants et la profondeur d’exploration de la page.

Plus le score est élevé, plus la page est facile d’accès.

Plus le score est bas, plus la page a besoin d’aide grâce à un meilleur maillage interne.

C’est une métrique extrêmement intéressante dans le cadre du suivi de la mise en place d’un cocon sémantique.

Conclusion

Ahrefs présente un bel outil d’audit de site, avec une foule de données et d’information.

De plus, leur outil de « To-do » intégré permet de facilement distribuer les problèmes à résoudre dans le cadre de travail en équipe.

Cependant, je trouve l’outil d’audit de site de SEMRush meilleur.

Il offre plus de métriques et plus de rapports. Les rapports sont aussi mieux présentés, avec plus de graphiques, et plus lisibles.

Meilleur outil SEO pour l’audit de site : SEMRush

SEMRush

Prix

Jusqu’à présent, je ne me suis concentré que sur un comparatif des fonctionnalités de chaque outil, sans tenir compte de leur prix ou des fonctionnalités offertes par chaque option.

Mais soyons honnêtes, que ce soit Ahrefs ou SEMRush, les deux outils coûtent chers.

Et l’on sait très bien que lorsque vous allez essayez de décider lequel vous allez acheter, l’une des principales choses que vous aller regarder est le prix.

Chaque outil a 4 plans tarifaires différents.

Voici le tableau des prix actuels pour Ahrefs :

ahrefs prix

Et voici celui de SEMRush :

semrush prix

Ahrefs propose 4 plans tarifaires différents.

Le forfait Lite coûte 99 $ par mois et vous donne accès à un certain nombre de recherches et rapports.

Vous pourrez utiliser toutes les fonctionnalités, mais vous aurez un certain nombre de limitations :

  • 5 projets (1 projet – 1 domaine)
  • 500 mots-clés suivis
  • Suivi des mots-clés uniquement sur Desktop
  • 1 seul site pour le Site Audit
  • Site Explorer limité à 25 domaines par jour
  • Keywords Explorer limité à 25 mots-clés par jour
  • Vue de vos positions détaillées uniquement jusqu’au Top 20

Il y a aussi d’autres limites, qui sont toutes mentionnées dans la page de prix d’Ahrefs.

Vous pouvez réduire ou éliminer ces limitations en souscrivant aux plans supérieurs mais qui sont plus chers.

Le plan le plus coûteux est le plan Agency, il conviendra plutôt aux agences SEO ou aux sites à fort traffic organique (1 million de visites par mois minimum).

La structure tarifaire de SEMrush est quelque peu similaire.

Le forfait de base coûte 99,95 $ par mois, et comporte aussi un certain nombre de limitations, mais moins contraignantes que celles d’Ahrefs :

  • 5 projets (1 projet – 1 domaine)
  • 500 mots-clés suivis
  • Suivi des mots-clés uniquement sur Desktop
  • Keywords Analytics limité à 3000 recherches par jour
  • Traffic Analytics limité à 3000 sites par jour

Il y a d’autres limites dans le plan Pro à consulter sur leur page de prix.

Néanmoins, à tarif équivalent vous allez avoir la possibilité de faire beaucoup plus de recherche de mots-clés ou d’analyse de vos concurrents en journée par rapport à Ahrefs qui est très limitant sur ces aspects dans le forfait Lite.

Le plan Enterprise de SEMRush s’adresse aux grandes entreprises et son prix est négociable.

Je préfère personnellement cette approche. En effet, je pense que chaque entreprise, agence ou site a des besoins différents selon son utilisation de l’outil.

Ainsi, plutôt que de payer un prix fixe monstrueux pour tout avoir en illimité, j’aime la possibilité de ne pouvoir payer que les ressources additionelles dont j’ai besoin.

Conclusion

Dans l’ensemble, je pense que SEMrush a une meilleure structure de prix, avec des limitations moins contraignantes pour le plan de base.

Il s’agit évidemment d’un léger avantage car le prix d’accès est identique à celui de Ahrefs.

Néanmoins cette avantage se confirme dans les plans les plus chers : la possibilité de choisir vos options à la carte et de les négocier en fonction de votre utilisation est un vrai plus.

Meilleur outil SEO pour le rapport prix / options : SEMRush

SEMRush

Conclusion : Quel est le meilleur outil SEO entre SEMRush et Ahrefs ?

Si l’on reprend factuellement le meilleur outil de chaque catégorie, cela nous donne :

  • Analyse du trafic organique : SEMRush
  • Analyse et recherche de mots-clés : Ahrefs
  • Analyse et recherche des liens : Ahrefs
  • Création de rapports : SEMRush
  • Audit de site : SEMRush
  • Prix : SEMRush

4 à 2, SEMRush l’emporte aux points sur ce comparatif.

Néanmoins, la réalité est un peu plus nuancée.

Ahrefs possède une vraie longueur d’avance sur les parties mots-clés et liens / backlinks.

Cela peut faire une différence si le succès de votre business est uniquement axé sur ces deux domaines.

Si vous cherchez un outil un peu plus complet dans ses fonctionnalités, avec un prix un peu plus avantageux, SEMRush est fait pour vous.

Il sera certes moins précis que Ahrefs sur l’analyse de mots-clés et de liens, mais vous offrira un ensemble d’informations et de fonctionnalités plus complet au global.

De mon point de vue, une agence ou un consultant SEO préfèrera SEMRush afin de pouvoir rapidement :

  • Auditer le site de son client
  • Suivre l’évolution du traffic et des mots-clés
  • Proposer à son client les idées mots-clés générées par SEMRush
  • Planifier automatiquement des rapports de performance SEO

À l’opposé, une personne dont le business est axé sur des sites de niche préfèrera normalement Ahrefs.

Découvrir SEMRush

Découvrir Ahrefs

SEMRush
Ahrefs

Site web backlink annuaire , listeduweb.com

Listeduweb.com est un annuaire en ligne destiné exclusivement aux sites-web. La plateforme développée par 3vision-Group se veut l’épicentre de la toile. L’opportunité est donnée aux propriétaires ou gestionnaires de sites-web de se faire répertorier librement en inscrivant eux-mêmes leurs plateformes sur listeduweb.com.
Tous les domaines d’activités et plusieurs autres critères sont pris en compte dans le classement des données pour permettre aux visiteurs de se retrouver très rapidement. Listeduweb.com constitue en outre un gage de visibilité et un canal privilégié vers les moteurs de recherche(Google, Bing,…) pour les plateformes enregistrées.

Inscrivez vos projets pour intégrer la liste exhaustive du web et faire partie des bénéficiaires des nombreuses autres opportunités que listeduweb.com crée.

1 2 3 10