Il s'agit d'une question de suivi concernant cette réponse .
En bref : J'importe le certificat auto-signé de l'autorité de certification racine dans le système Android via
Settings -> Security -> Trusted Credentials -> install from SD
Le chemin diffère légèrement selon les versions d'Android.
Ensuite, je fais pointer n'importe quel navigateur (testé avec Firefox, chrome et opera) vers la ressource sécurisée (basée sur java script) et je reçois une erreur de socket. La ressource est un index.html avec une logique js web-socket pour se connecter de manière sécurisée à un broker mosquitto.
Si, par contre, je fais pointer le navigateur sur "https://myserver:<mysecure port>"
Je reçois un avertissement relatif à la confidentialité, je peux continuer à ne pas être en sécurité et cela crée en quelque sorte un cookie ou un autre élément de stockage, ce qui me permet d'effectuer de futures requêtes sur la ressource sécurisée basée sur js.
Il semble que les navigateurs sous Android n'utilisent pas les certificats CA importés par l'utilisateur du système, bien qu'ils soient répertoriés dans le robinet des certificats de confiance "utilisateur" et dans la zone des informations d'identification de confiance.
Testé avec Android 7.1.2 et 10. Tous les navigateurs de bureau fonctionnent bien, testés sur ubuntu / mint et raspi.
Comment accomplir des requêtes TLS basées sur le navigateur sur Android sans accepter des risques de confidentialité dangereux ?
Test supplémentaire :
J'ai testé la même chose sur un IPhone 7 ios 13.3, en important le certificat CA, en plaçant la ressource sécurisée sur un espace web approprié puisque l'accès local aux fichiers n'est pas possible sur ios. Cela a fonctionné sans problème.
Il semble donc que ce soit un vrai problème Android. Il serait peut-être judicieux de poser cette question à un espace Android. Quelqu'un pourrait-il faire une suggestion ?
Recherches supplémentaires :
こちら est une explication détaillée, sur la façon d'obtenir un certificat personnalisé dans la section certificat du système. Mais pour être honnête, ce n'est pas une façon habituelle de procéder. L'accès à la racine n'est pas pour le commun des mortels et cela pourrait ne pas fonctionner pour les versions plus récentes d'Android.
Les certificats d'utilisateur sont destinés aux applications Android écrites par vos soins. Vous pouvez avoir une vue des lignes de paramètres de propriété dans app.config pour travailler avec vos certificats d'utilisateur auto-signés.
Le navigateur Chrome et d'autres, en revanche, sont des applications système ou des applications de fournisseurs qui ne sont pas censées connaître les certificats spécifiques des utilisateurs. Et c'est la seule raison valable pour laquelle il ne connaîtra pas les certificats de la section utilisateur. Il ne connaît que les certificats système.
La seule solution restante semble donc être de créer votre propre application ou de recompiler une application de navigateur entière en la configurant pour rechercher des certificats d'utilisateur.
C'est assez lourd et insatisfaisant, car le web vous donnerait tout ce dont vous avez besoin sur n'importe quel appareil, sauf Android bien sûr, ce qui oblige à faire un détour.