Visual studio не принимает сертификат makecert для приложения Xamarin UWP - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть приложение Xamarin, которое я также хочу развернуть в Windows UWP.Я попытался создать самозаверяющий сертификат с помощью makecert.exe, но Visual Studio не примет его.Я следовал этому руководству от microsoft .Это моя команда:

makecert.exe -n "CN=some AG" -r -pe -ss my -eku 1.3.6.1.5.5.7.3.3 ContosoTest.cer

При попытке импортировать этот сертификат из хранилища сертификатов в Visual studio Package.appxmanifest будет выдано сообщение "Kein Zertifikat erfüllt die Anwendungskriterien" (извините за немецкий, я переключил компьютер на английский, но это сохранилось на немецком языкепочему-то) примерно переводится как "No certificate complies to the Applications criteria".Когда я экспортирую сертификат в файл pfx и пытаюсь импортировать его, он просто будет жаловаться "The Manifest Designer could not import the certificate. The Manifest Designer could not import from file <filepath>.".

Он работает с тестовыми сертификатами, созданными непосредственно в редакторе Package.appxmanifest, однако он не будет принимать сертификатыот makecert, хотя официальное руководство Microsoft утверждает, что это должно работать так.Тестовые сертификаты, созданные Visual Studio, содержат ту же цель подписания кода 1.3.6.1.5.5.7.3.3

Я также попробовал это с PowerShell New-SelfSignedCertificate и Export-PfxCertificate, однако это имело тот же эффект.

Чтобы избежать проблемы XY , вот причина, по которой я пытаюсь использовать сертификат makecert вместо тестового сертификата, созданного Visual Studio.Пакет приложения будет подписан клиентом с другим сертификатом, которым он не хочет делиться с нами закрытым ключом (понятно).По его словам и Google должно быть возможно отказаться от пакета приложения с помощью signtool, если сертификаты имеют тот же издатель.

Сертификат нашего клиента включает помимо CN=some AG и другую информацию в форме OU=blabla,O=some AG,L=city,S=state,C=DE.Я не могу ввести эту информацию в название для тестового сертификата в visual studio.Он будет жаловаться, что знак равенства = не допускается в названии.Поэтому я пытаюсь создать сертификат с этой информацией другим способом.Когда Visual Studio не взяла сертификат Makecert, я удалил эту дополнительную информацию, чтобы узнать, является ли это причиной.Однако, как вы можете видеть в приведенной выше команде, даже простой сертификат с CN=some AG не работает, в то время как Visual Studio позволяет мне создавать сертификат с таким простым именем.

Любая помощь приветствуется.Я пробовал множество разных способов создания сертификата, только с помощью make-cert и powershell я смог добавить цель подписи кода, однако даже тогда Visual Studio не примет его.Хотя руководство Microsoft говорит, что это должно.

1 Ответ

0 голосов
/ 02 января 2019

У меня была похожая проблема с использованием New-SelfSignedCertificate и Export-PfxCertificate, и в основном проблема https://github.com/MicrosoftDocs/windows-uwp/issues/1281 от shanepowell для Mircosoft Doc решила мою проблему.

Подводя итог, вам нужно добавить -Параметр TextExtension, чтобы пример работал с импортом в Visual Studio.

New-SelfSignedCertificate -Type Custom -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -KeyUsage DigitalSignature -FriendlyName -TextExtension @('2.5.29.37={text}1.3.6.1.5.5.7.3.3', '2.5.29.19={text}Subject Type:End Entity') -CertStoreLocation "Cert:\CurrentUser\My"

И после этого следуйте документации Mircosoft: https://docs.microsoft.com/en-us/windows/uwp/packaging/create-certificate-package-signing

В вашем случае я предполагаю что-то вроде:

$pwd = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText 
Export-PfxCertificate -cert "Cert:\LocalMachine\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $pwd

Теперь импорт pfx-файла в Visual Studio должен работать.

...