Сбой добавления сертификата в корневое хранилище visual studio
Установка сертификатов, необходимых для установки Visual Studio в автономном режиме
Visual Studio рассчитана в основном на установку на компьютер, подключенный к Интернету, так как многие ее компоненты регулярно обновляются. Но вы можете, выполнив несколько дополнительных действий, создать развертывание Visual Studio и в среде без подключения к Интернету.
Программа установки Visual Studio устанавливает только то содержимое, которое считается доверенным. Перед установкой она проверяет наличие сигнатур Authenticode для скачиваемого содержимого и наличие доверия для всего содержимого. Это позволяет обезопасить среду от атак, направленных на расположение загрузки. Таким образом, программа установки Visual Studio требует наличия актуальных стандартных корневых и промежуточных сертификатов Майкрософт на компьютере пользователя. Если компьютер обновлялся с помощью Центра обновления Windows, сертификаты для подписи обычно актуальны. Если компьютер подключен к Интернету, во время установки Visual Studio сертификаты могут быть обновлены для проверки подписей файлов. Если компьютер не подключен к сети, сертификаты следует обновить иным способом.
Обновление сертификатов в автономном режиме
В автономной среде установить и обновить сертификаты можно тремя способами.
Вариант 1. Установка сертификатов из папки макета вручную
При создании схемы сети или локального автономного кэша необходимые сертификаты скачиваются в папку Certificates. Затем их можно установить вручную, дважды щелкнув каждый файл сертификата и выполнив инструкции в мастере управления сертификатами. Если он предложит ввести пароль, оставьте это поле пустым.
Обновление. Для Visual Studio 2017 версии 15.8 (предварительная версия 2) или более поздней версии вы можете вручную установить сертификаты, щелкнув правой кнопкой мыши каждый файл сертификата, выбрав действие "Установить сертификат" и выполнив инструкции в диалоговых окнах мастера "Диспетчер сертификатов".
При создании схемы сети или локального автономного кэша необходимые сертификаты скачиваются в папку Certificates. Вы можете вручную установить сертификаты, щелкнув правой кнопкой мыши каждый файл сертификата, выбрав действие "Установить сертификат" и выполнив инструкции в диалоговых окнах мастера "Диспетчер сертификатов". Если он предложит ввести пароль, оставьте это поле пустым.
Вариант 2. Распространение доверенных корневых сертификатов в среде предприятия
Что касается предприятий с автономными компьютерами, на которых нет последних корневых сертификатов, администратор может использовать инструкции в статье Настройка доверенных корневых сертификатов и запрещенных сертификатов для их обновления.
Вариант 3. Установка сертификатов в рамках развертывания Visual Studio с помощью скрипта
При настройке развертывания Visual Studio в автономной среде на клиентских рабочих станциях с помощью сценариев необходимо выполнить следующие действия.
Скопируйте средство диспетчера сертификатов (certmgr.exe) в схему сети или расположение экземпляра локального кэша. Программа Certmgr.exe не является компонентом Windows, но доступна как часть пакета Windows SDK.
С помощью следующих команд создайте пакетный файл сценария:
Или создайте пакетный файл, который использует certutil.exe, входящий в состав Windows, со следующими командами:
Разверните пакетный файл на клиенте. Эту команду необходимо выполнить из процесса с повышенными правами.
Какие файлы сертификатов содержатся в папке Certificates?
- manifestRootCertificate.cer содержит:
- Корневой сертификат: Microsoft Root Certificate Authority 2011
- Корневой сертификат: Microsoft Root Certificate Authority 2010
Для Visual Studio Installer требуется наличие в системе только корневых сертификатов. Все эти сертификаты требуются в системах Windows 7 с пакетом обновления 1 (SP1), в которых не установлены последние обновления Центра обновления Windows.
Почему сертификаты из папки Certificates не устанавливаются автоматически?
В среде с подключением к Интернету в процессе проверки подписи используются Windows API для загрузки и добавления сертификатов. Этот процесс включает проверку того, что сертификат является доверенным и допустимым в соответствии с настройками администрирования. В большинстве случаев процесс проверки невозможно выполнить в автономных средах. Установив сертификаты вручную, вы предоставите администраторам предприятия возможность убедиться в том, что сертификаты являются надежными и соответствуют требованиям политики безопасности организации.
Проверка наличия необходимых сертификатов
Чтобы проверить установку системы, можно выполнить следующие действия.
Запустите mmc.exe.
а. В меню Файл выберите Добавить или удалить оснастку.
b. Дважды щелкните Сертификаты, выберите Учетная запись компьютера и нажмите кнопку Далее.
c. Выберите Локальный компьютер, нажмите кнопку Готово, а затем — ОК.
d. Разверните узел Сертификаты (локальный компьютер) .
д) Разверните узел Доверенные корневые центры сертификации и выберите Сертификаты.- Убедитесь, что в этом списке содержатся необходимые корневые сертификаты.
е) Разверните узел Промежуточные центры сертификации и выберите Сертификаты.
- Убедитесь, что в этом списке содержатся необходимые промежуточные сертификаты.
В меню Файл выберите Добавить или удалить оснастку.
а. Дважды щелкните Сертификаты, выберите моей учетной записи пользователя, нажмите кнопки Готово и ОК.
b. Разверните узел Сертификаты — текущий пользователь.
c. Разверните узел Промежуточные центры сертификации и выберите Сертификаты.- Убедитесь, что в этом списке содержатся необходимые промежуточные сертификаты.
Если имена сертификатов не содержатся в столбцах Кому выдан, их необходимо установить. Если промежуточный сертификат находился только в хранилище промежуточных сертификатов текущего пользователя, значит он доступен только для пользователя, выполнившего вход в систему. Его может потребоваться установить для других пользователей.
Установка Visual Studio
После установки сертификатов на клиентском компьютере вы можете установить Visual Studio из локального кэша или развернуть Visual Studio из общей папки схемы сети на клиентском компьютере.
Следующая команда описывает создание cer-файла Windows (т. Е. Сертификата от доверенного провайдера).
Проблема заключается в том, что при создании приложения в Visual Studio 2017 он разрешает только через package.windows10.appxmanifest файл pfx. при обновлении этой ссылки на командную строку он не создает файл pvk, поэтому необходимо добавить
Дополнительные параметры командной строки, такие как / sv SubjectKeyFile, которые будут создавать результирующий файл pvk.
Однако даже используя эту ссылку на командную строку:
В результате имплантации файла сертификата в Visual Studio возникает следующая ошибка:
Захожу по ссылке и ничего толком не объясняет, что происходит. Один человек предлагает создать временный, который работает, но это неспецифический тестовый сертификат, срок действия которого составляет всего год.
Есть ли лучший способ создать сценарий с помощью makecert? Как узнать, правильно ли создается сертификат? Дополнительная документация была бы полезна, но я не нашел ничего другого.
2 ответа
Ответ, предоставленный @nico, содержит правильные утверждения, но заставил меня понять, что проблема была больше, чем я первоначально описывал. Итак, я очистил заголовок вопроса и вопрос, чтобы дать лучший вопрос и последующий ответ.
Во-первых, нужно спросить себя, для чего они используют приложение? Будет ли приложение загружено в Microsoft Store или оно предназначено только для внутреннего использования.
В любом случае вы захотите отладить и разработать приложение. Отладка не требует установки сертификата, так что в этом смысле мы в безопасности.
Если вы используете приложение внутри своей организации или просто на своем локальном компьютере, вам понадобится доверенный сертификат.
Этот сертификат может существовать в нескольких различных сценариях.
- Вам нужен самозаверяющий сертификат или
- Вам нужен сертификат, выданный центром сертификации ЦС, то есть вашей организацией или предприятием?
Я рассмотрю оба сценария. В любом случае протокол makecert устарел Замечания по прекращению поддержки makecert
Сценарий 1. Если вам нужен самозаверяющий сертификат, выполните следующие действия
- Перейдите в powershell и используйте командлет New-SelfSignedCertificate pkiclient . что это будет делать, так это предоставить вам создание .cer и соответствующей комбинации закрытого ключа + открытого сертификата = .pfx, если вы создаете для сертификата + закрытого ключа . И у вас должен быть закрытый ключ, то есть .pfx, чтобы связать и упаковать ваше приложение с Visual Studio и установить его в локальный магазин приложений Windows (не путать с магазином Microsoft).
Вот ссылки для перехода *** Обязательно прочтите 1A перед созданием сертификата:
1А. *** Когда вы создаете New-SelfSignedCertificate, вы должны понимать, что сертификат должен быть создан очень специфическим образом. Это для самозаверяющего сертификата или сертификата, выданного ЦС.
В частности, сертификат должен обладать двумя свойствами.
А). Для расширения Basic Constraints должно быть установлено значение Subject Type = End Entity. Простыми словами это говорит о том, что . Когда этот сертификат выдается вам, вы не можете использовать этот сертификат в качестве дополнительного последующего центра сертификации с возможностью выдавать больше сертификатов. Другими словами . Это окончательный сертификат.
Б). Для расширения Enhanced Key Usage (EKU) установлено значение Code Signing. Это предотвращает использование сертификата не по назначению . Это гарантирует, что программное обеспечение было получено от издателя программного обеспечения, &&& Защищает программное обеспечение от изменений после публикации.
В реквизитах сертификата информация будет выглядеть так:Подпись кода (1.3.6..1.5.5.7.3.3) 26
Ссылка выше в вашем случае используется для создания сертификата Windows для драйвера. Если вы хотите создать сертификат для своего пакета UWP, вы можете выполнить следующие шаги:
Шаг 1. Определите имя издателя пакета
Шаг 2. Создайте закрытый ключ с помощью MakeCert.exe
Шаг 3. Создайте файл обмена личной информацией (.pfx) с помощью Pvk2Pfx.exe
И вы также можете использовать приведенную ниже команду для непосредственного создания сертификата. Вам нужно только заменить параметр CN на свой параметр.
Visual Studio рассчитана в основном на установку на компьютер, подключенный к Интернету, так как многие ее компоненты регулярно обновляются. Но вы можете, выполнив несколько дополнительных действий, создать развертывание Visual Studio и в среде без подключения к Интернету.
Программа установки Visual Studio устанавливает только то содержимое, которое считается доверенным. Перед установкой она проверяет наличие сигнатур Authenticode для скачиваемого содержимого и наличие доверия для всего содержимого. Это позволяет обезопасить среду от атак, направленных на расположение загрузки. Таким образом, программа установки Visual Studio требует наличия актуальных стандартных корневых и промежуточных сертификатов Майкрософт на компьютере пользователя. Если компьютер обновлялся с помощью Центра обновления Windows, сертификаты для подписи обычно актуальны. Если компьютер подключен к Интернету, во время установки Visual Studio сертификаты могут быть обновлены для проверки подписей файлов. Если компьютер не подключен к сети, сертификаты следует обновить иным способом.
Обновление сертификатов в автономном режиме
В автономной среде установить и обновить сертификаты можно тремя способами.
Вариант 1. Установка сертификатов из папки макета вручную
При создании схемы сети или локального автономного кэша необходимые сертификаты скачиваются в папку Certificates. Затем их можно установить вручную, дважды щелкнув каждый файл сертификата и выполнив инструкции в мастере управления сертификатами. Если он предложит ввести пароль, оставьте это поле пустым.
Обновление. Для Visual Studio 2017 версии 15.8 (предварительная версия 2) или более поздней версии вы можете вручную установить сертификаты, щелкнув правой кнопкой мыши каждый файл сертификата, выбрав действие "Установить сертификат" и выполнив инструкции в диалоговых окнах мастера "Диспетчер сертификатов".
При создании схемы сети или локального автономного кэша необходимые сертификаты скачиваются в папку Certificates. Вы можете вручную установить сертификаты, щелкнув правой кнопкой мыши каждый файл сертификата, выбрав действие "Установить сертификат" и выполнив инструкции в диалоговых окнах мастера "Диспетчер сертификатов". Если он предложит ввести пароль, оставьте это поле пустым.
Вариант 2. Распространение доверенных корневых сертификатов в среде предприятия
Что касается предприятий с автономными компьютерами, на которых нет последних корневых сертификатов, администратор может использовать инструкции в статье Настройка доверенных корневых сертификатов и запрещенных сертификатов для их обновления.
Вариант 3. Установка сертификатов в рамках развертывания Visual Studio с помощью скрипта
При настройке развертывания Visual Studio в автономной среде на клиентских рабочих станциях с помощью сценариев необходимо выполнить следующие действия.
Скопируйте средство диспетчера сертификатов (certmgr.exe) в схему сети или расположение экземпляра локального кэша. Программа Certmgr.exe не является компонентом Windows, но доступна как часть пакета Windows SDK.
С помощью следующих команд создайте пакетный файл сценария:
Или создайте пакетный файл, который использует certutil.exe, входящий в состав Windows, со следующими командами:
Разверните пакетный файл на клиенте. Эту команду необходимо выполнить из процесса с повышенными правами.
Какие файлы сертификатов содержатся в папке Certificates?
- manifestRootCertificate.cer содержит:
- Корневой сертификат: Microsoft Root Certificate Authority 2011
- Корневой сертификат: Microsoft Root Certificate Authority 2010
Для Visual Studio Installer требуется наличие в системе только корневых сертификатов. Все эти сертификаты требуются в системах Windows 7 с пакетом обновления 1 (SP1), в которых не установлены последние обновления Центра обновления Windows.
Почему сертификаты из папки Certificates не устанавливаются автоматически?
В среде с подключением к Интернету в процессе проверки подписи используются Windows API для загрузки и добавления сертификатов. Этот процесс включает проверку того, что сертификат является доверенным и допустимым в соответствии с настройками администрирования. В большинстве случаев процесс проверки невозможно выполнить в автономных средах. Установив сертификаты вручную, вы предоставите администраторам предприятия возможность убедиться в том, что сертификаты являются надежными и соответствуют требованиям политики безопасности организации.
Проверка наличия необходимых сертификатов
Чтобы проверить установку системы, можно выполнить следующие действия.
Запустите mmc.exe.
а. В меню Файл выберите Добавить или удалить оснастку.
b. Дважды щелкните Сертификаты, выберите Учетная запись компьютера и нажмите кнопку Далее.
c. Выберите Локальный компьютер, нажмите кнопку Готово, а затем — ОК.
d. Разверните узел Сертификаты (локальный компьютер) .
д) Разверните узел Доверенные корневые центры сертификации и выберите Сертификаты.- Убедитесь, что в этом списке содержатся необходимые корневые сертификаты.
е) Разверните узел Промежуточные центры сертификации и выберите Сертификаты.
- Убедитесь, что в этом списке содержатся необходимые промежуточные сертификаты.
В меню Файл выберите Добавить или удалить оснастку.
а. Дважды щелкните Сертификаты, выберите моей учетной записи пользователя, нажмите кнопки Готово и ОК.
b. Разверните узел Сертификаты — текущий пользователь.
c. Разверните узел Промежуточные центры сертификации и выберите Сертификаты.- Убедитесь, что в этом списке содержатся необходимые промежуточные сертификаты.
Если имена сертификатов не содержатся в столбцах Кому выдан, их необходимо установить. Если промежуточный сертификат находился только в хранилище промежуточных сертификатов текущего пользователя, значит он доступен только для пользователя, выполнившего вход в систему. Его может потребоваться установить для других пользователей.
Установка Visual Studio
После установки сертификатов на клиентском компьютере вы можете установить Visual Studio из локального кэша или развернуть Visual Studio из общей папки схемы сети на клиентском компьютере.
Техническая поддержка
Иногда возникают проблемы. Если установить Visual Studio не удается, воспользуйтесь пошаговыми указаниями в статье Устранение неполадок при установке и обновлении Visual Studio.
Я пытаюсь подписать пакет appx для Windows 8 с помощью файла pfx, который у меня есть. Я использую команду так:
И из этого я получаю:
Я думаю, что Signtool пытается найти сертификат в хранилище доверенных корневых сертификатов, и у вас нет сертификатов подписи кода там. У меня была эта ошибка, потому что истек срок действия сертификата, использованного для подписи У меня была похожая проблема, и я разместил здесь ответ . Надеюсь это поможет.Ошибка SignTool: не найдено сертификатов, соответствующих всем заданным критериям.
При получении этой ошибки через Visual Studio это произошло потому, что был настроен сертификат подписи, соответствующий компьютеру, на котором он был изначально разработан.
Вы можете проверить это, перейдя в свойства проекта> вкладка подписи и проверив данные сертификата.
Вы можете снять флажок «Подписывать манифесты ClickOnce», чтобы отключить подпись.
Если вы не хотите отключать эту опцию, вам придется установить сертификат.
Просто добавьте к тому, что предложил @JDandChips: Для целей отладки и тестирования вы также можете использовать временный тестовый сертификат, нажав кнопку «Создать тестовый сертификат», показанную на скриншоте выше. В моей ситуации сертификат был доступен с машины, на которой он был изначально разработан, поэтому я мог выбрать «Выбрать из файла . » для установки отсутствующего сертификата. Кроме того, вы всегда можете создать новый и использовать это! Для новичков VS. Убедитесь, что вы щелкнули правой кнопкой мыши по проекту, а не по решению, потому что это вызовет совершенно другое меню!Попробуйте с / debug. 1,2 как в:
Это поможет вам узнать, что происходит. Вы должны получить вывод, как это:
Вы можете увидеть, какой фильтр вызывает ваш сертификат, или если сертификаты не рассматривались.
Я изменил хеш и другую информацию, но вы должны понять. Надеюсь это поможет.
1 Обратите внимание: signtool в частности, о том, где находится /debug опция. Это должно идти после sign заявления.
Работает для меня. Не то чтобы я понял ответ от signtool, но / debug сделал то, что должен. Upvote! Эта команда особенно относится к тому, где вы поставили / debug. Если вы поставите его не по порядку, он сообщит об ошибке. / debug работает только для определенных версий signtool.exe. Тот, что поставляется с WDK, предоставляет эту опцию, а тот, что в Windows SDK - нет. Кроме того, / debug должен идти после знака signtool, а не между ними. Показывает, что мой сертификат истек. Хорошая работа.
2 Также обратите внимание: /debug опция работает только с некоторыми версиями signtool . Версия WDK имеет опцию, а версия Windows SDK - нет.Пожалуйста, всегда проверяйте дату истечения срока действия вашего сертификата, потому что у большинства сертификатов есть срок действия. В моем случае срок действия сертификата истек, и я пытался построить проект.
Чтобы проверить срок действия сертификата, перейдите в командную строку, перейдите туда, где находится ваш сертификат, затем введите certutil -dump mycertificate.pfx . Посмотрите на последнюю запись, поскольку первыми являются CA, а не сертификат подписи кода.Если вам не нужно подписывать приложение, щелкните правой кнопкой мыши ваш проект
Project Properties -> Signing -> uncheck "Sign the ClickOnce Manifest"
Также, как предлагает эта статья MS,
Вы также можете нажать на создать тестовый сертификат, чтобы продолжить. спасибопросто снимите флажок «Подписывать клик один раз» на вкладке подписи в свойствах проекта, это уберет ошибку, и вы можете создать новый как оттуда.
В моем случае у меня неправильный тип сертификата, который я пытаюсь связать.
У меня была «Проверка подлинности сервера», а не «Подписание кода» .
Вы должны увидеть это в разделе «Сертификат» в разделе «Назначение».
После этого все работает нормально.В случае, если кто-то столкнется с этим: моя проблема закончилась тем, что мне нужно было запустить командную строку от имени администратора перед использованием приложения signtool.exe. Тогда все работает чудесно.
Я запускаю signtool из VS2015 в качестве скрипта, и я столкнулся с той же проблемой. Я запустил VS2015 в качестве администратора, и табло смогло подписать мой файл>Я получил ту же проблему при разработке консольного приложения и в качестве быстрого решения ,
тогда иди project properties ,
нажмите на signing вкладку и снимите флажок «Подписать манифест ClickOnce».
Описание изображения:
К вашему сведению, вы также можете увидеть это менее одной минуты видео решение . Приведенное выше изображение взято из видео.
Вы также можете нажать на создать тестовый сертификат, чтобы продолжить. спасибоЯ решил это с помощью /sm флаг, чтобы указать, чтобы искать в хранилище машины вместо хранилища по умолчанию, которое является Моим (локальным пользователем) хранилищем. Кроме того, это может помочь включить отладку для signtool с помощью /debug .
У меня была эта проблема, и я не совсем уверен, какой шаг ниже заставил это работать, но надеюсь, что это поможет кому-то еще . вот что я сделал:
Спасибо, это помогло. Я использовал .crt файл, предоставленный Comodo, вместо установки сертификата, а затем экспортировал .pfx файл.У меня та же проблема, читая некоторые ответы (размещенные здесь), я видел, что мой сертификат истек.
Просто создайте новый из моего стартового проекта. Затем у менеджера сертификатов удалили просроченный сертификат.
Теперь все компилируется нормально.
Критерии включают, среди прочего, имя учетной записи (с чьим закрытым ключом он связан), домен, компанию, срок действия, предполагаемые цели.
Существует много возможных причин возникновения этой ошибки, некоторые из них уже перечислены. Вот еще один совет: при импорте сертификата убедитесь, что вы работаете с исходным файлом, полученным из центра сертификации (CA) , иначе некоторые свойства могут быть потеряны.
Пример: недавно я пытался импортировать сертификат, экспортированный из другой учетной записи на том же компьютере. Сертификат стал видимым для моей учетной записи, но не был связан с моей учетной записью, и в результате он signtool отказался распознать его без явного указания имени файла и пароля. Который, когда он выполняется как часть процесса сборки и записывается явно в командный файл или исходный файл, может быть недостаточно безопасным. (Импорт оригинального сертификата, выданного центром сертификации, решил эту проблему.)
Проблема заключалась в том, что я неправильно установил сертификат в хранилище сертификатов Windows, поэтому с сертификатом подписи кода не было никакого личного ключа.
Что я должен был сделать, это:
Подайте запрос, перепрыгните через проверочные кольца эмитента, пожертвуйте козу, помолитесь богам, отправьте подписанное заявление от ваших прародителей и т.
Загрузите сертификат (.crt) и импортируйте его в тот же браузер . Браузер теперь имеет как закрытый ключ, так и сертификат .
Экспортируйте сертификат из браузера в виде файла обмена личной информацией (.p12). Вам будет предложено ввести пароль для защиты этого файла.
Сохраните резервную копию файла .p12.
Запустите диспетчер сертификатов (certmgr.msc), щелкните правой кнопкой мыши на хранилище личных сертификатов, выберите Все задачи / Импорт . и импортируйте файл .p12 в Windows. Вам будет предложено ввести пароль, который вы использовали для защиты файла. На данный момент, в зависимости от ваших требований безопасности, вы можете пометить ключ как экспортируемый, чтобы вы могли восстановить копию из хранилища Windows. Вы также можете отметить, что перед использованием требуется пароль, если вы хотите нарушить пакетные сценарии.
Читайте также: