Plugins de recherche pour la plate-forme Isidore

J’aime particulièrement les plugins OpenSearch, comme vous pouvez le voir dans ce billet ou encore celui-là. Je trouve aussi les fonctionnalités de la plate-forme Isidore très intéressantes. La seule fonctionnalité qui me semble manquer est la possibilité de pouvoir ne renvoyer par défaut que les ressources accessibles physiquement. Pour mes propres besoins, j’avais rédigé un plugin ne renvoyant que les résultats référencés par REGARDS, le centre de recherche de mon laboratoire. Puis j’ai expliqué ma démarche dans un billet.

Plusieurs personnes m’ayant dit que le tutoriel était assez compliqué, et vu que le processus me semblait extrêmement simple à automatiser, j’ai créé une page sur laquelle se trouve une liste de plugins de recherche pour la plate-forme Isidore. Il y a un plugin par collection moissonnée, et la liste est automatiquement mise à jour chaque lundi.

Il vous suffit de cliquer sur le bouton correspondant à la collection qui vous intéresse pour installer le plugin !

La page se trouve ici.

Rédiger un plugin de recherche intégré au navigateur

Voici un petit tutoriel qui m’a été demandé à la suite des plugins que j’ai rédigés, et qui permettent de savoir quels sont les documents dont dispose le centre REGARDS.

Objectif : rédiger un plugin de recherche intégré au navigateur interrogeant la plate-forme ISIDORE et ne retournant que les résultats d’une collection ou organisation spécifique.

Exemple d’utilisation : Votre centre de documentation est moissonné par ISIDORE et vous souhaitez ne plus avoir à maintenir votre moteur de recherche maison. Cependant, vos utilisateurs souhaitent savoir facilement à quels documents ils peuvent accéder physiquement.

Avantages : Cette solution est très simple à mettre en œuvre. Elle ne requiert aucune modification sur le site de l’organisation ou de la collection visée (même si cela reste conseillé) ni aucune maintenance (sauf changement dans la structuration des requêtes de la plateforme ISIDORE).

Limites : Seuls les résultats d’une collection sont retournés. Si l’objectif est de prioriser ceux d’une collection, faisant apparaître les autres documents à la suite, il faut réaliser une interface en utilisant l’API d’ISIDORE.

Avant de rentrer dans le vif du sujet, je vous propose un petit topo sur l’ajout et la gestion de moteurs de recherche dans les navigateurs les plus courants. Ceux qui connaissent déjà le sujet peuvent sauter cette première partie sans problème.

[toc]

Les plugins de recherche intégrés aux navigateurs

OpenSearch est un ensemble cohérent de techniques permettant d’exécuter des recherches sur un site sans passer par une interface web. OpenSearch est supporté par les navigateurs suivants :

  • Mozilla Firefox 2 et versions ultérieures ;
  • Windows Internet Explorer 7 et versions ultérieures ;
  • Google Chrome / Google Chromium ;
  • Apple Safari 5.1 et versions ultérieures, moyennant l’installation d’une extension.

Les moteurs de la barre de recherche de FirefoxPrenons le cas de Mozilla Firefox. OpenSearch y est exploité dans la barre de recherche. Cela permet justement de faire une recherche, par exemple dans un dictionnaire en ligne, sans avoir d’abord à aller sur leur site. Une bonne pratique est d’attribuer à chacun de vos moteurs un mot clé. Ainsi, vous pouvez passer d’un moteur à l’autre sans même toucher la souris.

Par exemple, vous attribuez le mot clé d au moteur « Portail lexical – CNRTL » (le dictionnaire en ligne du CNRS). En tapant Ctrl + l, votre curseur se positionne dans la barre d’adresse. Tapez ensuite le mot clé de votre moteur (ici d) suivi d’un espace et de la recherche que vous souhaitez effectuer. C’est simple et très efficace.

Les autres navigateurs proposent des fonctions plus ou mois similaires. À noter que seule une solution basée sur des raccourcis claviers est disponible dans Google Chrome, une seule barre servant à tout.

Quel que soit votre navigateur, il y a deux façons d’ajouter un plugin de recherche. Le site officiel de Mozilla fournit de très bonnes explications sur la marche à suivre dans Firefox. D’autres instructions pour les autres navigateurs doivent aussi être facilement trouvables. Il existe une variante de la deuxième méthode, qui consiste à se rendre sur le site du projet Mycroft, véritable annuaire de plugins de recherche compatibles avec OpenSearch.

Générer un plugin de recherche pour votre organisation à l’aide de Mycroft

La méthode que je décris ici concerne spécifiquement les collections d’ISIDORE, mais elle est très facilement adaptable pour tout site disposant d’un moteur de recherche.

Récupérer l'identifiant numérique de la collection sur ISIDORE1. En premier lieu, il vous faut récupérer l’identifiant numérique sous lequel votre institution ou collection est référencée sur le moteur de recherche ISIDORE. Rendez-vous sur la plate-forme, et dans la colonne de gauche cliquez sur « Par collections et organisations » puis sélectionnez la vôtre (ou celle qui vous intéresse…). Regardez la barre d’adresse de votre navigateur. L’identifiant est le numéro qui se trouve à la fin de l’URL, juste après source_taxo=. Notez-le.

2. Rendez-vous sur la page du projet Mycroft permettant de générer un plugin. Remplissez les champs comme suit :

  1. Plugin name : mettez quelque chose comme <institution> (via ISIDORE). Exemple : REGARDS (via ISIDORE).
  2. Plugin description : Il faut quelque chose de court. Je n’ai jamais vu le texte entré ici apparaître quelque part, mais sait-on jamais…
  3. Search URL : C’est la partie la plus importante. Entrez http://www.rechercheisidore.fr/search?q={searchTerms}&source_taxo=<identifiant_institution> en remplaçant <identifiant_institution> par le numéro que vous avez récupéré à l’étape 1. La puce GET doit être cochée. Exemple : http://www.rechercheisidore.fr/search?q={searchTerms}&source_taxo=18144929
  4. Input encoding : Laissez tel quel, c’est-à-dire avec la valeur UTF-8.
  5. Suggestions URL : Entrez http://www.rechercheisidore.fr/suggest/?q={searchTerms} Les suggestions sont globales (elles ne concernent pas qu’une seule collection). Il ne sert donc à rien de rajouter l’identifiant.
  6. Search form URL : Entrez http://www.rechercheisidore.fr/search?source_taxo=<identifiant_institution> Exemple : http://www.rechercheisidore.fr/search?source_taxo=18144929
  7. Reference : Il faut trouver une suite alphanumérique qui décrive votre plugin et qui soit unique sur Mycroft. Je vous suggère quelque chose comme isidore-<institution> Exemple : isidore-regards
  8. Select icon : Il s’agit de l’icône qui illustrera votre plugin dans la barre de recherche. Soit vous désirez utiliser le favicon du site de votre institution, soit vous préférez opter pour celui d’ISIDORE. Dans ce cas, il vous suffit de cocher « Copy existing plugin » et d’entrer isidore-regards dans le champ de texte.
  9. Plugin category : Il n’y a rien de vraiment adéquat. Libraries ou Education > Universities peuvent faire l’affaire selon les cas.
  10. Je ne vous aide pas pour le reste des champs. ;)

Générez le plugin, testez-le (l’icône ne sera pas celle que vous avez choisie mais une tête de tyrannosaure rouge) et si tout fonctionne comme prévu proposez votre plugin (votre icône sera alors la bonne). Pour remplacer le plugin de test par le définitif, il faut supprimer manuellement le premier de votre liste de plugins de recherche. Si votre plugin n’apparaît pas lorsque vous le cherchez sur Mycroft,cliquez sur « more… » sous la ligne « Site language » et cochez la case « Skip Cache ».

Intégrer ce plugin sur la page de votre institution (optionnel)

La méthode proposée ci-dessus possède deux inconvénients. D’abord, pour qu’un utilisateur puisse ajouter votre plugin, il faut déjà qu’il connaisse Mycroft. Ensuite, si Mycroft ferme, il deviendra indisponible pour de nouveaux utilisateurs.

Les deux problèmes se résolvent simultanément. Pour ne plus dépendre de Mycroft, il faut héberger le plugin directement sur le serveur de votre institution (il faut donc posséder les droits nécessaires). Le plus simple est d’aller dans le dossier de votre profil Firefox, puis dans le répertoire searchplugins pour y trouver le vôtre. Il vous suffit alors de l’uploader sur votre serveur.

Pour que les visiteurs de votre site puisse installer le plugin que vous venez d’uploader, vous pouvez ajouter le texte suivant dans la section head d’une ou de plusieurs pages de votre site :

 <link rel="search" type="application/opensearchdescription+xml" title="<Plugin name>" href="<l'URL du fichier XML>" />

Remplacez <Plugin name> par la valeur que vous avez entrée plus haut comme Plugin name, et <l’URL de votre fichier XML> par l’adresse adéquate. Enregistrez, c’est terminé.

J’espère que mes explications sont claires, et que vous n’avez pas rencontré de difficulté au cours des différentes étapes. Néanmoins, le cas échéant, n’hésitez pas à poser votre question en commentaire.

Créer des raccourcis clavier pour l’extension Zotero de LibreOffice

Vous connaissez sûrement déjà Zotero, une extension pour Firefox de gestion de bibliographie. L’outil existe d’ailleurs en version standalone, ce qui permet de le faire fonctionner aussi avec Safari ou Chrome/Chromium. C’est un logiciel très puissant, pour lequel il existe ça et de très bons tutoriels.

Il existe également des extensions pour différents traitements de texte connus, dont LibreOffice, OpenOffice et NeoOffice. Elles permettent d’appeler depuis le traitement de texte, via une interface très bien pensée, des références bibliographiques stockées dans Zotero. Et heureusement, car l’outil de gestion de bibliographie intégré à LibreOffice n’est pas des plus pratiques !

Cet article s’adresse plus particulièrement à ceux et celles qui ont déjà installé Zotero et l’extension pour LibreOffice. Normalement, ce que je décris devrait fonctionner aussi sous OpenOffice et NeoOffice mais je n’ai pas vérifié. Lire la suite

Mettre du texte en arrière-plan avec du CSS (sans toucher au HTML)

Il m’est arrivé à plusieurs reprises de vouloir mettre du texte en arrière-plan sur une page web. Certains disent que le mieux est de mettre son texte sur une image matricielle (format PNG par exemple), et d’indiquer la fichier comme background-image dans le CSS. C’est une solution assez simple mais qui s’avère peu flexible (Et si je n’ai qu’un éditeur de texte sous la main? Et si je veux définir les mots dynamiquement, en PHP par exemple, sans passer par une bibliothèque du type ImageMagick?).

Il existe aussi une bidouille assez connue impliquant une balise <div> dans laquelle on inscrit le texte désiré avant de lui appliquer un z-index inférieur à celui courant. Elle a le mérite de répondre aux problèmes posées par l’utilisation d’une image matricielle, mais en pose d’autres. Il est gênant de se servir du HTML, censé traiter la structure du document, pour en assurer la présentation, en principe dévolue au CSS. Il se peut également que je n’ai pas accès au code HTML.

Sachez qu’il existe une troisième solution, qui a le mérite de cumuler les avantages des deux précédentes, sans présenter aucun de leurs inconvénients : utiliser la propriété background du CSS, mais pour y indiquer l’URL d’un fichier SVG, donc d’une image vectorielle, dans lequel vous aurez au préalable écrit votre texte !

[toc]

Un exemple simple de code pour se faire une idée

Les codes sources HTML, CSS et SVG

Un code HTML tout ce qu’il y a de plus bête

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>Essai CSS</title>
    <link rel="stylesheet" type="text/css" href="test.css" />
</head>
<body id="corps">
<div><p>Ainsi va la vie</p></div>
</body>
</html>

Le CSS qui s’y rapporte

div {
background: url('dessin-mini.svg') red;
border: 1px black solid;
text-align: center;
}
p
{
margin:20px auto 20px auto;
background: silver;
padding: 30px;
text-align: center;
width: 50%;
}

Et enfin le SVG qui va bien

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="180" height="32">
<text y="15">Attention Danger!</text>
</svg>

On obtient donc un fichier très léger, de quelques centaines d’octets (ici 163), manipulable comme un vulgaire fichier texte ! Il faut simplement penser à adapter la valeur de width en fonction de son texte (faisable simplement en comptant les caractères si on utilise une police à chasse fixe — font-family: monospace;).

Le rendu de l’exemple :

Ainsi va la vie

Il est vrai que si le SVG n’est pas souvent évoqué comme possibilité pour les images d’arrière-plan (et encore moins pour les textes) c’est que tous les navigateurs ne sont pas compatibles nativement. Les choses vont quand même bien mieux que début 2011 (avant la sortie de Windows Internet Explorer 9, le premier navigateur de chez Microsoft à supporter le SVG).

Notre texte d’arrière-plan est pour l’instant très simple, mais nous disposons de toute la puissance du SVG pour le personnaliser, l’intégrer à des dessins, etc.

Pour aller plus loin…

Changer la police, la couleur ou la taille du texte

Le SVG minimal proposé plus haut ne contenait aucune information sur l’apparence à donner au texte. C’est donc celle par défaut qui est appliquée. Mais, si vous voulez le personnaliser, ce n’est pas plus compliqué que d’éditer du CSS !

<?xml version="1.0" encoding="UTF-8"?>
<svg
    xmlns="http://www.w3.org/2000/svg"
    version="1.1" width="500" height="32">
    <text
        x="0"
        y="31"
        style="    font-size:40px;
            font-style:normal;
            font-weight:normal;
            line-height:125%;
            letter-spacing:0px;
            word-spacing:0px;
            fill:#000000;
            fill-opacity:1;
            stroke:none;
            font-family:Sans">
    Mon petit texte à moi</text>
</svg>

Vous pouvez ainsi modifier à votre guise bon nombre de propriétés de votre texte SVG très facilement.

Et pour la rotation?

Il est courant de vouloir que le texte d’arrière-plan soit incliné de 30° ou 45°. Il existe deux méthodes pour obtenir ce résultat.

Indiquer la rotation dans le fichier SVG lui-même

C’est la solution qui paraît la plus évidente, mais nous allons voir que ce n’est pas le cas. Elle consiste à appliquer une transformation sur la balise <text> : transform = "rotate(-45 90 16) où -45 correspond à l’inclinaison à donner au texte en degrés (le signe négatif indique qu’il faut tourner dans le sens inverse des aiguilles d’une montre, ce qui n’est pas logique, mais je ne fais pas les normes). Les deux nombres qui suivent indiquent les coordonnées du centre de rotation. Ici, je l’ai placé au milieu du SVG. Le code du fichier est donc le suivant :

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"  width="180" height="32">
<text y="15" transform = "rotate(-45 90 16)">Attention Danger!</text>
</svg>

Le problème essentiel de cette méthode, c’est qu’elle ne fait pas tourner l’image elle-même, seulement son texte. Il faut donc redimensionner l’image pour voir intégralement le texte, mais bien entendu cela modifie le centre de rotation que vous devriez choisir. Cela devient très vite un casse-tête. Donc, sauf si vous utilisez un logiciel de dessin vectoriel comme Inkscape, je vous déconseille d’utiliser cette méthode.

Demander au CSS de faire pivoter l’arrière-plan

En réalité, la solution la plus simple est encore de passer par le CSS pour appliquer la rotation. Dès lors, il s’agit de faire tourner notre texte SVG comme on le ferait de n’importe quelle image d’arrière-plan. Là aussi, des limitations existent, mais elles sont bien moindres. Cela peut devenir un problème seulement si on souhaite mettre le texte en arrière-plan de <body>. Seulement, il s’agit là de tout un programme, et le plus simple est encore de vous renvoyer vers un tutoriel sur le sujet déjà bien rédigé, comme celui-ci (en anglais).

Des personnalisations très poussées

Vous avez toute la puissance du CSS désormais à disposition. Le plus simple pour avoir des fichiers assez légers et très personnalisés est de les réaliser sous Inkscape et de les enregistrer en SVG simple (ce qui n’est pas le format par défaut). Cela permet par exemple de positionner le texte sur des chemins, ou d’y appliquer des transformations complexes. Vous pouvez également essayer d’implémenter à la main quelques transformations grâce à quelques exemples fournis par W3Schools.

Pour finir : le W3C, McLuhan et Apollinaire

Apollinaire : La colombe poignardée et le jet d'eau
Apollinaire : La colombe poignardée et le jet d’eau

Mettre du texte en arrière-plan grâce à un fichier SVG présente donc plusieurs avantages. Pourtant, si le W3C n’a jamais voulu permettre l’écriture dans le CSS (à l’exception notable des pseudo-éléments :before et :after), c’est que pour lui la séparation du fond et de la forme doit être la plus nette possible. Or cette séparation n’est qu’une fiction (qui suppose la séparabilité du message et de son support, voire l’absence d’influence du deuxième sur le premier) qui trouve avant tout sa justification dans la division des tâches au sein des entreprises de développement web. Elle est également un pré-supposé des vastes campagnes de numérisation, et se retrouve même dans les propos de philosophe tels Pierre Lévy [zotpressInText item="ZA4TVT7G"] lorsqu’il affirme que le virtuel est le réel en puissance (ce qui signifie pour lui que tout doit être et sera numérisé).

Pourtant, il est impossible de séparer le message de sa présentation et de son support, les deux derniers contribuant tout autant à la construction du sens que la partie verbale du message (sans compter qu’il serait possible de renouveler cette dichotomie fond/forme pour le texte lui-même). Il y a bien sûr le célèbre aphorisme de McLuhan, « The medium is the message », mais il faut aussi évoquer l’œuvre de Guillaume Apollinaire, dont le travail sur les calligrammes rend évident la participation de la présentation à la construction du sens. On retrouve des expérimentations de la même veine dans le net art et même dans l’ASCII art !

 

Sécuriser (SSL) plusieurs domaines sur une même adresse IP avec Apache2

Il s’agit d’une opération somme toute assez triviale, mais les informations que l’on peut trouver ici ou là à ce sujet sont assez contradictoires voire erronées, y compris sur le propre site d’Apache. À partir d’éléments de réponse éparpillés sur le web, j’ai pu me débrouiller. Pour vous éviter d’avoir à faire plusieurs essais et à trier le bon grain de l’ivraie, j’ai décidé de rédiger ce tutoriel qui vous guidera pas à pas, depuis l’activation du SSL sous Apache jusqu’à la configuration des VirtualHosts.
[toc]

L’expression du besoin

Tout d’abord, il s’agit de savoir ce que l’on entend par plusieurs domaines sur une même adresse IP. Ici, il faut entendre domaine au sens de FQDN sans point final. Vous êtes concerné par exemple si vous souhaitez sécuriser deux sites avec deux noms de domaines différents hébergés sur la même machine, par exemple pour moi :

  • www.insolit.org
  • www.saintseiya.tv

Vous l’êtes également si vous souhaitez sécuriser plusieurs sous-domaines également hébergés sur la même machine, par exemple :

  • www.saintseiya.tv
  • forum.saintseiya.tv

Vous pourriez très bien vous contenter de sécuriser le sous-domaine www en rendant accessible le forum via www.saintseiya.tv/forum, mais la solution est moins esthétique. De plus, procéder par sous-domaine rajoute un soupçon de sécurité à votre site. Regardez par exemple vos logs Apache, vous comprendrez.

Vérification de l’installation

Pour réaliser les opérations qui suivent, votre installation doit supporter les SNI. Autrement dit, vous devez disposer d’au moins la version 0.9.8 d’OpenSSL et 2.2.12 d’Apache. Comme ces deux versions datent respectivement de 2007 et 2009, cela ne devrait poser aucun problème sur des distributions récentes.

En principe, tous les paquets nécessaires sont installés par défaut sur les principales distributions de serveurs GNU/Linux. Au pire, un petit coup d’apt-get, d’aptitude, de yum ou autre et le tour est joué. ;)

 Obtenir les certificats : le plat de résistance

Il y a bien sûr la méthode simple (auto-signature), qui permet en une commande d’obtenir un certificat. Si l’utilisation que vous faites de votre serveur est purement privée, vous pouvez vous en contenter :

sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/localhost.pem

Cependant, même dans le cas d’une utilisation privée, cela ne me semble pas optimal. L’appel à une autorité extérieure me paraît préférable (et en plus ça apprend les bonnes manières pour un usage public). Il existe plusieurs solutions gratuites de certification. Si vous avez un domaine chez Gandi, vous avez droit à un certificat gratuit par exemple (que j’ai gaspillé en faisant n’importe quoi). Il semblerait que StartSSL fournisse également ce genre de service.

Pour ma part, j’ai opté pour CAcert, une autorité de certification gratuite et associative. Les certificats qu’elle fournit produisent une erreur de sécurité (au moins avec Firefox), il vous faudra donc confirmer une exception permanente. CACert est donc à éviter si vous souhaitez faire un usage public de votre site sécurisé, sauf si vous avez à faire à un public web savvy, tel DLFP.

Bref, procédons.

Quelques préliminaires : inscription et vérification du nom de domaine

Inscrivez-vous sur CAcert (il suffit de suivre les instructions), puis dans le menu de droite allez sur Domains > Add. Entrez le nom de domaine que vous souhaitez sécuriser, sans le sous-domaine. Dans mon cas ce fut :

insolit.org

Sur l’écran suivant, vous devez choisir une adresse email vers laquelle envoyer une vérification dans une liste restreinte avec des choix du type webmaster@mondomaine.tld . Si vous ne possédez aucune des adresses référencées, votre registrar vous fournit sûrement un service de redirection gratuit qu’il vous suffit d’activer. C’est le cas chez Gandi en tout cas. Suivez ensuite le reste des instructions.

Génération de la demande de signature de certificat sur votre serveur

Nous allons à présent générer une demande de signature de certificat, ou CSR, grâce à OpenSSL.

 openssl req -newkey rsa:2048 -subj /CN=*.domaine.tld -nodes -keyout domaine_cle_privee.pem -out domaine_csr.pem

Remplacez *.domaine.tld par votre domaine, par exemple *.insolit.org Vous pouvez choisir de préciser le sous-domaine (www par exemple), mais cela signifiera que vous devrez faire autant de certificats que de sous-domaines à sécuriser. Vous pouvez aussi modifier le nom des fichiers de sortie à votre convenance.

Ouvrez votre CSR et copiez TOUT son contenu.

Installation du certificat généré par CAcert

Reconnectez-vous sur CAcert. Dans le panneau de droite, rendez-vous sur Server Certificates > New. Collez l’intégralité de votre CSR dans la boîte de texte. Vérifiez bien que le contenu de la boîte commence par -----BEGIN CERTIFICATE REQUEST----- et se termine par -----END CERTIFICATE REQUEST-----. Cliquez sur Generate. Si vous avez bien suivi mes instructions, CAcert devrait vous retourner un « joli » certificat. Copiez-le et enregistrez-le sur votre serveur, sous le nom domaine_cert.pem par exemple.

Il s’agit maintenant de déplacer les fichiers dans un répertoire approprié. Les commandes suivantes partent du principe que vous n’avez pas modifié les noms de fichiers proposés plus haut.

sudo mv domaine_cert.pem /etc/ssl/certs/ && sudo mv domaine_cle_privee.pem /etc/ssl/priv/

Vous pouvez conserver votre CSR si ça vous amuse, mais il ne vous servira désormais plus à rien. Un petit coup de rm devrait lui régler son compte.

Configuration d’Apache

Mise en place des hôtes virtuels basés sur des noms

Ils sont plus couramment appelés par leur nom anglais, name-based virtual hosts. On va commencer, si ce n’est déjà fait, par activer le module SSL d’Apache :

sudo a2enmod ssl

Puis, ouvrez le fichier /etc/apache2/ports.conf et ajoutez la ligne

NameVirtualHost *:443

juste après celle quasi identique portant sur le port 80. Assurez-vous également que la directive Listen 443 n’est pas commentée. vous devriez donc avoir, au minimum :

NameVirtualHost *:80
NameVirtualHost *:443

Listen 80

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

Créer les fichiers de configuration des hôtes virtuels

Il s’agit simplement de copier un hôte virtuel fonctionnel en accès non sécurisé (de type http) et de le modifier en ajoutant les lignes spécifiques au SSL.

On commence donc par copier le fichier de configuration :

sudo cp /etc/apache2/sites-available/{domaine,domaine_ssl}

Ouvrez ensuite le fichier domaine_ssl. L’une des premières lignes devrait être <VirtualHost *:80>. Remplacez le 80 par 443. Rajoutez une ligne pour activer le SSL après la déclaration du ServerName :

SSLEngine On

À la suite, indiquez la localisation de votre clé privée et de votre certificat :

SSLCertificateFile /etc/ssl/certs/domaine_cert.pem
SSLCertificateKeyFile /ssl/certs/priv/domaine_cle_privee.pem

Et c’est tout ! Recommencez cette dernière opération pour tous les sous-domaines nécessaires. Si vous possédez plusieurs noms de domaines sur la même machine, pensez bien à générer un certificat par domaine. On active l’hôte virtuel et on teste :

sudo a2ensite domaine_ssl
sudo /etc/init.d/apache2 reload

Conclusion et crédits

Normalement, tout devrait fonctionner. Si ce n’est pas le cas, pensez à consulter les logs d’Apache pour en savoir plus.

J’ai réalisé ce tutoriel en en croisant 3 partiels / incomplets :

  1. Sécuriser Apache2 avec SSL, du wiki Ubuntu-fr ;
  2. Simple Apache Cert, du wiki de CACert ;
  3. Name Based Virtual Hosts with SSL using Apache2 on Ubuntu Lucid, sur le blog code(alpha).