Я разрабатываю сетевое приложение для Android, которое использует SSL-сертификаты клиента для аутентификации и защиты соединений с моим сервером.
У меня два вопроса: (1) я должен использовать самозаверяющий сертификат сервера или коммерческий? И (2) я должен включить сертификат сервера в файл apk, который устанавливают пользователи, или мне нужно подключить приложение к моему серверу, чтобы получить сертификат сервера по сети (с целью заставить устройство доверять сертификату сервера)?
Когда я спрашиваю, что мне «следует» делать, я спрашиваю, каковы преимущества и недостатки каждого варианта?
Сейчас я использую самоподписанный сертификат, включенный в файл apk. Когда пользователь запускает приложение в первый раз, оно считывает включенный самозаверяющий сертификат в хранилище доверенных сертификатов, чтобы устройство без проблем подключалось к моему серверу. Я полагаю, что если я использую коммерческий сертификат, мой вопрос № 2 может стать спорным, поскольку устройство может доверять сертификату с сервера без проблем.
Еще одна, возможно, важная деталь: это приложение не распространяется через рынок Android. Пользователи будут загружать приложение с моего сервера, поэтому я могу включить любой серверный сертификат, который я хочу, в том числе другой для каждого пользователя, если мне нужно.
У меня есть свои собственные представления о различных преимуществах и недостатках каждого возможного ответа на два моих вопроса, но мне интересно, что по этому поводу скажут другие - мыслящие в отношении безопасности.
Заранее спасибо!