J’ai un serveur Owncloud qui me sert pour synchroniser d’une part mon Thunderbird et d’autre part mon téléphone (contacts + agenda). Pour éviter de laisser circuler les mots de passe en clair sur le réseau, je mets du HTTPS avec un certificat SSL auto-signé (en attendant de jouer sérieusement avec Let’s Encrypt).
Générer un certificat auto-signé SSL
Une recette simple reprise chez Akadia pour faire un certificat auto-signé :
Depuis le serveur :
openssl genrsa -des3 -out server.key 2048 openssl req -new -key server.key -out server.csr cp server.key server.key.org openssl rsa -in server.key.org -out server.key openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Il faudra saisir une passphrase qui sera supprimée en ligne 4, et aussi quelques informations dont la plus importante est le Common Name, à savoir le nom du domaine sur lequel on veut mettre du HTTPS.
Une fois ce certificat installé (détails donnés chez Akadia), il ne reste plus qu’à l’importer dans le smartphone à l’aide de CAdroid, pour pouvoir ensuite configurer DAVdroid.
Or le certificat généré avec les commandes ci-dessus n’est pas importé par CAdroid, l’erreur affichée étant la suivante :
Pistes à creuser
- Self-signed SSL certificates, CA flagged true, for Android and OS X
- [openssl-users] Creating a Certificate with CA=TRUE
- Generating SSL Certificates with X509V3 Extensions
Rien trouvé par là.
Solution trouvée
Les instructions d’Akadia sont globalement bonnes mais incomplètes. Je les reprends et ajoute ce qu’il manquait.
Étape 1
Générer la clé RSA en 2048, générer le « CSR » et lui enlever la passphrase :
openssl genrsa -des3 -out server.key 2048 openssl req -new -key server.key -out server.csr cp server.key server.key.org openssl rsa -in server.key.org -out server.key
Étape 2
Pour ajouter le flag CA:true, il faut créer un fichier, disons openssl.cnf avec comme contenu :
basicConstraints=CA:TRUE
Étape 3
Puis générer le certificat :
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -extfile openssl.cnf
Et le tour est joué, CAdroid accepte d’importer le certificat.