De façon à synchroniser les contacts et les agendas d'owncloud j'ai voulu utiliser DavDroid qui est un connecteur CalDAV/CardDAV disponible dans les paquets F-Droid. Coté owncloud j'utilises la dernière version (7.0.4) accessible en https avec un cetificat SSL autosigné et c'est là que les problèmes arrivent.
Voici une copie d'écran de DavDroid quand on essaie de se connecter au serveur :
Clairement il y a un problème avec le certificat. J'ai déjà vu des applications Android qui pour bypasser ce problème proposaient de valider tout les certificats, ce qui est à proscrire.
Il a donc fallu trouver le moyen de faire enregistrer le certificat racine de l'autorité de certification. Pour rappel j'utilises cette procédure pour générer mes certificats ssl : Mise en place d'une infrastructure PKI.
Il faut donc pouvoir ajouter le cacert.pem dans les certificats reconnus par Android. Ce qu'il faut savoir c'est qu'Android ne comprends que les certificat au format binaire et avec l'extension .crt. Hors le cacert.pem comprends une partie "en clair" et une partie codée. Il faut donc transformer le certificat.
Il faut donc faire :
# openssl x509 -inform PEM -outform DER -in cacert.pem -out cacert_der.crt
L'étape suivante consiste à importer le certificat dans Android.
1/ Récupérer le certificat (le mettre dans owncloud par exemple et le rélécharger sur le téléphone)
2/ Aller dans les paramètres de sécurité et faire "Installer depuis la carte SD", attribuer un nom au certificat :
Pour vérifier que le certificat est bien importé, aller dans "Certificats de confiance" et dans l'onglet "Utilisateur".
On peut retourner dans DavDroid et cette fois-ci le certificat de l'autorité étant connu, on peut se connecter et choisir les carnets d'adresse et agendas à synchroniser :