Простого простого решения этой проблемы не существует. Если бы это было легко решено, безопасность системы сертификатов SSL была бы плохой.
Как вы сказали, ваш выбор ограничен тем, как избежать предупреждений браузера. Каждый подход может быть хорошим в зависимости от приложения.
1. Установить корневой CA в клиентских браузерах
Это разумное решение, если приложение используется для внутренних целей или если клиенты должны установить что-то для использования приложения. Вероятно, это также решение с наименьшими затратами, так как никаких дополнительных затрат не требуется. Однако, если приложение будет использоваться населением в целом, это не является разумным решением.
2. Купить коммерческий корневой сертификат CA с подписью
Если ваше приложение открыто для Интернета, это, скорее всего, требуется. Однако, если вы продаете приложение, а не просто предлагаете его услуги, это может не сработать по причинам ответственности, как вы упомянули.
3. Заставьте клиента купить собственный коммерческий сертификат подписанного корневого CA
Если ваше приложение продается для использования клиентами, это, вероятно, разумно. Вы можете предложить приложение, используя самозаверяющий сертификат в качестве базового варианта, и предложить вашему клиенту использовать его сертификат, если они того пожелают. Многие компании уже имеют сертификаты SSL для своих сайтов.