Как я могу сгенерировать самоподписанный сертификат, который не будет активировать SSL_ERROR_BAD_CERT_DOMAIN?

Мне нужно сгенерировать самоподписанный сертификат для моего приложения, и я хочу иметь возможность сделать его действительным, если сам сгенерированный корневой сертификат был добавлен в веб-браузер вручную.

Проблема в том, что к моему приложению будет обращаться любой IP-адрес, который клиент назначит серверу, на котором запущено это приложение (или, возможно, имя хоста, если клиент использует DNS).

Я пытался использовать * в CN, но это не работает.

Дополнительная информация: приложение и сервер, скорее всего, не подключены к Интернету, IP и имя хоста (если есть) не могут быть известны, так как это настраивается клиентом в конце .

0
задан 3 August 2018 в 14:59
1 ответ

Нет, отдельный сертификат не может быть действителен для произвольного сайта. Это правило применяется как к самоподписанным сертификатам, так и к обычным.

Рассмотрите возможные последствия, если веб-браузер разрешил это: если пользователь принял ваш сертификат (потому что они хотят подключиться к вашему приложению), вы или кто-либо другой сможет использовать этот сертификат для выдавать себя за любой другой сайт на планете, и ваши пользователи не заметят разницы.

Ваше второе предложение о единственном самозаверяющем корневом сертификате, используемом для динамической подписи отдельных сертификатов, также приведет к такой же серьезной уязвимости системы безопасности.Поскольку закрытый ключ для корневого сертификата должен поставляться как часть вашего программного обеспечения, он не может считаться безопасным.

(Для полноты: существуют меры, такие как прозрачность сертификата , и вы можете настроить браузер, чтобы принимать определенный сертификат только для определенного сайта; это может быть даже по умолчанию, я не уверен, но я не думаю, что эти детали значительно изменяют базовый анализ, поскольку они являются мерами углубленной защиты, а не предназначен для того, чтобы быть единственным уровнем защиты.)

Вместо этого ваше приложение должно генерировать самоподписанный сертификат либо во время установки, либо при первом подключении пользователя. Это обычная практика для веб-консолей управления. Вы также должны дать пользователю возможность вместо этого предоставить правильно подписанный сертификат.

Если вам нужна помощь в реализации этого, вы, вероятно, должны спросить о переполнении стека.

0
ответ дан 5 December 2019 в 05:25

Теги

Похожие вопросы