通常、クライアントSSL証明書はキーストア(Androidの場合はBKS形式)に保存され、キーストアはAPK内のリソースとして含まれます。キーストアは暗号化され、パスワードで保護されています。そのため、そのクライアント証明書は暗号化された形式で保存されているため、APKから簡単に抽出することはできません。
さて...あなたはパスワードについてどうしますか?これが問題の核心であり、2つの選択肢があります。
ユーザーの操作なしでアプリケーションがサーバーと通信できるようにする(つまり、証明書にアクセスできるようにする)場合は、パスワードをアプリケーションに埋め込む必要があります。そうすると、攻撃者がコードをリバースエンジニアリングする可能性があります。それを見つけるには、キーストアを取得し、それを復号化して証明書を回復します。コードを難読化するなどの手法を適用して、攻撃者がそれを実行しにくくすることができますが、これは誰かの速度を低下させ、阻止することはできません。
別の方法は、アプリケーションがサーバーと通信するたびにユーザーにパスワードの入力を求め、それを使用してキーストアを復号化することです(または、アプリがいつ起動し、証明書を一定時間キャッシュするかを尋ねます)。ここでの利点は、誰かがAPKをリバースエンジニアリングした場合、暗号化されたキーストアが見つかり、パスワードがないため、証明書が安全であるということです。欠点は、ユーザーにパスワードを提供させることです。
どのアプローチが最適ですか?それはあなたが関係しているデータの機密性とあなたが受け入れることをいとわないリスクのレベルに完全に依存します。あなただけがその質問に答えることができます。