Alors que mon certificat SSL expire dans deux mois, OVH m'envoie un mail m'indiquant qu'ils abandonnent la certification SSL. Je trouve dommage de ne plus proposer de certification SSL quand on veut être un acteur majeur de l'Internet... Bref je n'ai pas envie d'avoir deux contrats dans deux sociétés différentes (pour mon certificat et mon nom de domaine), j'ai donc pris la décision (contestable) de tout migrer chez Gandi. À la base je voulais m'enregistrer chez Gandi car ils ont une bonne renommée, mais j'ai finalement choisi OVH. La migration s'est faite en huit jours une fois que j'ai eu désactivé la protection du domaine et récupéré la clé secrète chez OVH.
Après quelques jours d'utilisation, je me rend compte qu'OVH est supérieur techniquement à Gandi dans les outils qu'ils proposent, ils sont beaucoup plus simples et intuitifs (même si le support est loin d'être terrible). Bon, une fois configuré, on ne touche plus à rien, mais quand même... Et surtout un GROS manque chez Gandi est qu'ils ne gèrent pas nativement une ip dynamique (DynDNS). Évidemment je m'en suis rendu compte après migration...
La solution proposé sur les forums est de faire pointer un enregistrement IP (A) vers un DynDNS ... ce n'est pas acceptable. Heureusement, après quelques recherches, je découvre que Gandi met a disposition une API XML permettant de manipuler son compte ! Après m'être battu inutilement avec la version OT&E (qui ne permet de rien faire), j'ai finalement réussit à obtenir l'équivalent d'un DynDNS avec un petit script python que l'on mettra en cron :
#!/usr/bin/env python
import xmlrpclib
import urllib2
import re
import sys
#
# Update Gandi DNS with dynamic IP
#
# This doesn't work with OT&E platform !!
#
DEBUG = False
zone_to_edit = 'Soutade'
apikey = 'Your private API key'
api = xmlrpclib.ServerProxy('https://rpc.gandi.net/xmlrpc/')
def debug(str):
if DEBUG:
print str
# Get current IP
current_ip = ''
try:
dyndns_url = 'http://checkip.dyndns.com/'
f = urllib2.urlopen(dyndns_url)
data = f.read()
f.close()
pattern = re.compile('[^:]*(\d+\.\d+\.\d+\.\d+)')
result = pattern.search(data, 0)
if result == None:
print "No IP found"
sys.exit(1)
else:
current_ip = result.group(0).strip()
except urllib2.HTTPError:
print "Connexion error"
sys.exit(1)
debug('Your current IP is \'' + current_ip + '\'')
# Update Gandi DNS
zones = api.domain.zone.list(apikey, {'name' : zone_to_edit})
if len(zones) == 0:
print 'Zone \'' + zone_to_edit + '\' not found'
sys.exit(1)
zone = zones[0]
debug('Zone to be edited')
debug(zone)
records = api.domain.zone.record.list(apikey, zone['id'], zone['version'])
edited = False
for record in records:
if record['type'] == 'A' and current_ip != record['value']:
debug('Edit record')
debug(record)
record['value'] = current_ip
edited = True
# Delete all id keys
del record['id']
if edited:
debug('Edit result')
debug(records)
if zone['version'] == 1:
zone['version'] = 2
else:
zone['version'] = 1
debug('New version is ' + str(zone['version']))
api.domain.zone.record.set(apikey, zone['id'], zone['version'], records)
api.domain.zone.version.set(apikey, zone['id'], zone['version'])
debug('New zone values')
debug(api.domain.zone.record.list(apikey, zone['id'], zone['version']))
Le script ne se veut pas générique, mais il fonctionne ! Il faut l'adapter en changeant la clé d'API et le nom de la zone à éditer. Il faut aussi créer deux versions (1 et 2) de la zone à modifier avec au moins un champs A et attacher le nom de domaine à cette zone. On pourra activer les traces en changeant la valeur de DEBUG. Pour info, mes paramètres DNS sont (mode expert) :
@ 1080 IN A 86.193.241.253
* 1080 IN CNAME soutade.fr.
@ 1080 IN MX 10 soutade.fr.
La première ligne fait pointer soutade.fr (nom de domaine attaché = @) à une IP que l'on mettra à jour dynamiquement. La seconde ligne fait pointer n'importe quel sous domaine de soutade.fr (blog.soutade.fr par exemple) vers soutade.fr qui point lui même vers une IP. La troisième ligne permet d'indiquer que le serveur mail se trouve également sur l'IP pointée par soutade.fr.
La bonne nouvelle est que j'ai droit à un certificat SSL gratuit pendant un an et le renouvellement de mon nom de domaine pour un an également, le tout pour 15€ ! Je reviendrai peut être chez OVH pour Internet... un jour...