Applies ToExcel для Microsoft 365 Word для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Word 2024 Word 2021 Word 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 Office 2016
В этой статье объясняется, как получить или создать цифровую подпись для использования в документах Office. Дополнительные сведения об их использовании в документах Office см. в статье Добавление и удаление цифровой подписи в файлах Office.
Что такое цифровая подпись?
Цифровая подпись (удостоверение) чаще называется цифровым сертификатом. Для цифрового подписания документа Office требуется действующий цифровой сертификат. Цифровые сертификаты обычно выдаются доверенным центром сертификации (ЦС) — надежной сторонней организацией, которая выпускает цифровые сертификаты. Существует множество коммерческих центров сертификации, у которых вы можете приобрести или бесплатно получить цифровой сертификат. Многие учреждения, правительственные организации и предприятия также могут выдавать свои собственные сертификаты.
Цифровой сертификат необходим для цифровой подписи, так как он предоставляет открытый ключ, который можно использовать для проверки закрытый ключ, связанной с цифровой подписью. Цифровые сертификаты позволяют использовать цифровые подписи для проверка подлинности цифровой информации.
Получение цифровой подписи от центра сертификации или партнера Майкрософт
Если предполагается обмениваться документами, содержащими цифровую подпись, с другими людьми и при этом позволять получателям документов проверять подлинность цифровой подписи, можно получить цифровой сертификат у известного стороннего центра сертификации. Дополнительные сведения см. в разделе Поиск служб цифровой идентификации или цифровой подписи.
Создание цифрового сертификата
Если вы не хотите приобретать цифровой сертификат у стороннего центра сертификации или вам требуется срочно подписать документ, вы можете создать собственный цифровой сертификат.
Какую версию Windows вы используете?
-
Перейдите в раздел C:\Program Files (x86)\Microsoft Office\root\ (или C:\Program Files\Microsoft Office\root\Office16 , если вы используете 64-разрядную версию Office).
.
-
Запустите программу SelfCert.exe. Откроется диалоговое окно Создание цифрового сертификата.
-
В поле Имя вашего сертификата введите описательное имя сертификата.
-
Нажмите кнопку ОК.
-
Когда появится сообщение «SelfCert: успех», нажмите кнопку ОК.
-
Перейдите в папку C:\Program Files\Microsoft Office\<версия Office>\.
-
Запустите программу SelfCert.exe. Откроется диалоговое окно Создание цифрового сертификата.
-
В поле Имя вашего сертификата введите описательное имя сертификата.
-
Нажмите кнопку ОК.
-
Когда появится сообщение «SelfCert: успех», нажмите кнопку ОК.
-
Нажмите кнопку Пуск и выберите по очереди пункты Все программы, Microsoft Office, Средства Microsoft Office и Средство создания цифровых сертификатов для проектов VBA. Откроется диалоговое окно Создание цифрового сертификата.
-
В поле Имя вашего сертификата введите описательное имя сертификата.
-
Нажмите кнопку ОК.
-
Когда появится сообщение «SelfCert: успех», нажмите кнопку ОК.
Чтобы просмотреть хранилище личных сертификатов, выполните указанные ниже действия.
-
Откройте Internet Explorer.
-
В меню Сервис выберите пункт Свойства обозревателя, а затем откройте вкладку Содержание.
-
Нажмите кнопку Сертификаты и откройте вкладку Личные.
Важно: Если подписать документ с применением собственного цифрового сертификата и поделиться им, то другие пользователи не смогут проверить достоверность вашей цифровой подписи. Им придется вручную указать, что они доверяют вашему самозаверяющему сертификату.
К началу страницы
См. также
Добавление или удаление цифровой подписи в файлах Office
Защита сообщений с помощью цифрового идентификатора в Outlook
Поиск служб цифровой идентификации или цифровой подписи
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
Большинству администраторов Windows, знакомых с темой PKI, известна утилита MakeCert.exe, с помощью которой можно создать самоподписанный сертификат. Эта утилита включена в состав Microsoft .NET Framework SDK и Microsoft Windows SDK. В современных версиях Windows 11/10/8.1 и Windows Server 2022/2019/2016/2012R2 вы можете создать самоподписанный сертификат с помощью встроенных командлетов PowerShell без использования дополнительных утилит.
Содержание:
- New-SelfSignedCertificate: создать самоподписанный SSL сертификат в PowerShell
- Как сгенерировать SAN (SubjectAltName) сертификат с помощью PowerShell?
- Экспорт самоподписаного сертификата в Windows
- Сгенерировать сертификат для подписи кода типа Code Signing
- Создать самоподписанный SSL сертификат SHA-256 для IIS
New-SelfSignedCertificate: создать самоподписанный SSL сертификат в PowerShell
Для создания самоподписанного сертификата в PowerShell нужно использовать командлет New-SelfSignedCertificate, входящий в состав модуля PKI (Public Key Infrastructure).
Чтобы вывести список всех доступных командлетов в модуле PKI, выполните команду:
Get-Command -Module PKI
Самоподписанные SSL сертификаты рекомендуется использовать в тестовых целях или для обеспечения сертификатами внутренних интранет служб (IIS, Exchange, Web Application Proxy, LDAPS, ADRMS, DirectAccess и т.п.), в тех случая когда по какой-то причине приобретение сертификата у внешнего провайдера или разворачивание инфраструктуры PKI/CA невозможны.
Совет. Не забывайте, что вы можете использования полноценные бесплатные SSL сертификаты от Let’s Encrypt. Например, вы можете SSL сертификат Let’s Encrypt и привязать его к сайту IIS.
Для создания сертификата нужно указать значения -DnsName (DNS имя сервера, имя может быть произвольным и отличаться от имени localhost) и -CertStoreLocation (раздел локального хранилища сертификатов, в который будет помещен сгенерированный сертификат).
Чтобы создать новый SSL сертификат для DNS имени test.contoso.com (указывается FQDN имя) и поместить его в список персональных сертификатов компьютера, выполните команду:
New-SelfSignedCertificate -DnsName test.contoso.com -CertStoreLocation cert:\LocalMachine\My
Команда вернет отпечаток нового сертификата (Thumbprint), Subject и EnhancedKeyUsageList. По умолчанию такой сертификат можно использовать для аутентификации клиента Client Authentication (1.3.6.1.5.5.7.3.2) или сервера Server Authentication (1.3.6.1.5.5.7.3.1).
Если вы запустите эту команду в PowerShell без прав администратор, появится ошибка:
New-SelfSignedCertificate : CertEnroll::CX509Enrollment::_CreateRequest: Access denied. 0x80090010 (-2146893808 NTE_PERM)
Если вы указали нестандартный криптографический провайдер CSPs (например, с помощью параметров
-KeyAlgorithm "ECDSA_secP256r1" -Provider 'Microsoft Smart Card Key Storage Provider'
), убедитесь, что он установлен на компьютере (по умолчанию используется CSP Microsoft Enhanced Cryptographic Provider). Иначе появится ошибка:
New-SelfSignedCertificate: CertEnroll::CX509Enrollment::_CreateRequest: Provider type not defined. 0x80090017 (-2146893801 NTE_PROV_TYPE_NOT_DEF).
По-умолчанию генерируется самоподписанный сертификат со следующим параметрами:
- Криптографический алгоритм: RSA;
- Размер ключа: 2048 бит;
- Допустимые варианты использования ключа: Client Authentication и Server Authentication;
- Сертификат может использоваться для: Digital Signature, Key Encipherment ;
- Срок действия сертификата: 1 год.
- Криптопровадер: Microsoft Software Key Storage Provider
Данная команда создаст новый сертификат и импортирует его в персональное хранилище компьютера. Откройте оснастку certlm.msc и проверьте, что в разделе Personal хранилища сертификатов компьютера появился новый сертификат.
С помощью командлета Get-ChildItem можно вывести все параметры созданного сертификата по его отпечатку (Thumbprint):
Get-ChildItem -Path "Cert:\LocalMachine\My" | Where-Object Thumbprint -eq 76360EAA92D958ECF2717261F75D426E6DB5B4D1 | Select-Object *
PSPath : Microsoft.PowerShell.Security\Certificate::LocalMachine\My\76360EAA92D958ECF2717261F75D426E6 DB5B4D1 PSParentPath : Microsoft.PowerShell.Security\Certificate::LocalMachine\My PSChildName : 76360EAA92D958ECF2717261F75D426E6DB5B4D1 PSDrive : Cert PSProvider : Microsoft.PowerShell.Security\Certificate PSIsContainer : False EnhancedKeyUsageList : {Client Authentication (1.3.6.1.5.5.7.3.2), Server Authentication (1.3.6.1.5.5.7.3.1)} DnsNameList : {test.contoso.com} SendAsTrustedIssuer : False EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty PolicyId : Archived : False Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid} FriendlyName : HasPrivateKey : True PrivateKey : System.Security.Cryptography.RSACng IssuerName : System.Security.Cryptography.X509Certificates.X500DistinguishedName NotAfter : 12/2/2023 3:41:18 PM NotBefore : 12/2/2022 3:21:18 PM PublicKey : System.Security.Cryptography.X509Certificates.PublicKey RawData : {48, 130, 3, 45…} SerialNumber : 24682351DA9C59874573BA2B5BB39874 SignatureAlgorithm : System.Security.Cryptography.Oid SubjectName : System.Security.Cryptography.X509Certificates.X500DistinguishedName Thumbprint : 76360EAA92D958ECF2717261F75D426E6DB5B4D1 Version : 3 Handle : 2007435579936 Issuer : CN=test.contoso.com Subject : CN=test.contoso.com
Примечание. Срок действия такого самоподписанного сертификата истекает через 1 год с момента его создания. Можно задать другой срок действия сертификата с помощью атрибута —NotAfter.Чтобы выпустить сертификат на 3 года, выполните следующие команды:
$todaydate = Get-Date
$add3year = $todaydate.AddYears(3)
New-SelfSignedCertificate -dnsname test.contoso.com -notafter $add3year -CertStoreLocation cert:\LocalMachine\My
Можно создать цепочку сертификатов. Сначала создается корневой сертификат (CA), а на основании него генерируется SSL сертификат сервера:
$rootCert = New-SelfSignedCertificate -Subject "CN=TestRootCA,O=TestRootCA,OU=TestRootCA" -KeyExportPolicy Exportable -KeyUsage CertSign,CRLSign,DigitalSignature -KeyLength 2048 -KeyUsageProperty All -KeyAlgorithm 'RSA' -HashAlgorithm 'SHA256' -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider"
New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName "test2.contoso.com" -Signer $rootCert -KeyUsage KeyEncipherment,DigitalSignature
Чтобы изменить длину ключа сертификата и алгоритм шифрования, нужно использовать параметры
–KeyAlgorithm
,
–KeyLength
и
–HashAlgorithm
. Например:
New-SelfSignedCertificate -KeyAlgorithm RSA -KeyLength 2048 -HashAlgorithm "SHA256"
Если на компьютере доступен модуль TPM 2.0, можно использовать его для защиты ключа:
New-SelfSignedCertificate -Type Custom -Provider "Microsoft Platform Crypto Provider" ...
Провайдер Microsoft Platform Crypto Provider использует Trusted Platform Module чип устройства для создания ассиметричного ключа.
$Params = @{
"DnsName" = "mylocalhostname"
"CertStoreLocation" = "Cert:\\CurrentUser\\My"
"KeyUsage" = "KeyEncipherment","DataEncipherment","KeyAgreement"
"Type" = "DocumentEncryptionCert"
}
New-SelfSignedCertificate @Params
Как сгенерировать SAN (SubjectAltName) сертификат с помощью PowerShell?
Командлет New-SelfSignedCertificate позволяет создать сертификат с несколькими различными именами Subject Alternative Names (SAN).
Примечание. Утилита Makecert.exe, в отличии от командлета New-SelfSignedCertificate, не умеет создавать сертификаты с SAN.
Если создается сертификат с несколькими именами, первое имя в параметре DnsName будет использоваться в качестве CN (Common Name) сертификата. К примеру, создадим сертификат, у которого указаны следующие имена:
- Subject Name (CN): adfs1.contoso.com
- Subject Alternative Name (DNS): web-gw.contoso.com
- Subject Alternative Name (DNS): enterprise-reg.contoso.com
Команда создания сертификата будет такой:
New-SelfSignedCertificate -DnsName adfs1.contoso.com,web_gw.contoso.com,enterprise_reg.contoso.com -CertStoreLocation cert:\LocalMachine\My
Также можно сгенерировать wildcard сертификат для всего пространства имен домена, для этого в качестве имени сервера указывается *.contoso.com.
New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname *.contoso.com
Вы можете привязать сертификат не только к DNS имени, но и к IP адресу. Для этого вместе параметр -DnsName нужно использовать -TextExtension. Например:
New-SelfSignedCertificate -TextExtension @("2.5.29.17={text}IPAddress=10.10.2.3&DNS=TESTServer1&DNS=TESTServer1.local")
Как вы видите, в поле Subject Alternative Name теперь содержится IP адрес.
Экспорт самоподписаного сертификата в Windows
Для экспорта полученного сертификата c закрытым ключом в pfx файл, защищенный паролем, нужно получить его отпечаток (Thumbprint). Сначала нужно указать пароль защиты сертификата и преобразовать его в формат SecureString. Значение Thumbprint нужно скопировать из результатов выполнения команды New-SelfSignedCertificate.
$CertPassword = ConvertTo-SecureString -String “YourPassword” -Force –AsPlainText
Export-PfxCertificate -Cert cert:\LocalMachine\My\2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C:\test.pfx -Password $CertPassword
Можно экспортировать открытый ключ сертификата:
Export-Certificate -Cert Cert:\LocalMachine\My\2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C:\testcert.cer
Проверьте, что в указанном каталоге появился CER (PFX) файл сертификата. Если щелкнуть по нему правой клавишей и выбрать пункт меню Install Certificate, можно с помощью мастера импорта сертификатов добавить сертификат в корневые доверенные сертификаты компьютера.
Выберите Store location -> Local Machine, Place all certificates in the following store -> Trusted Root Certification Authorities.
Можно создать сертификат и сразу импортировать его в доверенные корневые сертификаты компьютера командами:
$cert=New-SelfSignedCertificate …..
$certFile = Export-Certificate -Cert $cert -FilePath C:\certname.cer
Import-Certificate -CertStoreLocation Cert:\LocalMachine\AuthRoot -FilePath $certFile.FullName
Полученный открытый ключ или сам файл сертификата можно распространить на все компьютеры и сервера в домене с помощью GPO (пример установки сертификата на компьютеры с помощью групповых политик).
Сгенерировать сертификат для подписи кода типа Code Signing
В PoweShell 3.0 командлет New-SelfSifgnedCertificate позволял генерировать только SSL сертификаты, которые нельзя было использоваться для подписывания кода драйверов и приложений (в отличии сертификатов, генерируемых утилитой MakeCert).
В версии PowerShell 5 командлет New-SelfSifgnedCertificate теперь можно использовать чтобы выпустить сертификат типа Code Signing.
Вы можете обновить версию PowerShell согласно инструкции.
Для создания самоподписанного сертфиката для подписывания кода приложений, выполните команду:
$cert = New-SelfSignedCertificate -Subject "Cert for Code Signing” -Type CodeSigningCert -CertStoreLocation cert:\LocalMachine\My
Теперь можно подписать ваш PowerShell скрипт эти сертификатом:
Set-AuthenticodeSignature -FilePath C:\PS\test_script.ps1 -Certificate $cert
Если при выполнении команды появится предупреждение UnknownError, значит этот сертификат недоверенный, т.к. находится в персональном хранилище сертификатов пользователя.
Нужно переместить его в корневые сертификаты (не забывайте периодически проверять хранилище сертификатов Windows на наличие недоверенных сертфикатов и обновлять списки корневых сертификатов):
Move-Item -Path $cert.PSPath -Destination "Cert:\CurrentUser\Root"
Теперь вы можете использовать этот самоподписанный сертификат для подписи PowerShell скриптов, драйверов или приложений.
Создать самоподписанный SSL сертификат SHA-256 для IIS
Обратите внимание, что при создании самоподписанный сертификат для IIS через консоль Internet Information Manager (пункт меню Create Self-Signed Certificate), создается сертификат с использованием алгоритма шифрования SHA-1. Такие сертификаты многими браузерами считаются недоверенными, поэтому они могут выдавать предупреждение о небезопасном подключении. Командлет New-SelfSignedCertificate позволяет создать более популярный тип сертификата с помощью алгоритма шифрования SHA-256.
Вы можете привязать самоподписанный сертификат SHA-256, созданный в PowerShell, к сайту IIS. Если вы с помощью PowerShell создали SSL сертификат и поместили его в хранилище сертификатов компьютера, он будет автоматически доступен для сайтов IIS.
Запустите консоль IIS Manager, выберите ваш сайт, затем в настройке Site Binding, выберите созданный вами сертификат и сохраните изменения.
Также можно привязать SSL сертификат к сайту IIS по его отпечатку:
New-IISSiteBinding -Name "Default Web Site" -BindingInformation "*:443:" -CertificateThumbPrint $yourCert.Thumbprint -CertStoreLocation "Cert:\LocalMachine\My" -Protocol https
В этой статье мы расскажем, как создать самоподписанный SSL сертификат в Windows с помощью PowerShell, а также рассмотрим различные способы его использования.
Многие администраторы Windows, знакомые с инфраструктурой PKI, знают утилиту MakeCert.exe, с помощью которой можно выпускать самоподписанные сертификаты. Эта утилита входит в состав Microsoft .NET Framework SDK и Microsoft Windows SDK. В современных версиях Windows (11/10/8.1) и Windows Server (2022/2019/2016/2012R2) вы можете использовать встроенные командлеты PowerShell для создания самоподписанных сертификатов, не прибегая к сторонним утилитам.
Приобрести оригинальные ключи активации Windows всегда можно у нас в каталоге от 1099 ₽
Как создать самоподписанный SSL сертификат в PowerShell
Для создания самоподписанного сертификата в PowerShell используется командлет New-SelfSignedCertificate, который входит в модуль PKI (Public Key Infrastructure).
Чтобы получить список всех доступных командлетов модуля PKI, выполните команду:
Get-Command -Module PKI
Самоподписанные SSL сертификаты обычно используются для тестирования или для обеспечения безопасности внутренних интранет-служб (IIS, Exchange, Web Application Proxy, LDAPS, ADRMS, DirectAccess и т.п.), когда покупка сертификата у внешнего провайдера или разворачивание собственной PKI инфраструктуры не представляется возможным.
Совет: Вы также можете использовать бесплатные SSL сертификаты от Let’s Encrypt, которые подходят для использования на IIS и других веб-серверах.
Для создания сертификата необходимо указать параметры -DnsName (DNS имя сервера, которое может быть произвольным и отличаться от localhost) и -CertStoreLocation (раздел локального хранилища сертификатов, в который будет помещён созданный сертификат).
Для создания нового SSL сертификата с DNS именем test.contoso.com (полное доменное имя) и добавления его в личное хранилище сертификатов компьютера, выполните следующую команду:
New-SelfSignedCertificate -DnsName test.contoso.com -CertStoreLocation cert:\LocalMachine\My
Команда вернёт отпечаток сертификата (Thumbprint), Subject и EnhancedKeyUsageList. По умолчанию такой сертификат можно использовать для аутентификации клиента (Client Authentication (1.3.6.1.5.5.7.3.2)) или сервера (Server Authentication (1.3.6.1.5.5.7.3.1)).
Если команда выполняется без административных прав, может возникнуть ошибка:
New-SelfSignedCertificate : CertEnroll::CX509Enrollment::_CreateRequest: Access denied. 0x80090010 (-2146893808 NTE_PERM)
При использовании нестандартного криптографического провайдера CSP (например, параметров -KeyAlgorithm «ECDSA_secP256r1» -Provider ‘Microsoft Smart Card Key Storage Provider’), убедитесь, что он установлен на вашем компьютере. В противном случае появится ошибка:
New-SelfSignedCertificate: CertEnroll::CX509Enrollment::_CreateRequest: Provider type not defined. 0x80090017 (-2146893801 NTE_PROV_TYPE_NOT_DEF)
Самоподписанный сертификат создаётся по умолчанию со следующими параметрами:
— Криптографический алгоритм: RSA;
— Размер ключа: 2048 бит;
— Использование ключа: Client Authentication и Server Authentication;
— Сертификат может использоваться для: Digital Signature, Key Encipherment;
— Срок действия сертификата: 1 год;
— Криптопровайдер: Microsoft Software Key Storage Provider.
Эта команда создаёт новый сертификат и импортирует его в личное хранилище компьютера. Чтобы убедиться в его успешном добавлении, откройте оснастку certlm.msc и проверьте наличие сертификата в разделе Personal (Личный).
Чтобы вывести все параметры созданного сертификата по его отпечатку (Thumbprint), используйте командлет Get-ChildItem:
Get-ChildItem -Path "Cert:\LocalMachine\My" | Where-Object Thumbprint -eq 76360EAA92D958ECF2717261F75D426E6DB5B4D1 | Select-Object *
Примечание: Срок действия самоподписанного сертификата составляет 1 год с момента его создания. Чтобы задать другой срок действия, используйте параметр -NotAfter. Например, для создания сертификата с трехлетним сроком действия выполните следующие команды:
$todaydate = Get-Date
$add3year = $todaydate.AddYears(3)
New-SelfSignedCertificate -DnsName test.contoso.com -NotAfter $add3year -CertStoreLocation cert:\LocalMachine\My
Создание цепочки сертификатов
Вы можете создать цепочку сертификатов, сначала выпустив корневой сертификат (CA), а затем на его основе сгенерировать SSL сертификат сервера:
$rootCert = New-SelfSignedCertificate -Subject "CN=TestRootCA,O=TestRootCA,OU=TestRootCA" -KeyExportPolicy Exportable -KeyUsage CertSign,CRLSign,DigitalSignature -KeyLength 2048 -KeyUsageProperty All -KeyAlgorithm 'RSA' -HashAlgorithm 'SHA256' -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider"
New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName "test2.contoso.com" -Signer $rootCert -KeyUsage KeyEncipherment,DigitalSignature
Для изменения длины ключа и алгоритма шифрования, используйте параметры -KeyAlgorithm, -KeyLength и -HashAlgorithm:
New-SelfSignedCertificate -KeyAlgorithm RSA -KeyLength 2048 -HashAlgorithm "SHA256"
Если на компьютере установлен модуль TPM 2.0, его можно использовать для защиты ключа:
New-SelfSignedCertificate -Type Custom -Provider "Microsoft Platform Crypto Provider"
Создание SAN (SubjectAltName) сертификата с помощью PowerShell
С помощью командлета New-SelfSignedCertificate можно создать сертификат с несколькими именами Subject Alternative Names (SAN).
Если сертификат содержит несколько имен, первое имя из параметра DnsName используется в качестве CN (Common Name). Например, для создания сертификата с несколькими именами используйте следующую команду:
New-SelfSignedCertificate -DnsName adfs1.contoso.com,web_gw.contoso.com,enterprise_reg.contoso.com -CertStoreLocation cert:\LocalMachine\My
Также можно создать wildcard сертификат для всего домена, указав имя сервера как *.contoso.com:
New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName *.contoso.com
Вы можете привязать сертификат не только к DNS имени, но и к IP адресу. Для этого используйте параметр -TextExtension вместо -DnsName:
New-SelfSignedCertificate -TextExtension @("2.5.29.17={text}IPAddress=10.10.2.3&DNS=TESTServer1&DNS=TESTServer1.local")
Как вы видите, в поле Subject Alternative Name теперь содержится IP адрес.
Экспорт самоподписанного сертификата в Windows
Для экспорта сертификата с закрытым ключом в pfx файл, защищенный паролем, нужно получить его отпечаток (Thumbprint). Сначала задайте пароль и преобразуйте его в формат SecureString. Значение Thumbprint можно скопировать из вывода команды New-SelfSignedCertificate:
$CertPassword = ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText
Export-PfxCertificate -Cert cert:\LocalMachine\My\2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C:\test.pfx -Password $CertPassword
Чтобы экспортировать открытый ключ сертификата, выполните команду:
Export-Certificate -Cert Cert:\LocalMachine\My\2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C:\testcert.cer
Проверьте, что в указанном каталоге появился CER (PFX) файл сертификата. Если щелкнуть по нему правой клавишей и выбрать пункт меню Install Certificate, можно с помощью мастера импорта сертификатов добавить сертификат в корневые доверенные сертификаты компьютера.
Выберите Store location -> Local Machine, Place all certificates in the following store -> Trusted Root Certification Authorities.
Создание сертификата для подписи кода (Code Signing)
Начиная с PowerShell 5, командлет New-SelfSignedCertificate можно использовать для создания сертификатов типа Code Signing:
$cert = New-SelfSignedCertificate -Subject "Cert for Code Signing" -Type CodeSigningCert -CertStoreLocation cert:\LocalMachine\My
Для подписи вашего PowerShell скрипта этим сертификатом используйте следующую команду:
Set-AuthenticodeSignature -FilePath C:\PS\test_script.ps1 -Certificate $cert
Если при выполнении команды появится предупреждение UnknownError, значит этот сертификат недоверенный, т.к. находится в персональном хранилище сертификатов пользователя.
Нужно переместить его в корневые сертификаты (не забывайте периодически проверять хранилище сертификатов Windows на наличие недоверенных сертфикатов и обновлять списки корневых сертификатов):
Move-Item -Path $cert.PSPath -Destination "Cert:\CurrentUser\Root"
Теперь вы можете использовать этот самоподписанный сертификат для подписи PowerShell скриптов, драйверов или приложений.
Создание самоподписанного SSL сертификата SHA-256 для IIS
При создании самоподписанного сертификата для IIS через консоль Internet Information Manager (пункт меню Create Self-Signed Certificate) создаётся сертификат с использованием алгоритма SHA-1, который многими браузерами считается небезопасным. Чтобы создать сертификат с использованием алгоритма SHA-256, используйте командлет New-SelfSignedCertificate.
Вы можете привязать самоподписанный сертификат SHA-256, созданный в PowerShell, к веб-сайту в IIS. Сертификат, помещённый в хранилище сертификатов компьютера, автоматически становится доступен для сайтов в IIS.
Откройте консоль IIS Manager, выберите сайт и в настройках Site Binding укажите созданный вами сертификат, затем сохраните изменения.
Для привязки SSL сертификата к сайту по его отпечатку используйте команду:
New-IISSiteBinding -Name "Default Web Site" -BindingInformation "*:443:" -CertificateThumbPrint $yourCert.Thumbprint -CertStoreLocation "Cert:\LocalMachine\My" -Protocol https
How To Create A Windows Certificate – And Export It
-
View Larger Image
By default, a certificate that is submitted to, and issued by, a Windows Certificate Authority (CA) cannot be exported with its private key. A customer was recently executing a project that involved introducing IBM Cloud with Morpheus and the people doing the integration asked us for a certificate. We naturally complied and gave them the CER file based on the certificate request that they had generated. That didn’t go down well. They apparently need the CRT and the KEY files for the application. That set us in motion trying to rack our brains on what we needed to do to make that happen.
We quickly (re) learned how to do it and we noted quite how many places on the Internet parts of the information is, but we couldn’t find anywhere with recent imagery and narrative on how to pull everything together. So here we go!
A New Template In The CA.
On your certificate server, open the Certificate Service Manager, but not the local user/computer certificate manager. Proceed to Certificate Templates and right click.
Select Manage.
Right click on the Computer template and select Duplicate.
Then make the following changes.
Give the certificate template a recognizable name.
In our case it was necessary to deselect the Build from AD Information since the consultants had their own details in mind. You might have a case where you might want to retain that feature. To do tht just make two duplicates.
And finally, the most important part was to select to allow the private key to be exported.
Save your new template and right click the Certificate Templates once more, this time selecting New, and Certificate Template to Issue. Find your new template and select OK.
That’s it for your certificate template. Now it’s time to go and request certificate itself.
Generating the Certificate
Go to your certificate server URL https://server.domain.com/certsrv/certreqma.asp. That gets you straight to the Advanced request page.
Select Create and submit.
Make your certificate here. In the first image you select the template that you just duplicated and saved.
The second image is where the magic happens.
Tick the box to make the key exportable and then paste in the certificate request text. Then just hit Submit.
That will bring up a new page that gives you the option to click Install This Certificate.
The certificate itself will be installed into the local users (not computers) certificate store.
From there you can select to export the key issued by the Windows CA and you will now be given the option to export the private key which will make a PFX rather than a CER file. You will also be given a box in which to type a password. Do that and remember what you typed.
So that’s you then, done. Well maybe not so much. The consultants we were dealing with didn’t know how to make the CRT and KEY that they wanted, so we had to do it for them.
Generating the CRT and KEY Files
Armed with your PFX file you may now use OpenSSL to do the exports.
From an elevated command line run the following instruction:
For the KEY file
Openssl pkcs12 -in “path to pfx file” -nocerts -out “path to desired destination.key”
You will be prompted for the password you entered when you exported the certificate to the PFX file.
For the CRT file
Openssl pkcs12 -in “path to pfx file” -nokeys -out “path to desired destination.crt”
Summary
This is probably a niche request but an important one as cloud services, integrated operations and automation get ever more entrenched. There wasn’t a single place to go to get the steps to get a Windows CA based certificate capable of being exported with the private key and then using OpenSSL to get the necessary date out if it.
And of course, if you don’t want to do this yourself, you know who you can call! Verinext will be glad to help!
Related Posts
Page load link
Go to Top
A Step-by-Step Guide for Creating Self-Signed SSL in Windows 10
A self-signed certificate is a certificate that is signed by its own creator rather than by a certificate authority (CA). Self-signed certificates can be useful for testing purposes or internal uses but are not recommended for public-facing production websites as they will generate browser warnings. In this guide, we will cover steps on how to create self-signed certificate in Windows 10.
Overview of Self-Signed Certificates
Create a Self-Signed Certificate Using the Certificates Snap-in
Here are the steps to create a self-signed certificate using the Certificates console in Windows 10:
Export the Self-Signed Certificate
To use the new self-signed certificate, it needs to be exported to a file. Here’s how to export the cert:
The exported .cer file can then be imported or installed on servers or devices to utilize the self-signed certificate for encryption and identification purposes.
Create a Self-Signed Certificate in PowerShell
Self-signed certificates can also be generated using PowerShell on Windows 10. Here are the steps:
$certificate = New-SelfSignedCertificate `
-Subject "CN=SelfSignedCert" `
-CertStoreLocation "Cert:\CurrentUser\My" `
-KeyExportPolicy Exportable `
-KeySpec Signature `
-KeyLength 2048 `
-KeyAlgorithm RSA `
-HashAlgorithm SHA256 `
-Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" `
-NotAfter (Get-Date).AddYears(5) -Verbose
$certificatePath = "C:\Users\username\Desktop\self-signed.cer"
Export-Certificate -Cert $certificate -FilePath $certificatePath
cd C:\Users\username\Desktop
.\Create-Self-SignedCertificate.ps1
The exported .cer file contains the new self-signed certificate and can be installed or distributed as needed.
Install the Self-Signed Certificate
To use a self-signed certificate for server encryption like HTTPS or application authentication, it needs to be installed after export:
Install on Windows Server
Import-Certificate -FilePath C:\path\to\cert.cer -CertStoreLocation Cert:\LocalMachine\My
netsh http add sslcert ipport=0.0.0.0:443 certhash=XXXXXXXXXX appid="{00112233-4455-6677-8899-AABBCCDDEEFF}"
Use the certificate thumbprint for the certhash value.
Install on Windows Client
The self-signed certificate is now trusted at the system level and can be used for client authentication purposes.
Remove or Delete a Self-Signed Certificate
If a self-signed certificate is no longer needed, it can be deleted:
Remove in Certificates Console
Remove in PowerShell
Identify the certificate thumbprint, then run:
Remove-Item Cert:\LocalMachine\My\THUMBPRINT -Force
This will permanently delete the self-signed certificate.
Conclusion
In summary, self-signed certificates are not issued by a certificate authority so they enable encryption without verified trust. While useful for testing and development purposes, self-signed certificates will generate errors on public production websites. On Windows 10, creating your own self-signed certificate is straightforward using either the Certificates console or PowerShell commands. Be sure to export the certificate and install it as a trusted root on systems that need to trust the self-signed cert. Follow the guidelines covered in this article to properly generate, distribute, manage, and delete self-signed certificates on your Windows devices and servers. Used appropriately, self-signed certificates provide a quick way to test and deploy transport layer security.
Why are self-signed certificates considered untrusted?
Self-signed certificates are not issued by a trusted certificate authority that validates the requester’s identity. Anyone can generate a self-signed cert, so they are inherently untrusted until explicitly installed as trusted on a system or device.
Can I use a self-signed certificate for a public production website?
Self-signed certificates are not recommended for public-facing production websites because visitors will receive browser errors about the certificate being untrusted. Public sites should use certificates signed by a trusted certificate authority.
What are some typical uses for a self-signed certificate?
Self-signed certificates are commonly used for testing, development environments, intranets, IoT communications, and anywhere untrusted/insecure connections are acceptable. They are not suitable for public production websites.
What key size should I make a self-signed certificate?
For modern encryption strength, self-signed certificates should be generated with a 2048-bit or higher RSA key size. 1024-bit keys are considered insecure and should not be used.
How do I resolve trust warnings for a self-signed certificate?
Install the self-signed certificate as a trusted root certificate on any device that needs to trust it. On Windows, this means installing it in the Trusted Root Certification Authorities store. On Macs, add it as a trusted root in Keychain Access. On Linux, add it to the appropriate trusted certificates directory. Mobile devices also provide certificate installation options to trust specific self-signed certs.
What is the maximum validity period for a self-signed certificate?
When generating a self-signed certificate in Windows, the maximum validity period is 10 years. However, limitations may vary on other platforms. For better security, most recommendations suggest using shorter validity periods like 1-2 years for self-signed certs.
Can I sign a self-signed certificate with my own intermediates?
No, self-signed certificates are not issued by a root CA, so they cannot be chained to intermediate certificates. A self-signed cert can only ever have a single tier validity coming from its own self-generated private key signature.
Is there a size limit for self-signed certificates?
There is generally no inherent size limit. However, there may be restrictions imposed by the application or system that will be consuming the certificate. Most certificates are well under 5KB. Larger certificates may impact performance.
What characters can I use in the subject name for a self-signed certificate?
RFC5280 recommends using only English upper and lowercase letters, digits, and the hyphen for maximum compatibility in X.509 certificate subjects. Other symbols and special characters can produce issues unless specifically required.