Как сделать сертификат для приложения
Следующая команда описывает создание 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 на свой параметр.
Следующая команда описывает создание cer файла Windows (т.е. Сертификата от надежного поставщика).
Проблема заключается в том, что при создании приложения в Visual Studio 2017 оно позволяет только через файл package.windows10.appxmanifest файл pfx. при обновлении ссылки на эту командную строку он не создает pvk файл, поэтому нужно добавить
дополнительные параметры командной строки, такие как /sv SubjectKeyFile, которые будут создавать результирующий файл pvk.
Однако даже используя эту ссылку командной строки:
В результате имплантации файла сертификата в Visual Studio возникает эта ошибка:
Я иду по ссылке и ничего не объясняет на самом деле, что происходит. Один человек комментирует, чтобы создать временный, который работает, но это неспецифический тестовый сертификат, который длится всего год.
Есть ли лучший способ создать скрипт с makecert? Как мне узнать, правильно ли в конечном итоге создается сертификат или нет? Дополнительная документация будет полезна, но я не нашел ничего другого.
ОТВЕТЫ
Ответ 1
Ответ, предоставленный @nico, имеет правильные утверждения, но заставил меня осознать, что в этом было нечто большее, чем я первоначально описывал. Поэтому я очистил заголовок вопроса и вопрос, чтобы обеспечить лучший вопрос и последующий ответ.
Во-первых, нужно спросить себя, для чего они используют приложение? Будет ли приложение загружено в Microsoft Store или предназначено только для внутреннего использования.
В любом случае вы захотите отладить и разработать приложение. Отладка не требует установки сертификата, поэтому в этом смысле мы в безопасности.
Если вы используете приложение для своей организации или просто на локальном компьютере, вам понадобится доверенный сертификат.
Этот сертификат может существовать в нескольких различных сценариях.
- Вам нужен самозаверяющий сертификат или
- Вам нужен выданный сертификат от центра сертификации CA, т.е. вашего предприятия или организации?
Я пойду по обоим сценариям. В любом случае протокол makecert устарел Заметки об устаревании makecert
Сценарий 1. Если вам нужен самозаверяющий сертификат, выполните следующие действия.
- Перейдите на powershell и используйте командлет New-SelfSignedCertificate pkiclient. что позволит вам создать комбинацию .cer и соответствующий закрытый ключ + открытый сертификат =.pfx, если вы создадите для сертификата + закрытый ключ. И вам нужно иметь закрытый ключ, т.е..pfx, чтобы связать и упаковать ваше приложение с Visual Studio и установить его в локальное хранилище приложений Windows (не путать с магазином Microsoft.)
Вот ссылки, по которым нужно следовать *** Прежде чем создавать сертификат, обязательно прочитайте 1А:
1А. *** Когда вы создаете New-SelfSignedCertificate, вы должны понимать, что сертификат должен быть создан очень специфическим способом. Это для самоподписанного или выданного СА сертификата.
В частности, сертификат должен обладать 2 свойствами
а). Должно быть расширение Basic Constraints, установленное в Subject Type = End Entity. Простыми словами это говорит о том, что. Когда этот сертификат выдается вам, вы не можете сделать так, чтобы сертификат был последующим центром сертификации с возможностью выдавать больше сертификатов. Другими словами. Это конец строки сертификата.
б). Значение расширения Enhanced Key Usage (EKU) установлено на подпись кода. Это предотвращает использование сертификата для каких-либо целей, кроме его предназначения. Что означает, что программное обеспечение было получено от издателя программного обеспечения && Защищает программное обеспечение от изменения после публикации.
В деталях сертификата информация будет выглядеть следующим образом:
Подпись кода (1.3.6..1.5.5.7.3.3) & lt; & lt; & lt; & lt; Это OID расширенного использования ключа для подписи кода 1.3.6. число
Эта информация была найдена очень случайно и не в каком-либо конкретном порядке текущей документации:
1В. Таким образом, в конечном итоге для использования командлета New-SelfSignedCertifcate через powershell нужно было выполнить команду следующим образом:
Приведенная выше команда соответствует обоим критериям сертификата для подписи кода (хотя вместо использования свойства -type можно было бы выбрать oid расширения использования ключа с соответствующим типом подписи кода, т.е. oid подписи кода = 1.3.6.1. 5.5.7.3.3)
Если вы запустите указанную выше команду в powershell, вы создадите 2 вещи, которые теперь можно экспортировать.
А) публичный сертификат B.) закрытый ключ + открытый сертификат, содержащийся в формате файла .pfx.
Теперь, когда у нас есть возможность экспортировать .pfx, вы можете создать пароль и экспортировать файл с закрытым ключом + сертификат .pfx.
- Используя команду, вы запустите командлет в powershell Export-PfxCertificate:
Вот документация Экспорт pfx:
- На этом этапе у вас есть ключ, который работает с Visual Studio, и теперь вы можете упаковать свое приложение и создать файл .appx или файл appxbundle, который можно будет развернуть в хранилище Windows на локальных машинах.
Подробные инструкции можно найти здесь:
Сценарий 2. Если вам нужен доверенный сертификат от центра сертификации вашей организации
Здесь вы должны иметь в виду, что приведенный выше раздел важен, но вам нужно будет оценить разницу между самозаверяющим сертификатом и доверенным корневым сертификатом CA и/или последующим CA.
Ну, вот один из способов понять это. Корневым сертификатом при его создании был сертификат SelfSigned. Тем не менее, он имеет возможность выдавать сертификаты другим для различных вещей. то есть авторизация на сервере или подпись кода. Подумайте, основные ограничения НЕОГРАНИЧЕННЫЕ. И он также может выдавать другие центры сертификации, которые могут выдавать сертификаты другим по ряду причин.
Это называется цепочкой сертификатов. Помните, что сертификат, который мы хотим для наших целей, является концом этой цепочки. Basic Constraints = LIMITED до 0 или false, что означает, что он должен быть подписан как End-endtity или Certificate Authroity = false. в другом слова, которые вы не можете выдать дальнейшие сертификаты по любой причине из этого сертификата, который был выпущен.
Так как это для приложения, которое просто необходимо установить и использовать. Это имеет смысл.
Итак, для следующего сегмента я собираюсь объяснить шаги для запроса сертификата у вашего центра сертификации через запрос сертификата. В мире Linux через openssl это называется .csr. В мире powershell это называется .req
Если вы правильно установите параметры. конечный результат - это файл, который может быть прочитан веб-сайтом проверки openssl или сертификатом со сменным расширением .req или .csr
Powershell может создавать это с помощью командлета CertReq
- .Вы просто используете эту команду вместе с передачей файла .inf, который создаст ваш запрос сертификата .req
certreq -new TestReqConfig.inf MyRequest.req
- Файл .inf будет содержать параметры для ключа и информацию о сертификате, как при создании сертификата new-selfsigned на основе приведенной выше информации.
INF файл будет выглядеть так:
Requesttype = PKCS10 позволяет работать с декодером openssl csr. и все остальное объясняется через эти сайты:
Декодер работает, открывая файл создания и получая промежуточную информацию
Я надеюсь, что эта информация поможет кому-то узнать о сертификатах и о том, как они используются при упаковке и создании приложений для магазина Windows.
Ответ 2
Вышеупомянутая ссылка в вашем случае используется для оформления сертификата Windows для драйвера. Если вы хотите сделать сертификат для своего пакета UWP, вы можете обратиться к следующим шагам:
Шаг 1: Определите имя издателя пакета
Шаг 2. Создайте закрытый ключ, используя MakeCert.exe.
Шаг 3. Создание файла обмена личной информацией (.pfx) с помощью Pvk2Pfx.exe.
И вы также можете использовать приведенную ниже команду для создания сертификата напрямую. Вам нужно только заменить параметр CN параметром.
MakeCert.exe не рекомендуется к использованию. Текущие рекомендации по созданию сертификата см. в разделе Создание сертификата для подписания пакета.
узнайте, как использовать MakeCert.exe и Pvk2Pfx.exe для создания тестового сертификата подписи кода, чтобы вы могли подписывать пакеты приложений Windows.
перед развертыванием пакетной Windows приложения необходимо подписать цифровой подписью. если вы не используете Microsoft Visual Studio 2012 для создания и подписи пакетов приложений, необходимо создать собственные сертификаты для подписи кода и управлять ими. сертификаты можно создавать с помощью MakeCert.exe и Pvk2Pfx.exe из набора драйверов Windows (WDK). Затем можно использовать сертификаты для подписывания пакетов приложений, чтобы их можно было развернуть локально для тестирования.
Это важно знать
Технологии
Предварительные требования
Инструкции
Шаг 1. Определение имени издателя пакета
чтобы сделать сертификат подписи, который вы создадите, использовать с пакетом приложения, который необходимо подписать, имя субъекта сертификата подписи должно соответствовать атрибуту Publisher элемента Identity в AppxManifest.xml для этого приложения. Например, предположим, что AppxManifest.xml содержит:
Для параметра publisherName , указанного с помощью служебной программы MakeCert на следующем шаге, используйте "CN = Contoso Software, O = Contoso Corporation, C = US".
Эта строка параметра указывается в кавычках и является учетом регистра и пробела.
строка атрибута Publisher , определенная для элемента Identity в AppxManifest.xml, должна совпадать со строкой, указанной с помощью параметра MakeCert /n для имени субъекта сертификата. Скопируйте и вставьте строку, где это возможно.
Шаг 2. создание закрытого ключа с помощью MakeCert.exe
Используйте служебную программу MakeCert для создания самозаверяющего тестового сертификата и закрытого ключа:
Эта команда предложит указать пароль для PVK-файла. Рекомендуется выбрать надежный пароль и защитить закрытый ключ в безопасном месте.
Рекомендуется использовать предлагаемые параметры из предыдущего примера по следующим причинам.
/r
Создает самозаверяющий корневой сертификат. Это упрощает управление тестовым сертификатом.
/h 0
Помечает базовое ограничение для сертификата как конечную сущность. Это предотвращает использование сертификата в качестве центра сертификации (ЦС), который может выдавать другие сертификаты.
/еку
Задает значения расширенного использования ключа (EKU) для сертификата.
Не ставьте пробел между двумя значениями, разделенными запятыми.
- 1.3.6.1.5.5.7.3.3 указывает, что сертификат действителен для подписывания кода. Всегда указывайте это значение, чтобы ограничить предполагаемое использование сертификата.
- 1.3.6.1.4.1.311.10.3.13 указывает, что сертификат учитывает время существования подписи. Как правило, если подпись имеет отметку времени, при условии, что сертификат был действителен в момент времени, подпись остается действительной, даже если срок действия сертификата истек. Это расширенное EKU заставляет срок действия подписи истечь независимо от того, имеет ли подпись время отметки.
/e
Задает дату окончания срока действия сертификата. Укажите значение параметра expirationDate в формате мм/дд/гггг. Рекомендуется выбирать дату истечения срока действия, если это необходимо для целей тестирования, как правило, меньше года. Эта дата окончания срока действия в сочетании с ключом времени существования подписывания может помочь ограничить окно, в котором сертификат может быть скомпрометирован и недоступен.
Дополнительные сведения о других параметрах см. в разделе MakeCert.
шаг 3. создание файла личных данных Exchange (. pfx) с помощью Pvk2Pfx.exe
Используйте служебную программу Pvk2Pfx для преобразования файлов. PVK и. cer, созданных средством MakeCert , в PFX-файл, который можно использовать с средством SignTool для подписания пакета приложения:
Файлы MyKey. PVK и MyKey. cer являются теми же файлами, которые MakeCert.exe созданы на предыдущем шаге. С помощью необязательного параметра/по можно указать другой пароль для результирующего PFX-файла; в противном случае PFX-файл имеет тот же пароль, что и MyKey. PVK.
Дополнительные сведения о других параметрах см. в разделе Pvk2Pfx.
Remarks
После создания PFX-файла можно использовать файл с помощью средства SignTool для подписания пакета приложения. Дополнительные сведения см. в разделе как подписать пакет приложения с помощью средства SignTool. Но сертификат по-прежнему не является доверенным для локального компьютера для развертывания пакетов приложений, пока он не будет установлен в хранилище доверенных сертификатов на локальном компьютере. Вы можете использовать Certutil.exe, который поставляется вместе с Windows.
Установка сертификатов с помощью WindowsCertutil.exe
Запустите Cmd.exe от имени администратора.
Выполните следующую команду:
Рекомендуется удалить сертификаты, если они больше не используются. В той же командной строке администратора выполните следующую команду:
CertID — серийный номер сертификата. Выполните следующую команду, чтобы определить серийный номер сертификата:
Соображения безопасности
Добавив сертификат в хранилища сертификатов локальной машины, вы меняете доверие сертификатов всех пользователей на компьютере. Рекомендуется установить все сертификаты подписи кода, необходимые для тестирования пакетов приложений в хранилище сертификатов "Доверенные лица". Немедленно удалите эти сертификаты, когда они больше не нужны, чтобы предотвратить их использование для компрометации доверия системы.
Связанные темы
Примеры
Основные понятия
How to sign an app package using SignTool (Подписывание пакета приложения с помощью SignTool)
Ответ прост: создать собственный сертификат, либо подписывающий сам себя, либо заверенный локальным корневым сервером, и внести его в хранилище доверенных сертификатов операционной системы. Далее этим сертификатом можно пользоваться на локальном веб-сервере.
В этой статье мы разберем процесс создания локального корневого сертификата (также известного, как источник сертификатов). Это позволит вам создавать сколько угодно сертификатов для доменных имен, но доверять только одному сертификату — корневому.
Важно отметить вот что: с 1 сентября 2020 года SSL-сертификаты не выдаются дольше, чем на тринадцать месяцев (397 дней). Поэтому для сертификатов, создаваемых в этой статье, мы ограничимся двенадцатью месяцами.
Источник сертификата (Certificate Authority)
1. Создайте закрытый ключ и самоподписанный сертификат
Опционально: если необходимо, можно заменить MY-CA в CN на что-нибудь другое.
Если вам захочется проверить информацию сертификата, его содержимое можно вывести, запустив следующий код:
2. Создайте файл сертификата с расширением .crt :
Сертификат доменного имени
В большинстве случаев достаточно зарегистрировать в сертификате вашу рабочую станцию. Тем не менее, если вы предпочитаете собственные доменные имена для локальных приложений, в созданный сертификат можно добавить несколько альтернативных имен.
1. Создайте файл расширения x509 v3:
Следуя этому шаблону, можно добавить сколько угодно доменных имен.
Примечание: пожалуйста, обновите DNS.4, DNS.5 и DNS.6 или удалите их, если у вас не настроены никакие локальные доменные имена.
2. Создайте закрытый ключ и запрос на подпись сертификата:
Опционально: страну, штат, город и организацию можно изменять.
3. Создайте самоподписанный сертификат:
Приложениям, обслуживающим ваш контент, понадобится доступ к файлам сертификата и закрытого ключа. Это может быть локальный веб-сервер (Apache или NGINX), локальный сервис или какой-то другой локальный инструмент, допустим, сборщик модулей DevServer.
Вот несколько примеров:
Apache
NGINX
webpack DevServer
Express.js
Вы рассчитывали увидеть кое-что другое, но именно этого и следовало ожидать — потому что источник сертификата еще не входит в число доверенных.
Чтобы получить обозначение безопасного доступа, ваш новый источник сертификата должен считаться доверенным на вашей машине. Процесс присваивания этого статуса различается в зависимости от операционной системы и удовлетворит большинство браузеров. Если вы используете Firefox, процесс имеет некоторые отличия.
macOS — Chrome и Safari
1. Дважды кликните на корневом сертификате ( ca.crt ).
2. Выберите нужную связку ключей Как сделать сертификат для приложения ( login , если вы хотите, чтобы сертификат считался доверенным только в вашем аккаунте, или System , если сертификат должен считаться доверенным во всей системе).
3. Добавьте сертификат.
4. Откройте «Keychain Access» (если еще не открыт).
5. Выделите keychain, который выбрали раньше.
6. Вы должны увидеть сертификат MY-CA (это будет имя, которое вы, как CN, дали вашему источнику сертификата).
7. Дважды кликните по сертификату.
8. Разверните «Доверять» и выберите опцию «Доверять всегда» в пункте «При использовании этого сертификата».
9. Закройте окно сертификата и введите свой пользовательский пароль (если требуется).
Windows 10 — Chrome, IE11 и Edge
1. Дважды кликните на сертификате ( ca.crt ).
2. Кликните на кнопку «Установить сертификат».
3. Выберите, хотите ли вы хранить его на уровне пользователя или на уровне машины.
4. Кликните «Дальше».
5. Выберите «Разместить все сертификаты в следующем хранилище».
6. Кликните «Обзор».
7. Выберите «Доверенные корневые источники сертификатов».
9. Кликните «Дальше».
10. Кликните «Завершить».
11. Если появится подсказка, кликните «Да».
Firefox
Чтобы добавить разрешения сертификату, кликните «Дополнительно…». Сразу же после этого кликните на «Принять риск и продолжить», чтобы дать понять, что вы знаете о риске.
Это нужно сделать всего один раз, но для каждого локального домена.
Теперь, когда сертификат создан и доверие к нему обеспечено, вы без проблем можете посещать свой локальный домен! Обслуживание приложений стало безопасным, и вы можете спокойно продолжать разработку. Возвращаясь к примеру с Express, результат на экране будет таким:
Сайт полностью загружен, и рядом с URL в Chrome теперь отображается символ безопасного соединения.
Читайте также: