<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Самоподписанный Сертификат on kenji.blog</title><link>http://kenji.blog/ru/tags/%D1%81%D0%B0%D0%BC%D0%BE%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82/</link><description>Recent content in Самоподписанный Сертификат on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ru</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 30 Aug 2025 04:18:04 +0900</lastBuildDate><atom:link href="http://kenji.blog/ru/tags/%D1%81%D0%B0%D0%BC%D0%BE%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82/index.xml" rel="self" type="application/rss+xml"/><item><title>Установка MSIX с использованием самоподписанного сертификата</title><link>http://kenji.blog/ru/p/msix%E3%81%AB%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E3%81%A4%E3%81%91%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B/</link><pubDate>Sat, 30 Aug 2025 04:18:04 +0900</pubDate><guid>http://kenji.blog/ru/p/msix%E3%81%AB%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E3%81%A4%E3%81%91%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/msix%E3%81%AB%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E3%81%A4%E3%81%91%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B/img.png" alt="Featured image of post Установка MSIX с использованием самоподписанного сертификата" />&lt;h1 id="установка-msix-с-использованием-самоподписанного-сертификата">Установка MSIX с использованием самоподписанного сертификата
&lt;/h1>&lt;p>При распространении приложений в Windows использование &lt;strong>пакета MSIX&lt;/strong> удобно, поскольку механизм установки и обновления унифицирован. Однако существует ограничение: для MSIX всегда требуется «подписанный сертификат».
Когда вы хотите протестировать приложение, разработанное компанией или частным лицом, могут возникнуть ситуации, когда «покупка коммерческого сертификата подписи кода — это слишком».&lt;/p>
&lt;p>Здесь на помощь приходит &lt;strong>самоподписанный сертификат (Self-Signed Certificate)&lt;/strong> . В этой статье описаны шаги по прикреплению самоподписанного сертификата к MSIX и возможности его установки в локальной среде.&lt;/p>
&lt;hr>
&lt;h2 id="1-создание-самоподписанного-сертификата">1. Создание самоподписанного сертификата
&lt;/h2>&lt;p>Сначала запустите PowerShell в режиме администратора и выполните следующую команду.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="p">//&lt;/span> &lt;span class="n">Создание&lt;/span> &lt;span class="n">самоподписанного&lt;/span> &lt;span class="n">сертификата&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">New-SelfSignedCertificate&lt;/span> &lt;span class="n">-Type&lt;/span> &lt;span class="n">CodeSigningCert&lt;/span> &lt;span class="n">-Subject&lt;/span> &lt;span class="s2">&amp;#34;CN=035A9AAC-915B-4CE1-AE39-1A101BED42F5&amp;#34;&lt;/span> &lt;span class="n">-CertStoreLocation&lt;/span> &lt;span class="n">Cert&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="p">\&lt;/span>&lt;span class="n">CurrentUser&lt;/span>&lt;span class="p">\&lt;/span>&lt;span class="n">My&lt;/span> &lt;span class="n">-NotAfter&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nb">Get-Date&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="py">AddYears&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">10&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">-KeyUsage&lt;/span> &lt;span class="n">DigitalSignature&lt;/span> &lt;span class="n">-FriendlyName&lt;/span> &lt;span class="s2">&amp;#34;kenjinote&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Здесь создается сертификат для «подписания кода».&lt;/p>
&lt;ul>
&lt;li>Его будет легче найти позже, если вы дадите ему понятное имя с помощью &lt;code>-FriendlyName&lt;/code>.&lt;/li>
&lt;li>Вы можете настроить срок действия с помощью &lt;code>-NotAfter&lt;/code>. На этот раз мы установили его на 10 лет.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="2-экспорт-файла-pfx">2. Экспорт файла PFX
&lt;/h2>&lt;p>Экспортируйте созданный сертификат в формате PFX, чтобы его можно было использовать с &lt;code>signtool&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="p">//&lt;/span> &lt;span class="n">Создание&lt;/span> &lt;span class="n">pfx&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$cert&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">Get-ChildItem&lt;/span> &lt;span class="n">Cert&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="p">\&lt;/span>&lt;span class="n">CurrentUser&lt;/span>&lt;span class="p">\&lt;/span>&lt;span class="n">My&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Where-Object&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nv">$_&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">FriendlyName&lt;/span> &lt;span class="o">-eq&lt;/span> &lt;span class="s2">&amp;#34;kenjinote&amp;#34;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$password&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">ConvertTo-SecureString&lt;/span> &lt;span class="n">-String&lt;/span> &lt;span class="s2">&amp;#34;password&amp;#34;&lt;/span> &lt;span class="n">-Force&lt;/span> &lt;span class="n">-AsPlainText&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Export-PfxCertificate&lt;/span> &lt;span class="n">-Cert&lt;/span> &lt;span class="nv">$cert&lt;/span> &lt;span class="n">-FilePath&lt;/span> &lt;span class="s2">&amp;#34;D:\pfx\cert.pfx&amp;#34;&lt;/span> &lt;span class="n">-Password&lt;/span> &lt;span class="nv">$password&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Пароль, установленный в это время (в примере &lt;code>password&lt;/code> ), потребуется для последующей операции подписания.&lt;/p>
&lt;hr>
&lt;h2 id="3-установка-самоподписанного-сертификата-в-доверенные-корневые-центры-сертификации">3. Установка самоподписанного сертификата в Доверенные корневые центры сертификации
&lt;/h2>&lt;p>Созданный сертификат сам по себе не будет пользоваться доверием Windows. Чтобы его установить, необходимо импортировать его из &lt;code>certmgr.msc&lt;/code> в &lt;strong>[Доверенные корневые центры сертификации] -&amp;gt; [Сертификаты]&lt;/strong> .&lt;/p>
&lt;p>Если вы импортируете экспортированный сертификат ( &lt;code>.cer&lt;/code> или &lt;code>.pfx&lt;/code> ), он будет рассматриваться как доверенный сертификат на целевом ПК.
В результате, даже если вы подпишете MSIX, предупреждение «Ненадежный сертификат» не появится.&lt;/p>
&lt;hr>
&lt;h2 id="4-подписание-установщика-msix">4. Подписание установщика (MSIX)
&lt;/h2>&lt;p>Наконец, используйте созданный сертификат PFX для подписания MSIX. &lt;code>signtool&lt;/code> входит в состав Visual Studio и Windows SDK.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="p">//&lt;/span> &lt;span class="n">Подписание&lt;/span> &lt;span class="n">установщика&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">signtool&lt;/span> &lt;span class="n">sign&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="n">fd&lt;/span> &lt;span class="n">SHA256&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="n">f&lt;/span> &lt;span class="s2">&amp;#34;D:\pfx\cert.pfx&amp;#34;&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="s2">&amp;#34;password&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;C:\installer\installer.msix&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>&lt;code>/fd SHA256&lt;/code> указывает алгоритм подписи.&lt;/li>
&lt;li>Укажите файл PFX с помощью &lt;code>/f&lt;/code> и передайте пароль с помощью &lt;code>/p&lt;/code>.&lt;/li>
&lt;li>Наконец, укажите путь к файлу MSIX.&lt;/li>
&lt;li>Если путь к signtool не найден, укажите полный путь. В моей среде он находился в следующем месте.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\microsoft.windows.sdk.buildtools&lt;/span>&lt;span class="se">\10&lt;/span>&lt;span class="s2">.0.26100.1742&lt;/span>&lt;span class="se">\b&lt;/span>&lt;span class="s2">in&lt;/span>&lt;span class="se">\10&lt;/span>&lt;span class="s2">.0.26100.0&lt;/span>&lt;span class="se">\x64&lt;/span>&lt;span class="s2">\signtool.exe&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>На этом подписание завершено, и MSIX, который можно установить на целевой ПК, будет готов.&lt;/p>
&lt;hr>
&lt;h2 id="заключение">Заключение
&lt;/h2>&lt;ul>
&lt;li>Создайте самоподписанный сертификат с помощью &lt;strong>New-SelfSignedCertificate&lt;/strong>&lt;/li>
&lt;li>Экспортируйте PFX с помощью &lt;strong>Export-PfxCertificate&lt;/strong>&lt;/li>
&lt;li>Установите сертификат в &lt;strong>Доверенные корневые центры сертификации&lt;/strong>&lt;/li>
&lt;li>Подпишите MSIX с помощью &lt;strong>signtool&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Поняв этот процесс, вы сможете проверить работу и протестировать распространение в локальной среде без покупки коммерческого сертификата.
Конечно, для реального коммерческого распространения требуется сертификат, выданный центром сертификации, но этот метод очень полезен на этапе разработки и проверки.&lt;/p>
&lt;hr>
&lt;p>👉 В этот раз мы использовали installer.msix в качестве примера, но ту же процедуру можно применить и к приложениям, которые вы создали сами.&lt;/p>
&lt;hr></description></item></channel></rss>