How to trust self signed certificate on Android?

无人久伴 提交于 2019-12-18 05:49:09

问题


I have generated self signed certificate for my server. Then added it to Android with Settings -> Security -> Install.

When I'm trying to connect to my server with application I'm getting error:

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

As I understood after I've added certificate to trusted it should work fine with my server or maybe I'm missing something? The idea is to add certificate through Android system and don't change application code.

Btw I'm using OkHttpClient for network connection. Maybe I should enable something for https connection?


回答1:


It is important to Android that when you generate your self-signed certificate, you mark it as a Certifying Agency in order to empower it to certify certificates -- even if only to sign itself and so certify that it is itself.

This is done in the basicConstraints extension, declaring CA:TRUE instead of the default CA:FALSE. When you import a certificate so marked, Android will consider it a user-installed root certificate, and you should be able to see it under Credential storage > Trusted credentials > USER.

However, a certificate having this bit is a mighty power, and such certificates have been used by nefarious tools to spy on supposedly encrypted user communication in the past. Accordingly, these days, Google Play Protect will want to have a word with the user when this kind of CA certificate is in force.



来源:https://stackoverflow.com/questions/37281958/how-to-trust-self-signed-certificate-on-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!