Мне нужно сгенерировать самоподписанный сертификат для моего приложения, и я хочу иметь возможность сделать его действительным, если сам сгенерированный корневой сертификат был добавлен в веб-браузер вручную.
Проблема в том, что к моему приложению будет обращаться любой IP-адрес, который клиент назначит серверу, на котором запущено это приложение (или, возможно, имя хоста, если клиент использует DNS)
Я пытался использовать * в CN, но это не работает.
Дополнительная информация: приложение и сервер, скорее всего, не подключены к Интернету, ip и имя хоста (если есть) не могут быть известны, поскольку это настраивается клиентом в конце.
Нет, единый сертификат не может быть действителен для произвольного сайта. Это правило применяется как к самоподписанным сертификатам, так и к обычным.
Учтите возможные последствия, если веб-браузер сделал разрешите это: если пользователь принял ваш сертификат (потому что они хотят подключиться к вашему приложению), вы или кто-либо другой сможете использовать этот сертификат для имитации любого другого сайта на планете, и ваши пользователи не смогут сообщить разница.
Ваше второе предложение о единственном самозаверяющем корневом сертификате, используемом для динамической подписи отдельных сертификатов, также приведет к такой же серьезной уязвимости безопасности. Поскольку закрытый ключ для корневого сертификата должен быть доставлен как часть вашего программного обеспечения, его нельзя считать безопасным.
(Для полноты: есть смягчения, такие как прозрачность сертификата, и вы можете настроить браузер так, чтобы он принимал определенный сертификат только для определенного сайта; Я не уверен, что это может быть даже по умолчанию, но я не думаю, что эти детали существенно изменяют лежащий в основе анализ, поскольку они представляют собой меры глубокой защиты, а не как единственный уровень защиты.)
Вместо, ваше приложение должно сгенерировать самозаверяющий сертификат, либо во время установки, либо при первом подключении пользователя. Это обычная практика для веб-консолей управления. Вы также должны дать пользователю возможность вместо этого предоставить правильно подписанный сертификат.
Если вам нужна помощь в реализации этого, вы, вероятно, должны спросить о переполнении стека.