Première rédaction de cet article le 26 mars 2015
Traditionnellement, pour trouver de l'information sur un objet enregistré dans une base de données publique de l'Internet (nom de domaine, adresse IP, etc), on utilisait le protocole whois (qui avait été normalisé, longtemps après sa création, dans le RFC 3912). Ce protocole a de grosses limitations (décrites au paragraphe suivant) et plusieurs tentatives ont déjà été faites pour le remplacer. Le nouveau venu, RDAP (Registration Data Access Protocol), va-t-il mieux réussir que les précédents ?
Attention, comme le note le document SAC-051 « SSAC Report on Domain Name WHOIS
Terminology and Structure », le terme « whois » est
souvent employé incorrectement. Il désigne normalement un protocole
(celui normalisé dans le RFC 3912) mais est
également utilisé pour désigner un service (celui d'accès aux données
d'enregistrement) voire pour désigner les données elles-mêmes
(« informations WHOIS », terme erroné mais fréquent).
Voici un exemple d'utilisation de whois sur Unix, avec le logiciel client
GNU whois, pour avoir de l'information sur le domaine
reflets.info
:
% whois reflets.info Domain Name:REFLETS.INFO Creation Date: 2010-12-23T13:46:11Z Updated Date: 2014-12-12T17:24:31Z Sponsoring Registrar:Gandi SAS (R191-LRMS) ... Registrant Name:Antoine Champagne Registrant Organization: Registrant Street: Whois Protege / Obfuscated whois Registrant Street: Gandi, 63-65 boulevard Massena Registrant City:Paris Registrant State/Province: Registrant Postal Code:75013 Registrant Country:FR Registrant Phone:+33.170377666 Registrant Email:ea208c9533d64ffbaa6ff82bdbf084d4-3087564@contact.gandi.net
Parmi les principales limites de whois :
/etc/whois.conf
).Cette liste est connue depuis longtemps. C'est ainsi que le RFC 3707 dressait déjà un cahier des charges d'un bon successeur de whois.
En mai 2012, après pas mal de discussions, l'IETF a créé le groupe de travail WEIRDS pour produire un remplaçant à whois. Ce groupe WEIRDS publie aujourd'hui RDAP (Registration Data Access Protocol), le nouveau protocole. Ses principes ? Modularité (on peut utiliser plusieurs protocoles de transport, le langage d'expression des requêtes est séparé de la définition du format des réponses), et le respect des modes actuelles. Le premier transport normalisé utilise REST et le premier format de réponses est bâti sur JSON (RFC 8259). La requête RDAP avec REST+JSON équivalente à la requête whois citée plus haut serait (cf. la documentation du service RDAP expérimental de .info) :
% curl http://rdg.afilias.info/rdap/domain/reflets.info { "entities": [ { "links": [ { "href": "http://rdg.afilias.info/rdap/entity/AC12196-GANDI", "rel": "self", "type": "application/rdap+json", "value": "http://rdg.afilias.info/rdap/entity/AC12196-GANDI" } ], "objectClassName": "entity", "roles": [ "technical", "billing", "administrative", "registrant" ], "vcardArray": [ "vcard", [ [ "version", {}, "text", "4.0" ], [ "fn", {}, "text", "Antoine Champagne" ], [ "adr", {}, "text", [ "", "", "Whois Protege / Obfuscated whois", "Paris", "", "75013", "FR" ] ], [ "email", {}, "text", "ea208c9533d64ffbaa6ff82bdbf084d4-3087564@contact.gandi.net" ], [ "tel", { "type": "work" }, "uri", "tel:+33.170377666" ], [ "tel", { "type": "fax" }, "uri", "tel:+33.143730576" ] ] ] ...
Les RFC qui forment la définition de RDAP sont :
RDAP remplacera-t-il whois ? C'est que whois en a eu, des concurrents malheureux, et que tous sont bien oubliés aujourd'hui. Dans l'ordre rétro-chronologique :
En tout cas, RDAP est déjà largement mis en œuvre (dix implémentations dont l'interopérabilité a été testée au cours de réunions IETF) même s'il n'y a guère de déploiement en production pour l'instant.
L'exemple plus haut était pour trouver de l'information sur un nom de domaine. Mais RDAP marche aussi pour les adresses IP :
% curl http://rdap.apnic.net/ip/2001:dc7:dd01:0:218:241:97:42 { "handle" : "2001:0DC7::/32", "startAddress" : "2001:dc7::", "endAddress" : "2001:dc7:ffff:ffff:ffff:ffff:ffff:ffff", "name" : "CNNIC-CN-20040913", "type" : "ALLOCATED PORTABLE", "country" : "CN", "parentHandle" : "2001:0C00::/23", "entities" : [ { "handle" : "IPAS1-AP", "vcardArray" : [ "vcard", [ [ "version", { }, "text", "4.0" ], [ "fn", { }, "text", "CNNIC IPAS CONFEDERATION" ], [ "kind", { }, "text", "group" ], [ "adr", { "label" : "No.4, Zhongguancun No.4 South Street,\\nHaidian District, Beijing" }, "text", [ "", "", "", "", "", "", "" ] ], [ "tel", { "type" : "voice" }, "text", "+86-010-58813000" ], [ "tel", { "type" : "fax" }, "text", "+86-010-58813075" ], [ "email", { }, "text", "ipas@cnnic.cn" ] ] ], ...
C'est bien compliqué, tout ce JSON. Et si on veut juste extraire certaines informations ? On peut utiliser un client RDAP spécialisé, ou écrire soi-même un traitement, ou encore se servir des processeurs JSON tout faits comme jq :
% curl -s http://rdap.apnic.net/ip/2001:dc7:dd01:0:218:241:97:42 | jq .country "CN"
Questions mises en œuvre, on peut citer :
De bonnes lectures sur RDAP et le travail du groupe WEIRDS :
Et merci au dit Marc Blanchet pour sa relecture attentive de mon article.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)