Haut de page

Intégration et utilisation des certificats CNRS (et CRU)avec MacOS X Client et Server 10.3, 10.4, 10.5


Avant propos


Avant propos [juin 2004]

Après une dernière semaine de bataille (j'y suis globalement depuis le mois de février), j'ai enfin compris que mon dernier problème de certificat venait du fait que je signais avec une adresse électronique Prenom.Nom@lip6.fr alors que le certificat du CNRS était prenom.nom@lip6.fr ! Bref, grâce à l'intervention de Marc Victor, le site du CNRS a légèrement été modifié afin de permettre les majuscules dans les adresses car il transformait ces majuscules en minuscules dans le formulaire de demande de certificat !

Les certificats : comment ça marche ?

On va essayer de faire simple sans trop dire de bêtises : Vous allez obtenir un certificat X509 (en gros un couple clef privée / clef publique) d'une Autorité de Certification (AC). Dans notre cas c'est le CNRS pour les adresses @lip6.fr. (Il n'y en a pas encore pour l'Université Paris 6).

Dans le cas du mail, vous pourrez signer vos mails grâce à votre clef privée et vous enverrez votre clef publique en pièce jointe. Lorsque votre interlocuteur recevra le mail, il pourra demander à l'AC de certifier qu'elle vous connaît bien. Cela lui permet d'être sûr que c'est bien vous l'émetteur. Par contre, rien ne garantit le contenu.

Si vous avez obtenu la clef publique d'un de vos interlocuteurs, vous allez alors pouvoir non seulement signer mais aussi crypter vos mails grâce à sa clef. À la réception, il pourra non seulement être sûr de l'origine mais aussi du contenu. Enfin comme cela a été crypté avec sa clef publique, il n'y a que sa clef privée, donc que lui, qui pourra le décoder. Le message ne peut donc pas être intercepté. Voir plus de détails sur le site du Comité Réseau des Universités ou du CNRS.

Ce qui va suivre est valable pour MacOS X. Cela peut être valable pour d'autres Unix ou même Windows mais je ne m'aventurerai pas à le certifier :)

Sur MacOS X, il existe un certain nombre d'Autorités de Certification pré-enregistrées. Le CNRS ne fait pas encore partie de celles-ci, il faut donc le rajouter. Cela doit se faire une seule fois sous le compte d'administrateur (et même en root).

Par exemple, tant que vous n'avez pas ajouté le CNRS comme Autorités de Certification, lorsque vous vous connectez à un site sécurisé du CNRS, vous obtenez "Safari ne parvient pas à vérifier l'identité du site Web ..." :

[juin 2005] Safari 2.0 affiche correctement les certificats CNRS. Ils n'étaient pas affichés avec la version précédente.

Lorsque vous recevez un message, vous obtenez "Impossible de vérifier la signature du message" :

Les applications Mail et Safari qui sont livrées avec le système partagent les mêmes certificats qui sont stockés dans le Trousseau. (Magasin de certificats sous Windows). L'utilitaire Trousseau d'accès (Keychain Access) permet de gérer le Trousseau contient tous vos mots de passe d'applications et mots de passe internet (http et https) ainsi que votre clefs privée et publique. Dès que vous recevez un mail comportant une clef publique, son certificat est ajouté à votre Trousseau. Dès que vous envoyez un mail, il est possible de le crypter si les certificats de vos interlocuteurs sont dans votre Trousseau.

Envoie d'un message signé (ou pas) (cocher ou décocher l'icône au dessus du texte du message) Réception d'un message signé
Envoie d'un message crypté et signé (cliquer sur l'icône cadenas) Réception d'un message crypté et signé

Malheureusement, il n'est pas possible d'utiliser Safari pour obtenir son certificat du CNRS, en attendant que cela soit possible, il faut passer par Mozilla ce qui oblige à une certaine gymnastique dans la mesure où Mozilla ne stocke pas les certificats dans le Trousseau. Il faut donc effectuer sa demande avec Mozilla, confirmer par mail, récupérer son certificat avec Mozzila, l'exporter dans un fichier au format PKCS12 en y mettant un mot de passe et enfin intégrer ce fichier dans le Trousseau. Du coup, cette opération qui pourrait être faite par l'utilisateur final si cela marchait avec Safari, m'oblige à intervenir pratiquement sur chaque poste.... mais c'est toujours un plaisir et je peux répondre aux autres questions comme "Comment faire pour que Word fasse ce que je veux, l'ancienne version marchait mieux, pourquoi le fichier Excel m'indique que le mot de passe utilise une méthode de cryptage qui n'est pas disponible dans mon pays alors qu'on utilise exactement le même système et le même Excel ...".


Ajouter le CNRS comme Autorité de Certification (Certificat Authority) - [juin 2004]

Issu de la page de Matthieu Herrb :

Il faut être administrateur de la machine pour la suite :

sudo certtool i ~/Desktop/CNRS.crt k=/System/Library/Keychains/X509Anchors sudo certtool i ~/Desktop/CNRS-Standard.crt k=/System/Library/Keychains/X509Anchors

sudo certtool I ~/Desktop/CNRS.crl k=/System/Library/Keychains/X509Anchors sudo certtool I ~/Desktop/CNRS-Standard.crl k=/System/Library/Keychains/X509Anchors


Ajouter le CRU comme Autorité de Certification (Certificat Authority) - [janvier 2005]

Il faut être administrateur de la machine pour la suite :

sudo certtool i ~/Desktop/ac-racine.crt k=/System/Library/Keychains/X509Anchors

sudo certtool I ~/Desktop/ac-racine.crl k=/System/Library/Keychains/X509Anchors


Faire votre demande de certificat CNRS [juin 2004]

Cette partie doit être faite sous votre compte.

Bien que "compatible" avec les certificats de sécurité du CNRS, il n'est toujours pas possible d'obtenir un certificat. Pour cela il faut passer par une autre navigateur. Par exemple Mozilla 1.6. (accès en invité depuis le laboratoire afp://serveur.lip6.fr/MacOSX/Communication/WWW/Clients/mozilla-1.6.dmg)

Votre "autorité d'enregistrement" va recevoir une demande d'identification du CNRS, il/elle va vous contacter et va autoriser le certificat.

Pour intégrer votre certificat dans le trousseau de MacOS X, il faut l'exporter de Mozilla.


Faire une demande de certificat serveur [Nov 2004]

  • Pour demander un certificat serveur, il faut tout d'abord avoir obtenu et mis en place son certificat personnel.
  • Vous recevrez un mail de confirmation

    Votre "autorité d'enregistrement" va recevoir une demande d'identification du CNRS, il/elle va vous contacter et va autoriser le certificat.


    Configurer un serveur web (https) MacOS X Server avec un certificat CNRS. [Déc 2004]

    Vous venez de faire votre demande de certificat serveur et vous avez reçu le mail Votre certificat crypté et signé contenant le certificat de la machine et sa clef secrète. Vous ouvrez l'application Server Admin. (Comme dans la page configuration de MacOS X Server, les photos d'écran sont en anglais car il est plus facile de trouver de la documentation en anglais sur ce sujet).

    Server Admin HTTPSSélectionner la ligne Web de votre serveur sur la zone Computer & Services à gauche

    Cliquer sur Settings en bas, au milieu de la fenêtre puis sur l'onglet Sites pour choisir le site à configurer (Virtual host).

    Sélection le site et cliquer sur le bouton d'édition en bas (Pictogramme crayon).

    Dans l'onglet Général, remplacer le port 80 (http) par 443 (https).

    Cliquer ensuite sur l'onglet Security puis cocher le case Enable Secure Sockets Layer (SSL)

    Entrer une Pass Phrase (mais elle n'est pas demandée plus tard ?) et vous devez éditer les trois fichiers (Certificate File, ket File et CA File). Or vous n'avez reçu que deux fichiers. Heureusement que le support CNRS vous indique la page extrèmement complète http://www.dr15.cnrs.fr/Delegation/STI/Certifs/Apache/, vous trouverez comment constituer le dernier fichier.
    • Cliquer sur le bouton d'édition (Pictogramme crayon) de la ligne Cerficate File.
      • Coller le texte issus du mail Votre certificat commençant par -----BEGIN CERTIFICATE----- et se terminant par -----END CERTIFICATE-----
    • Cliquer sur le bouton d'édition (Pictogramme crayon) de la ligne Key File.
      • Coller le texte issus du mail Votre certificat commençant par -----BEGIN RSA PRIVATE KEY----- et se terminant par -----END RSA PRIVATE KEY-----
    • Le troisième fichier est une chaîne de certification composée de votre certificat de serveur, du certitificat de l'autorité CNRS-Standard et du certificat de l'autorité CNRS.
    • Télécharger le certificat de l'autorité CNRS-Standard (CNRS-standard.crt) et le certificat de l'autorité CNRS (CNRS.crt). Vous trouverez aussi les mêmes certificats dans l'archive ca-cnrs.tgz (à décompacter en double-cliquant dessus).
    • Ouvrer ces deux fichiers avec TextEdit par exemple.
    • Cliquer sur le bouton d'édition (Pictogramme crayon) de la ligne CA File. Vous allez y mettre une chaîne de certification composée de votre certificat de serveur, du certitificat de l'autorité CNRS-Standard et du certificat de l'autorité CNRS :
      • Coller le texte issus du mail Votre certificat commençant par -----BEGIN CERTIFICATE----- et se terminant par -----END CERTIFICATE-----
      • Ajouter le texte issus du fichier CNRS-standard.crt commençant par -----BEGIN CERTIFICATE----- et se terminant par -----END CERTIFICATE-----
      • Ajouter le texte issus du fichier CNRS.crt commençant par -----BEGIN CERTIFICATE----- et se terminant par -----END CERTIFICATE-----

    Activer votre serveur Web en cliquant sur le bouton Save puis Start Service en haut.

    Vous avec un serveur https avec un certificat du CNRS en état de marche.

    PS: N'oubliez pas d'ouvrir le FireWall en ouvrant les Web Service SSL (443) à qui vous voulez.

    Avantage des outils d'administration de MacOS X Server, c'est simple et ça marche. Inconvénient, on ne pas tout faire comme on aimerait. Pour cela, on peut prendre un MacOS X (client) et installer à la main comme sous Linux... et pourquoi pas tout recompiler...


    Configurer LDAP SSL sur MacOS X Server avec un certificat CNRS. [Fév 2005]

    Vous venez de faire votre demande de certificat serveur et vous avez reçu le mail Votre certificat crypté et signé contenant le certificat de la machine et sa clef secrète.
    • Se connecter sur le serveur pour créer le répertoire /etc/openldap/ssl (localisation conseillée par Apple).
      • mkdir /etc/openldap/ssl
      • # uniquement rwx pour root:wheel
      • chmod 700 /etc/openldap/ssl
    • Créer les trois fichiers server.key, server.crt, et ca.crt et y mettre les certificats comme pour la configuration SSL du serveur Web ci-dessus.

    Ouvrir l'application Server Admin.

    • Choisir Open Directory (à droite), Settings (en bas) et Protocols (en haut).
    • Cocher la case use SSL
    • Cliquer sur les trois ... de SSL Certificate, SSL key et CA Certificate pour localiser sur votre serveur les trois fichiers que vous venez de créer.

    PS: N'oubliez pas d'ouvrir le FireWall en ouvrant les Secure LDAP (636) à qui vous voulez.


    Ajouter un certificat serveur dans MacOS X Server 10.4.11

    Dans Server admin, Sélectionner le serveur dans la listes Computers & Services à gauche puis l'onglet Settings en bas et l'onglet Cetificates en haut.

    Les certifcats importés sont copiés dans /etc/certificates

    -rw-r--r-- 1 root wheel server.domain.chcrt // certificateChain contient la chaine de certificat -----BEGIN CERTIFICATE----- -rw-r--r-- 1 root wheel server.domain.crt // contient le certificat -----BEGIN CERTIFICATE----- -rw-r----- 1 root certusers server.domain.crtkey // contient le certificat suivit de la clef -rw-r----- 1 root certusers server.domain.key // contient la clef -----BEGIN RSA PRIVATE KEY-----

    Sur un problème de renouvellement d'un certificat signé CNRS, il semble qu'Admin Server n'aime pas avoir plusieurs certificats pour le même serveur (un n'ayant pas expiré le le suivant).

    servermgrd: servermgr_info: [21662] [CertificateManager importIdentity:] Error importing private key: SecKeychainItemImport (err = -2147413719) servermgrd: servermgr_info: [41] [CertificateManager addSignedCertificate:]: SecCertificateAddToKeychain (err = -25299)

    J'ai été obligé d'exporter la configuration (Server Config.plist), supprimer la configuration d'origine en ayant pris soin de recopier les fichiers de certificats, de corriger les fichiers .crt, .key et .crtkey et ré-importer le fichier .plist. Le certificat était correct mais devenu autosigné. En choisissant de modifier le certificat puis le bouton Add Signed Certificate... et en collant le .crt reçu puis Save, le serveur indique que ce n'est plus autosigné. Le mail pops qui l'utilise le trouve toujours autosigné.... il faut arrêter le mail et le relancer ...


    Ajouter un certificat serveur dans MacOS X Server 10.5

    Dans MacOS X server 10.5, les certificats pour tous les services sont centralisés à un endroit.

    Vous venez de faire votre demande de certificat serveur et vous avez reçu le mail Votre certificat crypté et signé contenant le certificat de la machine et sa clef secrète. Copier ces cerficats dans un répertoire protégé du serveur.

    Dans l'application Server Admin, Sélectionner le serveur dans la listes SERVERS à gauche puis l'icone Certificates. Cliquer sur l'icône en forme de roue dentée et choisir Import Certificate...

    Sélectionner les trois fichiers (.crt, .key et CNRS.crt). Ils seront analysés et importer dans /etc/certificates

    -rw-r--r-- 1 root wheel server.domain.crt // contient le certificat -----BEGIN CERTIFICATE----- -rw-r----- 1 root certusers server.domain.crtkey // contient le certificat suivit de la clef -rw-r----- 1 root certusers server.domain.key // contient la clef -----BEGIN RSA PRIVATE KEY-----

    Attention, lors du renouvellement, cela part en erreur. Il faut supprimer l'ancien certificat, cliquer sur Enregistrer puis le rajouter.


    Détails côté serveur

    Voici quelques détails de ce qui se passe.

    Le fichier de log (/var/log/httpd/ssl_engine_log) contient :

    [11/Dec/2004 17:16:29 14851] [info] Init: Loading certificate & private key of SSL-aware server admin.lip6.fr:443 [11/Dec/2004 17:16:33 14854] [info] Init: Configuring server admin.lip6.fr:443 for SSL protocol

    Sous MacOS X Server 10.3, le serveur web est un serveur apache 1.3.x. Apache 2.x est présent sur le serveur mais pas activé. Les outils d'administrations sont indépendants de la version du serveur dans la mesure où c'est eux qui générent les fichiers de configuration pour apache. En particulier, le fichier /etc/httpd/httpd.conf n'est jamais modifié. Il inclut à la fin l'ensemble des fichiers *.conf contenus dans le répertoire /etc/httpd/sites/ (dans le répertoire /etc/httpd/users/ sous MacOS X client).

    Le fichier /etc/httpd/httpd.conf contient :

    ## SSL stuff ## It's OK to modify these directly. <IfModule mod_ssl.c> SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown SSLPassPhraseDialog exec:/etc/httpd/getsslpassphrase SSLSessionCache dbm:/var/log/httpd/ssl_scache SSLSessionCacheTimeout 300 SSLMutex file:/var/log/httpd/ssl_mutex SSLRandomSeed startup builtin SSLRandomSeed connect builtin SSLLogLevel info AddType application/x-x509-ca-cert crt AddType application/x-pkcs7-crl crl </IfModule>

    ls -al getsslpassphrase

    -rwx------ 1 root wheel 4113 20 Sep 2003 getsslpassphrase

    sudo ls -al ssl.crt/

    drwx------ 6 root wheel 204 10 Dec 16:02 . -rwx------ 1 root wheel 43 25 Feb 2004 ca.crt1any_80_default -rw-r--r-- 1 root wheel 3918 10 Dec 16:02 ca.crtX -rw-r--r-- 1 root wheel 1431 10 Dec 16:02 server.crtX -rwx------ 1 root wheel 43 25 Feb 2004 server.crtany_80_default

    sudo ls -al ssl.key/

    drwx------ 4 root wheel 136 10 Dec 16:02 . -rw-r--r-- 1 root wheel 887 10 Dec 16:02 server.keyX -rwx------ 1 root wheel 43 25 Feb 2004 server.keyany_80_default

    Le fichier virtual_host_global.conf contient :

    Listen 132.227.73.19:80 NameVirtualHost 132.227.73.19:80 Listen 132.227.73.19:443 NameVirtualHost 132.227.73.19:443

    Le fichier 0001_132.227.73.19_443_admin.lip6.fr.conf contient :

    <VirtualHost 132.227.73.19:443> ServerName admin.lip6.fr ServerAdmin wadm[@]lip6.fr DocumentRoot "/Library/WebServer/Documents/admin" DirectoryIndex "index.php" "index.html" CustomLog '|/usr/sbin/rotatelogs "/var/log/httpd/admin_access_log" 604800' "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" ErrorLog '|/usr/sbin/rotatelogs "/var/log/httpd/admin_error_log" 604800' ErrorDocument 404 /notOnLine.html <IfModule mod_ssl.c> SSLEngine On SSLLog "/var/log/httpd/ssl_engine_log" SSLCertificateChainFile "/etc/httpd/ssl.crt/ca.crtX" SSLCertificateFile "/etc/httpd/ssl.crt/server.crtX" SSLCertificateKeyFile "/etc/httpd/ssl.key/server.keyX" SSLCipherSuite "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:!SSLv2:+EXP:+eNULL" </IfModule> <IfModule mod_dav.c> DAVLockDB "/var/run/davlocks/.davlock100" DAVMinTimeout 600 </IfModule> <Directory "/Library/WebServer/Documents/admin"> Options All -Indexes -ExecCGI +MultiViews <IfModule mod_dav.c> DAV Off </IfModule> AllowOverride None AuthType Basic AuthName "Admin" <Limit GET head OPTIONS CONNECT POST PROPFIND> Require group adminLIP6 </Limit> <Limit PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> Require no-user </Limit> </Directory> <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F] </IfModule> <IfModule mod_alias.c> </IfModule> LogLevel warn </VirtualHost>

    Récupérer un certificat et/ou une chaine de certification d'une machine

    openssl s_client -connect admin.lip6.fr:443 ou mieux echo -n | openssl s_client -connect admin.lip6.fr:443

    Ca commence avec -----BEGIN CERTIFICATE----- et termine par -----END CERTIFICATE-----

    Pour avoir toute la chaine de certification c'est echo -n | openssl s_client -showcerts -connect admin.lip6.fr:443


    Références:

    Voir aussi

    Certificats CNRS http://igc.services.cnrs.fr/CNRS-Standard/recherche.html La page de Matthieu Herrb concernant les certificats CNRS avec Mail et Safari La page de la délégation Aquitaine et Poitou-Charente concernant la mise en oeuvre d'un serveur Apache utilisant les certificats de l'IGC du CNRS http://docs.info.apple.com/article.html?artnum=304808 Comité Réseau des Universités

    2004-2015


    FutureShare  |  Glossaire  |