Découvrir le protocole EPP

Publié le 23 septembre 2010 par Kbour23

Cet article fait suite à celui sur les résolutions DNS et présente le protocole utilisé par les différentes entités concernées dans une gestion de noms de domaines.

Typiquement, un registre ayant autorité sur un TLD (.fr, .com, .org) et une société qui vend des noms de domaines. EPP (Extensible Provisioning Protocol) est donc un protocole de niveau applicatif bâtit sur XML.

Niveau transport, le protocole s’appuie sur TCP (port 700) et SSL, générallement TLS 1.0.

Il y a plusieurs niveaux de sécurité présents dans ce cycle de traitement :

  • Filtrage au niveau IP
  • Authentification mutuelle SSL par certificat du serveur et du client & encryption
  • Identification par mot de passe dans EPP
  • Contrôle des opérations sur les objets concernées (code Auth) ou propriété

Le filtrage IP consiste généralement pour une société Registrar à déclarer une ou deux adresses qui seront autorisées à se connecter aux serveurs EPP.

Toujours dans la couche transport, l’étape suivante à pour objectif de réaliser une authentification mutuelle SSL. Cette méthode consiste à installer chez les 2 parties les certificats respectifs (clés publiques  signées) et ainsi pouvoir mutuellement prouver leur identité, handshake Serveur & Client. Ces opérations sont réalisables en ligne de commande directement avec OpenSSL :

# openssl s_client -connect epp.xxxxxx.fr:700  -tls1  -cert server.pem
[...]
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
[...]

Passer ces étapes, le protocole consiste donc à échanger des messages XML pour obtenir des informations ou effectuer des opérations. Par exemple,  déposer un nom de domaine ou effectuer une modification des serveurs DNS. Ceux enregistrés au registre et donc obtenus avec un whois:

# whois wordpress.com
[...]
 Domain servers in listed order:
NS1.WORDPRESS.COM
NS2.WORDPRESS.COM
NS3.WORDPRESS.COM
NS4.WORDPRESS.COM
NS5.WORDPRESS.COM
NS6.WORDPRESS.COM

L’ensemble des messages sont détaillés dans les RFC suivants, sachant que certains registres ont implémenté quelques ajouts. Les schémas XML restent toutefois valides malgré les variantes. Cela permet (heureusement) d’optimiser les développements !

La première étape EPP consiste à envoyer une commande d’identification, sans quoi aucune opération n’est réalisable. Ceci se réalise donc avec le message suivant:

<?xml version='1.0' encoding='UTF-8'?>
<epp xmlns='urn:ietf:params:xml:ns:epp-1.0'>
<login><clID>XXXXXX</clID><pw>XXXXXX</pw><options>
<version>1.0</version>
<lang>en</lang>
</options>
<svcs>
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
</svcs>
</login>
</command>
</epp>

A cette étape, les opérations lancées pourront donc impacter tous les objets (Domaines, Contacts) propriété de la personne identifiée. Il est a noter, que dans le cas d’un domaine, il peut être demandé de fournir le CodeAuth associé. Par exemple, dans le cas d’un mot-clé réservé (nom de ville, etc…). Le code est fourni (après vérification de l’organisme demandeur) par le registre  et devra être indiqué lors du dépôt.

Contrairement à ce qui est indiqué sur l’article de Wikipédia, la majorité des opérations ne sont PAS exécutées en temps réel. Lorsque tel est le cas, le retour est signalé par le code 1000. Cela concerne particulièrement les opérations de type dépôt ou de création de contact.

Dans le cas d’une modification de DNS cette démarche est totalement logique, puisque l’Afnic par exemple, effectue un ZoneCheck avant de valider ou pas le nouveau paramétrage. Le délais de traitement reste très rapide, de l’ordre de quelques minutes.

Je vous invite à lire tous les codes dans les RFCs ou dans les guides d’intégration fournis par les registres pour plus de détails.

Plus d’info:

  • http://www.bortzmeyer.org/search?pattern=epp
  • http://www.afnic.fr/doc/interface/epp

Filed under: Réseaux Tagged: afnic, epp, xml