Cette page m'a orienté dans la bonne direction.
Android 11 ne peut installer que des certificats CA racine fournis par l'utilisateur pour contenir le drapeau X.509v3 CA:true
, ce qui n'était probablement pas nécessaire avant pour une raison quelconque, et continuait de fonctionner après la mise à jour jusqu'à ce que j'essaie d'en installer un nouveau parce que, vraisemblablement, le drapeau n'est pas nécessaire pour valider une chaîne de confiance TLS.
La commande suivante peut vérifier si un certificat contient ce drapeau (remplacez le format d'entrée et le nom de fichier par celui que vous utilisez).
$ openssl x509 -inform der -in cacert.crt -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
....
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = **, O = ***
...
X509v3 extensions:
X509v3 Basic Constraints:
CA:TRUE
...
Si le drapeau CA:TRUE
n'est pas présent sous Contraintes de base X509v3, votre certificat racine ne fonctionnera probablement pas sur Android 11.
Pour générer un simple certificat CA racine auto-signé pour Android 11, ces étapes minimales ont fonctionné pour moi et peuvent être personnalisées pour votre propre certificat:
$ echo 'basicConstraints=CA:true' > android_options.txt
$ openssl genrsa -out priv_and_pub.key 2048
$ openssl req -new -days 3650 -key priv_and_pub.key -out CA.pem
$ openssl x509 -req -days 3650 -in CA.pem -signkey priv_and_pub.key -extfile ./android_options.txt -out CA.crt
$ openssl x509 -inform PEM -outform DER -in CA.crt -out CA.der.crt
Les fichiers CA.der.crt
ou CA.crt
peuvent être installés en allant dans Paramètres > Sécurité > Chiffrement et certificats > Installer un certificat.
Une fois installé, il apparaît correctement dans la liste des Certificats utilisateur, et toutes les applications qui essaient de se connecter à des sites utilisant ce certificat CA racine réussissent.
Cette réponse semble se baser sur les mêmes fondements mais est beaucoup plus complète et fonctionnera probablement sur plus de plateformes, mais celle ci-devant devrait être un bon exemple minimal fonctionnel.
0 votes
Vous savez que l'installation d'un certificat CA utilisateur racine est inutile car les applications ne font pas confiance à ce CA par défaut?
0 votes
Ah, est-ce que cela a changé dans Android 11? C'était comme ça dans les versions précédentes, pouvez-vous me diriger vers la documentation à ce sujet?
0 votes
Non, ce n'est pas quelque chose de nouveau. Toutes les applications ciblant Android 7+ (niveau API 24+) ignorent par défaut tous les certificats CA d'utilisateur.
0 votes
@Robert, Cela est également utile dans le cas de l'établissement d'un réseau WiFi avec une sécurité WPA-Enterprise via EAP-TLS. Sans ce drapeau (CA : Vrai), il n'est pas possible de l'installer, puis de sélectionner le certificat CA dans les propriétés du HotSpot.
0 votes
@A.Petrov Établir une connexion à un Wifi WPA-Enterprise est effectuée par le système Android et non par une application. Par conséquent, ce que j'ai écrit reste vrai : l'installation d'un certificat utilisateur est inutile pour les applications.
0 votes
@Le sujet racine de Robert n'est pas pointé quelle est la cible du certificat CA. Le système Android empêche l'installation du certificat CA sans un attribut mentionné dans la réponse du sujet.