web-dev-qa-db-fra.com

Comment faire confiance à un certificat auto-signé sur Android?

J'ai généré un certificat auto-signé pour mon serveur. Puis ajouté à Android avec Paramètres -> Sécurité -> Installer.

Lorsque j'essaie de me connecter à mon serveur avec une application, le message d'erreur suivant s'affiche:

Java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Comme je l'ai compris après avoir ajouté le certificat à Trusted, cela devrait fonctionner correctement avec mon serveur ou peut-être qu'il me manque quelque chose? L'idée est d'ajouter un certificat via le système Android et de ne pas modifier le code de l'application.

Btw J'utilise OkHttpClient pour la connexion réseau. Peut-être que je devrais activer quelque chose pour la connexion https?

6
Orest

Il est important pour Android que, lorsque vous générez votre certificat auto-signé, vous le marquiez comme une agence de certification afin de lui donner le droit de certifier des certificats - même si ce n’est que pour vous signer et certifier qu’il est lui-même.

Ceci est fait dans l'extension basicConstraints, déclarant CA:TRUE au lieu du CA:FALSE par défaut. Lorsque vous importez un certificat ainsi marqué, Android le considère comme un certificat racine installé par l'utilisateur et vous devriez pouvoir le voir sous Stockage des informations d'identification > Informations d'identification approuvées >UTILISATEUR.

Cependant, un certificat ayant ce bit est un puissant pouvoir et de tels certificats ont été utilisés par des outils néfastes pour espionner des communications utilisateur supposément cryptées dans le passé. En conséquence, Google Play Protect souhaitera avoir un mot avec l'utilisateur lorsque ce type de certificat de l'autorité de certification est en vigueur.

2
dig