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