[.gr] cctld Σελίδα 1 από 13 Μητρώο [.gr] Οδηγός ιασύνδεσης & Αξιοποίησης του Εξυπηρετητή EPP Έκδοση 2.0 [ EPP Server Connection and Use Guide ]
[.gr] cctld Σελίδα 2 από 13 Περιεχόµενα Περιεχόµενα... 2 Οδηγίες διασύνδεσης µε τον Εξυπηρετητή EPP... 3 Εισαγωγή... 3 Εκκίνηση επικοινωνίας... 3 Η Υλοποίηση του EPP από το [.gr] Μητρώο... 5 Γενικοί Κανόνες... 5 Εντολές διαχείρισης συνεδρίας (session).... 5 Εντολές διαχείρισης ονοµάτων χώρου (domain).... 5 Εντολές διαχείρισης εξυπηρετητών (host).... 7 Εντολές διαχείρισης επαφών (contact).... 7 Επεκτάσεις XML... 9 extcommon-1.0.xsd... 9 extdomain-1.0.xsd... 10 extcontact-1.0.xsd... 11 exthost-1.0.xsd... 12 Αναφορές... 13
[.gr] cctld Σελίδα 3 από 13 Οδηγίες διασύνδεσης µε τον Εξυπηρετητή EPP Εισαγωγή Το αρχείο αυτό περιγράφει τον τρόπο επικοινωνίας µε τον εξυπηρετητή (server) EPP, του συστήµατος διαχείρισης ονοµάτων χώρου [.gr]. Επικοινωνία µε τον εξυπηρετητή. Η επικοινωνία µε τον εξυπηρετητή γίνεται µέσω πρωτοκόλλου EPP, το οποίο υλοποιείται µε την χρήση Ασφαλούς HTTP (EPP over HTTPS). H εκάστοτε εφαρµογή πελάτης (client application) πρέπει αρχικά να συνδέεται στον εξυπηρετητή EPP του µητρώου (registry) µέσω HTTPS και κατόπιν να στέλνει µέσα από αυτό το κανάλι επικοινωνίας εντολές του πρωτοκόλλου EPP. Οι διευθύνσεις επικοινωνίας µε τον εξυπηρετητή EPP του µητρώου είναι 1) για το περιβάλλον δοκιµών devepp.hostmaster.gr 2) για το περιβάλλον παραγωγής / κανονικής λειτουργίας regepp.ics.forth.gr Η θύρα διασύνδεσης (TCP connection port) είναι και στις δύο περιπτώσεις η 700 [IANA]. Έτσι το πλήρες URL για την διασύνδεση µε τον εξυπηρετητή είναι: https://devepp.hostmaster.gr:700/epp/proxy Εκκίνηση επικοινωνίας Κατά την αρχική επικοινωνία η εφαρµογή πελάτης (client application) πρέπει να συνδεθεί στον εξυπηρετητή και να στείλει την EPP εντολή <hello>, ή την EPP εντολή <login>. Σε κάθε περίπτωση, στην απάντηση που θα λάβει η εφαρµογή πελάτης από τον εξυπηρετητή EPP του µητρώου, θα περιέχεται ένας µοναδικός αριθµός συνεδρίας ο οποίος χαρακτηρίζει την συγκεκριµένη συνεδρία (session). Ο αριθµός αυτός χαρακτηρίζεται ως sessionid. Μέσα στην συνεδρία (session) αυτή θα εξυπηρετείται η εφαρµογή. Έτσι η εφαρµογή πελάτης θα πρέπει να αποστέλλει στον εξυπηρετητή (µε κατάλληλο τρόπο) τον µοναδικό αυτό αριθµό συνεδρίας (sessionid), σε κάθε επόµενη εντολή της προς αυτόν. Τον µοναδικό αριθµό συνεδρίας (sessionid) η εφαρµογή πελάτης τον λαµβάνει µέσω του πεδίου αρχής του πρωτοκόλλου (http header field) Set-Cookie, απ όπου πρέπει να τον ανακτά και να τον αποθηκεύει για µελλοντική χρήση. Στην συνέχεια και σε κάθε εντολή που αποστέλλεται προς τον εξυπηρετητή από την εφαρµογή πελάτη, θα πρέπει µέσω του πεδίου αρχής του πρωτοκόλλου (http header field) Cookie, να αποστέλλεται και ο αριθµός συνεδρίας (sessionid), που αποθηκεύτηκε κατά την επιτυχή ολοκλήρωση του <login> ή <hello>. Επειδή η διασύνδεση µε τον εξυπηρετητή είναι βασισµένη σε πρωτόκολλο HTTPS, η εφαρµογή πελάτης θα πρέπει να διαθέτει και να χρησιµοποιεί το δηµόσιο πιστοποιητικό (public server certificate) του εξυπηρετητή. Το δηµόσιο πιστοποιητικό (public certificate) του εξυπηρετητή είναι διαθέσιµο στην τοποθεσία https://devweb.hostmaster.gr/hostmaster/documentation/devepp.cer όσον αφορά το περιβάλλον δοκιµών. Το πιστοποιητικό του εξυπηρετητή του περιβάλλοντος παραγωγής είναι διαθέσιµο µόνο στους αδειοδοτηµένους καταχωρητές. Η κατάλληλη χρήση του δηµόσιου πιστοποιητικού του εξυπηρετητή εξαρτάται από την εφαρµογή πελάτη.
[.gr] cctld Σελίδα 4 από 13 Στην περίπτωση που η εφαρµογή πελάτης έχει αναπτυχθεί σε γλώσσα Java, το πιστοποιητικό πρέπει να εισαχθεί αρχικά σε ένα αρχείο, το οποίο δηλώνει τα γνωστά και έγκυρα πιστοποιητικά. Αυτό γίνεται µε την βοήθεια του εργαλείου keytool και συγκεκριµένα: UNIX $JAVA_HOME/bin/keytool import file devweb.cer keystore trustedcerts WINDOWS %JAVA_HOME%\bin\keytool import file devweb.cer keystore trustedcerts ΣΗΜΕΙΩΣΗ Κατά την εισαγωγή του πιστοποιητικού θα ζητηθεί ο κωδικός του κλειδιού. Αυτός είναι devepp. Κατόπιν θα πρέπει να εκκινήσουµε την εφαρµογή πελάτης δηλώνοντας παράλληλα ότι αποδεχόµαστε την χρήση του πιστοποιητικού που εισάγαµε προηγούµενα. java Djavax.net.ssl.trustStore trustedcerts <application> Εναλλακτικά αυτό µπορεί να δηλωθεί και µέσα στον κώδικα της εφαρµογής ως εξής: System.setProperty( javax.net.ssl.truststore, StoreFile); Όπου StoreFile = <διαδροµή προς>/ trustedcerts. Παράδειγµα εφαρµογής πελάτη που χρησιµοποιεί τον εξυπηρετητή EPP του µητρώου υπάρχει διαθέσιµο στις σελίδες τεκµηρίωσης.
[.gr] cctld Σελίδα 5 από 13 Η Υλοποίηση του EPP από το [.gr] Μητρώο Το πρωτόκολλο το οποίο µπορεί να χρησιµοποιηθεί για την επικοινωνία των καταχωρητών µε το µητρώο είναι το EPP (Extensible Provisioning Protocol). Αναλυτική περιγραφή του EPP είναι διαθέσιµη από την IETF στην ιστοσελίδα http://www.ietf.org/ids.by.wg/provreg.html. Στο παρόν κείµενο περιγράφεται η συµµόρφωση της κάθε EPP εντολής που υποστηρίζεται από τον EPP εξυπηρετητή του µητρώου µε τα πρότυπα. Γενικοί Κανόνες Ταυτοποίηση Αποδεκτό είναι µόνο το υπο-πεδίο <pw> του πεδίου <authinfo>. Οµαδοποίηση των Επαφών Το πεδίο <contact:id> πρέπει να έχει την εξής µορφή: 123_abcdef όπου: 123 είναι το Πρόθεµα Επαφής που δίνεται στον Καταχωρητή από το Μητρώο κατά την εγγραφή, και abcdef είναι ένας µοναδικός, για τον Καταχωριτή, κωδικός προσδιορισµού επαφής την οποία επιλέγει ο Καταχωρητής κατά την δηµιουργία της επαφής. Ο κωδικός αυτός πρέπει να µην χρησιµοποιείται ήδη από τον Καταχωρητή σε άλλη επαφή. Το συνολικό µήκος του πεδίου <contact:id> δέν πρέπει να υπερβαίνει τους 16 χαρακτήρες. Εντολές διαχείρισης συνεδρίας (session). Η υλοποίηση είναι βασισµένη στο πρότυπο [EPP]. <login> <logout> <hello> <poll> Όπως περιγράφεται στο πρότυπο, µε τις εξής διαφοροποιήσεις: Τα πεδία <clid> και <pw> θα δοθούν από το µητρώο και θα είναι µοναδικά ανά καταχωρητή. Αποδεκτές τιµές για το πεδίο <lang> είναι το en και el για αγγλικά και ελληνικά αντίστοιχα. Το περιεχόµενο του πεδίου <svcs> θα δοθεί από το µητρώο. Όπως περιγράφεται στο πρότυπο. Όπως περιγράφεται στο πρότυπο. Εκκρεµεί η υλοποίηση. Εντολές διαχείρισης ονοµάτων χώρου (domain). Η υλοποίηση είναι βασισµένη στα πρότυπα [EPP] και [EPP-D]. <check> <info> <transfer op= query > Επιτρέπεται η εκτέλεση της εντολής µόνο από τον παλαιό και τον αιτών καταχωρητή. Ο αιτών καταχωρητής πρέπει να στείλει και το πεδίο <domain:authinfo>. Ο παλαιός καταχωρητής µπορεί προαιρετικά να στείλει και το πεδίο <domain:authinfo>.
[.gr] cctld Σελίδα 6 από 13 <create> <delete> <renew> <transfer> <update> Το πεδίο <domain:registrant> απαιτείται. Το υπο-πεδίο <extdomain:use> µέσα στο πεδίο <extension> απαιτείται. Λόγω κανονισµού αποδεκτή είναι µόνο η παρακάτω µορφή του πεδίου <domain:period>: <domain:period unit= y >2</domain:period> Επιτρέπονται µέχρι δεκαέξι (16) πεδία <domain:hostobj> Επιτρέπονται µέχρι δέκα (10) πεδία <domain:contact> Λόγω κανονισµού αποδεκτή είναι µόνο η παρακάτω µορφή του πεδίου <domain:period>: <domain:period unit= y >2</domain:period> Ανανέωση ονόµατος χώρου επιτρέπεται µέσα σε 90 µέρες από την ηµεροµηνία λήξης του. εν επιτρέπεται η χρήση του πεδίου <domain:period> Κατά την αίτηση (op= request ) απαιτείται η χρήση του extension πεδίου <extdomain:registrantid> όπου θα ορίζεται ο κωδικός επαφής της επαφής προσώπου που θα χρησιµοποιηθεί σαν registrant (ιδιοκτήτης) του ονόµατος χώρου όταν η διαδικασία transfer ολοκληρωθεί µε op= approve. Αν κατά την ολοκλήρωση της διαδικασίας υπάρχει επαφή (στον νέο καταχωρητή) µε αυτό το κωδικό επαφής τότε θα οριστεί αυτή σαν registrant. Αν κατά την ολοκλήρωση τής διαδικασίας δεν υπάρχει επαφή µε αυτό το κωδικό επαφής (στον νέο καταχωρητή) τότε θα κατασκευαστεί αυτόµατα µία, µε αυτό το κωδικό επαφής και θα αντιγραφούν τα στοιχεία της επαφής registrant του ονόµατος χώρου από τον προηγούµενο καταχωρητή. Κατά τη αίτηση (op= request ) απαιτείται η αποστολή του πεδίου <domain:authinfo>. Κατά τη ακύρωση (op= cancel ) απαιτείται η αποστολή του πεδίου <domain:authinfo>. Κατά τη έγκριση (op= approve ) είναι προαιρετική η αποστολή του πεδίου <domain:authinfo>. Κατά τη απόρριψη (op= reject ) είναι προαιρετική η αποστολή του πεδίου <domain:authinfo>. Το υπο-πεδίο <domain:registrant> µέσα στο πεδίο <domain:chg> δεν επιτρέπεται να έχει άδεια τιµή. Η χρήση του υπο-πεδίου αυτού επιτρέπεται µόνο για την αλλαγή registrant σε ένα όνοµα χώρου (domain). Το υπο-πεδίο <domain:pw> µέσα στο πεδίο <domain:chg> δεν επιτρέπεται να έχει άδεια τιµή. Η χρήση του υπο-πεδίου αυτού επιτρέπεται µόνο για την αλλαγή κωδικού πρόσβασης σε ένα όνοµα χώρου (domain). Όχι για την αφαίρεση του κωδικού πρόσβασης. Επιτρέπονται µέχρι δεκαέξι (16) υπο-πεδία <domain:hostobj> µέσα στο πεδίο <domain:add> Επιτρέπονται µέχρι δέκα (10) υπο-πεδία <domain:contact> µέσα στο πεδίο <domain:add> Επιτρέπονται µέχρι έντεκα (11) υπο-πεδία <domain:status> µέσα στο πεδίο <domain:add>
[.gr] cctld Σελίδα 7 από 13 Επιτρέπονται µέχρι δεκαέξι (16) υπο-πεδία <domain:hostobj> µέσα στο πεδίο <domain:rem> Επιτρέπονται µέχρι δέκα (10) υπο-πεδία <domain:contact> µέσα στο πεδίο <domain:rem> Επιτρέπονται µέχρι έντεκα (11) υπο-πεδία <domain:status> µέσα στο πεδίο <domain:rem> Εντολές διαχείρισης εξυπηρετητών (host). Η υλοποίηση είναι βασισµένη στα πρότυπα [EPP] και [EPP-H]. <check> <info> <transfer op= query > <create> <delete> <renew> <transfer> <update> Επιτρέπονται µέχρι τριάνταδύο (32) πεδία <host:addr> Επιτρέπονται µέχρι τριάνταδύο (32) υπο-πεδία <host:hostaddr> µέσα στο πεδίο <host:add> Επιτρέπονται µέχρι επτά (7) υπο-πεδία <host:status> µέσα στο πεδίο <host:add> Επιτρέπονται µέχρι τριάνταδύο (32) υπο-πεδία <host:hostaddr> µέσα στο πεδίο <host:rem> Επιτρέπονται µέχρι επτά (7) υπο-πεδία <host:status> µέσα στο πεδίο <host:rem> Εντολές διαχείρισης επαφών (contact). Η υλοποίηση είναι βασισµένη στα πρότυπα [EPP] και [EPP-C]. <check> <info> <transfer op= query > εν υλοποιείται. <create> <delete> <renew> <transfer> <update> Απαιτείται η ύπαρξη του πεδίου <contact:postalinfo type= loc >. εν υλοποιείται. εν επιτρέπονται τα υπο-πεδία <contact:name>, <contact:org> µέσα στο πεδίο <contact:chg>.
[.gr] cctld Σελίδα 8 από 13 Στο <contact:disclose> πεδίο, τα χαρακτηριστικά (π.χ. <contact:voice/>, <contact:email/>) τα οποία δεν αναφέρονται σαφώς, θεωρούνται ως έχοντα <contact:disclose flag= 0 >.
[.gr] cctld Σελίδα 9 από 13 Επεκτάσεις XML extcommon-1.0.xsd <?xml version="1.0" encoding="utf-8"?> <schema targetnamespace="urn:ics-forth:params:xml:ns:extcommon-1.0" xmlns:extcommon="urn:ics-forth:params:xml:ns:extcommon-1.0" xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" xmlns="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemalocation="eppcom-1.0.xsd"/> <import namespace="urn:ietf:params:xml:ns:epp-1.0" schemalocation="epp-1.0.xsd"/> <annotation> <documentation> ICS-FORTH Extensible Provisioning Protocol v1.0 common extension. </documentation> </annotation> <element name="resdata" type="extcommon:resdatatype"/> <complextype name="resdatatype"> <element name="comment" type="string" minoccurs="0" maxoccurs="unbounded"/> </schema>
[.gr] cctld Σελίδα 10 από 13 extdomain-1.0.xsd <?xml version="1.0" encoding="utf-8"?> <schema targetnamespace="urn:ics-forth:params:xml:ns:extdomain-1.0" xmlns:extdomain="urn:ics-forth:params:xml:ns:extdomain-1.0" xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" xmlns="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemalocation="eppcom-1.0.xsd"/> <import namespace="urn:ietf:params:xml:ns:epp-1.0" schemalocation="epp-1.0.xsd"/> <annotation> <documentation> ICS-FORTH Extensible Provisioning Protocol v1.0 domain extension. </documentation> </annotation> <element name="create" type="extdomain:createtype"/> <element name="resdata" type="extdomain:resdatatype"/> <element name="delete" type="extdomain:deletetype"/> <element name="transfer" type="extdomain:transfertype"/> <complextype name="createtype"> <element name="reject" minoccurs="0" maxoccurs="1"/> <element name="comment" type="string" minoccurs="0" maxoccurs="1"/> <element name="use" type="string" minoccurs="1" maxoccurs="1"/> <simpletype name="deleteoptype"> <restriction base="token"> <enumeration value="recallapplication"/> <enumeration value="deletedomain"/> </restriction> </simpletype> <complextype name="deletetype"> <element name="protocol" type="string" minoccurs="1" maxoccurs="1"/> <element name="op" type="extdomain:deleteoptype" minoccurs="1" maxoccurs="1"/> <complextype name="commenttype"> <simplecontent> <extension base="string"> <attribute name="ref" type="string"/> </extension> </simplecontent> <complextype name="resdatatype"> <element name="protocol" type="string" minoccurs="0" maxoccurs="1"/> <element name="comment" type="extdomain:commenttype" minoccurs="0" maxoccurs="unbounded"/> <complextype name="transfertype"> <element name="registrantid" type="eppcom:clidtype" minoccurs="0" maxoccurs="1"/> </schema>
[.gr] cctld Σελίδα 11 από 13 extcontact-1.0.xsd <?xml version="1.0" encoding="utf-8"?> <schema targetnamespace="urn:ics-forth:params:xml:ns:extcontact-1.0" xmlns:extcontact="urn:ics-forth:params:xml:ns:extcontact-1.0" xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" xmlns="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemalocation="eppcom-1.0.xsd"/> <import namespace="urn:ietf:params:xml:ns:epp-1.0" schemalocation="epp-1.0.xsd"/> <annotation> <documentation> ICS-FORTH Extensible Provisioning Protocol v1.0 contact extension. </documentation> </annotation> <element name="resdata" type="extcontact:resdatatype"/> <complextype name="commenttype"> <simplecontent> <extension base="string"> <attribute name="ref" type="string"/> </extension> </simplecontent> <complextype name="resdatatype"> <element name="comment" type="extcontact:commenttype" minoccurs="0" maxoccurs="unbounded"/> </schema>
[.gr] cctld Σελίδα 12 από 13 exthost-1.0.xsd <?xml version="1.0" encoding="utf-8"?> <schema targetnamespace="urn:ics-forth:params:xml:ns:exthost-1.0" xmlns:exthost="urn:ics-forth:params:xml:ns:exthost-1.0" xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" xmlns="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemalocation="eppcom-1.0.xsd"/> <import namespace="urn:ietf:params:xml:ns:epp-1.0" schemalocation="epp-1.0.xsd"/> <annotation> <documentation> ICS-FORTH Extensible Provisioning Protocol v1.0 host extension. </documentation> </annotation> <element name="resdata" type="exthost:resdatatype"/> <complextype name="commenttype"> <simplecontent> <extension base="string"> <attribute name="ref" type="string"/> </extension> </simplecontent> <complextype name="resdatatype"> <element name="comment" type="exthost:commenttype" minoccurs="0" maxoccurs="unbounded"/> </schema>
[.gr] cctld Σελίδα 13 από 13 Αναφορές [IANA] [EPP] [EPP-D] [EPP-H] [EPP-C] [EPP-X] IANA: Protocol Numbers and Assignment Services http://www.iana.org/assignments/port-numbers S. Hollenbeck, Extensible Provisioning Protocol March 2004, http://www.ietf.org/rfc/rfc3730.txt S. Hollenbeck, Extensible Provisioning Protocol Domain Name Mapping March 2004, http://www.ietf.org/rfc/rfc3731.txt S. Hollenbeck, Extensible Provisioning Protocol Host Mapping March 2004, http://www.ietf.org/rfc/rfc3732.txt S. Hollenbeck, Extensible Provisioning Protocol Contact Mapping, March 2004, http://www.ietf.org/rfc/rfc3733.txt S. Hollenbeck, Guidelines for Extending the Extensible Provisioning Protocol March 2004, http://www.ietf.org/rfc/rfc3735.txt