web-dev-qa-db-fra.com

Installer des certificats auto-signés ne fonctionne plus dans Android q

J'ai généré un certificat auto-signé que j'ai essayé d'installer sur mon téléphone exécutant Android 10, mais une collation semble me dire que Private key required to install certificate.

J'ai essayé sur un téléphone exécutant Android 9 avec le même certificat et cela fonctionne comme prévu.

Avez-vous une idée s'il y a une solution de contournement pour obtenir l'autorité de certification?

7
Dorinel Panaite

Bâtiment sur la réponse de @ Scottyb:

openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj "/C=US/ST=Oklahoma/L=Stillwater/O=My Company/OU=Engineering/CN=test.com" -keyout ca.key -out ca.crt
openssl genrsa -out "test.key" 2048
openssl req -new -key test.key -out test.csr -config openssl.cnf
openssl x509 -req -days 3650 -in test.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extensions v3_req -extfile openssl.cnf -out test.crt

L'erreur donne un indice sur la manière de corriger. Si vous combinez le certificat et la clé privée générée ci-dessus dans un seul fichier, Android l'acceptera:

openssl pkcs12 -export -in test.crt -inkey test.key -out test-combined.p12

Transférez le fichier .P12 sur votre Android Téléphone, puis utilisez l'installation à partir du stockage de périphérique. Donnez-lui un beau nom de lisage humain et le certificat CA peut maintenant être utilisé avec des services tels que des serveurs Web qui utilisent la ca.key & ca.crt.

Voici un extrait de configuration Nginx pour refuser toutes les connexions, à l'exception de ceux qui présentent un certificat signé par le CA ci-dessus CERT:

# within server block, eg. under the ssl_certificate config
    ssl_client_certificate /etc/ssl/ca/ca.crt;
    ssl_trusted_certificate /etc/ssl/ca/ca.crt;
    ssl_verify_client optional_no_ca;
    if ($ssl_client_verify != SUCCESS) { return 403; }

Lorsque votre Android Browser visite désormais ce site Web, il ne vous laissera plus que si vous présentez un certificat signé.

1
Alex van Vucht