Lo que estás sugiriendo es completamente compatible con el marco de trabajo de Android TLS.
Cuando crea una conexión a un servidor remoto, puede especificar su propia lista de CA de confianza . Esto significa que, en lugar de utilizar el almacén de CA predeterminado en el que confía el SO, para esta conexión solo confía en los certificados firmados por las CA que especifique, que no es necesario que nadie más conozca.
Del mismo modo, puede enviar certificados de cliente que serán solicitados y verificados por el servidor al conectarse. Todo esto es parte de la especificación, por lo que nada de lo que quiera hacer debe implementarse de manera personalizada. Puede confiar en protocolos y códigos establecidos y probados.
Si las conexiones a su servicio solo las realizarán los clientes que envíe, entonces esta es realmente una buena práctica bien establecida. No hay razón para que sus certificados sean firmados por una CA de confianza global si usted es el único que los confiará, y no hay razón para confiar en las CA comunes si sabe que su certificado no será firmado por ellos.
Nuevamente, usa las cosas incorporadas. La regla número uno de criptografía es no cree su propia . No irá bien si lo haces.