Самоподписанный сертификат ssl как сгенерировать windows


Как создать самоподписанный сертификат в Windows?

Большинству администраторов Windows, знакомых с темой PKI, известна утилита MakeCert.exe, с помощью которой можно создать самоподписанный сертификат. Эта утилита включена в состав Microsoft .NET Framework SDK и Microsoft Windows SDK. В современых версиях Windows 10/8.1 и Windows Server 2016/2012R2 вы можете создать самоподписанный сертификат с помощью PowerShell без использования дополнительных утилит.

New-SelfSignedCertificate: командлет PowerShell для генерации самоподписанного сертификата

Для создания самоподписанного сертификата в PowerShell нужно использовать командлет New-SelfSignedCertificate, входящий в состав модуля PKI (Public Key Infrastructure).

Чтобы вывести список всех доступных командлетов в модуле PKI, выполните команду:

Get-Command -Module PKI

Самоподписанные сертификаты рекомендуется использовать в тестовых целях или для обеспечения сертификатами внутренних интранет служб (IIS, Exchange, Web Application Proxy, LDAPS, ADRMS, DirectAccess и т.п.), в тех случая когда по какой-то причине приобретение сертификата у внешнего провайдера или разворачивание инфраструктуры PKI/CA невозможны.

Совет. Не забывайте также про возможность использования полноценных бесплатных SSL сертификатов от Let’s Encrypt. Пример, как выпустить SSL сертификат Let’s Encrypt и привязать его к сайту IIS.

Для создания сертификата нужно указать значения DnsName (DNS имя сервера, имя может быть произвольным и отличаться от имени localhost) и CertStoreLocation (раздел локального хранилища сертификатов, в который будет помещен сгенерированный сертификат). Командлет можно использовать для создания самоподписанного сертификата в Windows 10 (в нашем примере), Windows 8/8.1 и Windows Server 2019/2016/2012 R2.

Чтобы создать новый SSL сертификат типа SSLServerAuthentication (по умолчанию) для DNS имени test.contoso.com (указывается FQDN имя) и поместить его в список персональных сертификатов компьютера, выполните команду:

New-SelfSignedCertificate -DnsName test.contoso.com -CertStoreLocation cert:\LocalMachine\My

Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
Thumbprint                               Subject
----------                               -------
2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 CN=test.contoso.com

Если вы запустите эту команду в 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 год.

Данная команда создаст новый сертификат и импортирует его в персональное хранилище компьютера. Откройте оснастку certlm.msc и проверьте, что в разделе Personal хранилища сертификатов компьютера появился новый сертификат.

Как вы видите, в свойствах сертификата указано, что данный сертификат может использоваться для аутентификации клиентов (Client Authentication). Также он действителен и для аутентификации сервера (Server Authentication).

С помощью командлета Get-ChildItem можно вывести все параметры созданного сертификата по его отпечатку (Thumbprint):

Get-ChildItem -Path "Cert:\LocalMachine\My" | Where-Object Thumbprint -eq DC1A0FDE0120085A45D8E14F870148D1EBCB82AE | Select-Object *

Microsoft.PowerShell.Security\Certificate::LocalMachine\My\DC1A0FDE0120085A45D8E14F870148D1E
 BCB82AE
PSParentPath : Microsoft.PowerShell.Security\Certificate::LocalMachine\My
PSChildName : DC1A0FDE0120085A45D8E14F870148D1EBCB82AE
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 :
IssuerName : System.Security.Cryptography.X509Certificates.X500DistinguishedName
NotAfter : 30/10/2021 13:10:44
NotBefore : 30/10/2020 11:50:44
HasPrivateKey : True
PrivateKey :
PublicKey : System.Security.Cryptography.X509Certificates.PublicKey
RawData : {48, 130, 3, 45...}
SerialNumber : 165ECC120612668C4D741A28D4BB8203
SubjectName : System.Security.Cryptography.X509Certificates.X500DistinguishedName
SignatureAlgorithm : System.Security.Cryptography.Oid
Thumbprint : DC1A0FDE0120085A45D8E14F870148D1EBCB82AE
Version : 3
Handle : 2834446249312
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

Для экспорта полученного сертификата 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 (пример установки сертификата на компьютеры с помощью групповых политик).

Одной из полезных возможностей командлета 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

Создать самоподписанный сертфикат типа Code Signing для подписывания кода

В PoweShell 3.0 командлет New-SelfSifgnedCertificate позволял генерировать только SSL сертификаты, которые нельзя было использоваться для подписывания кода драйверов и приложений (в отличии сертификатов, генерируемых утилитой MakeCert).

В версии PowerShell 5 новая версия командлета New-SelfSifgnedCertificate теперь может использоваться для выпуска сертификатов типа 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. Такие сертификаты многими браузерами считаются недоверенными, поэтому они могут выдавать предубеждение. Командлет New-SelfSignedCertificate позволяет создать более популырный тип сертификата с помощью алгоритма шифрования SHA-256.

Вы можете привязать самоподписанный сертификат SHA-256, созданный в PowerShell, к сайту IIS. Если вы с помощью PowerShell создали SSL сертификат и поместили его в хранилище сертификатов компьютера, он будет автоматически доступен для сайтов IIS.

Запустите консоль IIS Manager, выберите ваш сайт, затем в настройке Site Binding, выберите созданный вами сертификат и сохраните изменения.

Как выпустить самоподписанный SSL сертификат и заставить ваш браузер доверять ему

Все крупные сайты давно перешли на протокол https. Тенденция продолжается, и многие наши клиенты хотят, чтобы их сайт работал по защищенному протоколу. А если разрабатывается backend для мобильного приложения, то https обязателен. Например, Apple требует, чтобы обмен данными сервера с приложением велся по безопасному протоколу. Это требование введено с конца 2016 года.

На production нет проблем с сертификатами. Обычно хостинг провайдер предоставляет удобный интерфейс для подключения сертификата. Выпуск сертификата тоже дело не сложное. Но во время работы над проектом каждый разработчик должен позаботиться о сертификате сам.
В этой статье я расскажу, как выпустить самоподписанный SSL сертификат и заставить браузер доверять ему.

Чтобы выпустить сертификат для вашего локального домена, понадобится корневой сертификат. На его основе будут выпускаться все остальные сертификаты. Да, для каждого нового top level домена нужно выпускать свой сертификат. Получить корневой сертификат достаточно просто.
Сначала сформируем закрытый ключ:

openssl genrsa -out rootCA.key 2048

Затем сам сертификат:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

Нужно будет ввести страну, город, компанию и т.д. В результате получаем два файла: rootCA.key и rootCA.pem

Переходим к главному, выпуск самоподписанного сертификата. Так же как и в случае с корневым, это две команды. Но параметров у команд будет значительно больше. И нам понадобится вспомогательный конфигурационный файл. Поэтому оформим все это в виде bash скрипта create_certificate_for_domain.sh

Первый параметр обязателен, выведем небольшую инструкцию для пользователя.

if [ -z "$1" ] then echo "Please supply a subdomain to create a certificate for"; echo "e.g. mysite.localhost" exit; fi

Создадим новый приватный ключ, если он не существует или будем использовать существующий:
if [ -f device.key ]; then KEY_OPT="-key" else KEY_OPT="-keyout" fi

Запросим у пользователя название домена. Добавим возможность задания “общего имени” (оно используется при формировании сертификата):
DOMAIN=$1 COMMON_NAME=${2:-$1}

Чтобы не отвечать на вопросы в интерактивном режиме, сформируем строку с ответами. И зададим время действия сертификата:
SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME" NUM_OF_DAYS=999

В переменной SUBJECT перечислены все те же вопросы, который задавались при создании корневого сертификата (страна, город, компания и т.д). Все значение, кроме CN можно поменять на свое усмотрение.

Сформируем csr файл (Certificate Signing Request) на основе ключа. Подробнее о файле запроса сертификата можно почитать в этой статье.

openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr

Формируем файл сертификата. Для этого нам понадобится вспомогательный файл с настройками. В этот файл мы запишем домены, для которых будет валиден сертификат и некоторые другие настройки. Назовем его v3.ext. Обращаю ваше внимание, что это отдельный файл, а не часть bash скрипта.
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = %%DOMAIN%% DNS.2 = *.%%DOMAIN%%

Да, верно, наш сертификат будет валидным для основного домена, а также для всех поддоменов. Сохраняем указанные выше строки в файл v3.ext

Возвращаемся в наш bash скрипт. На основе вспомогательного файла v3.ext создаем временный файл с указанием нашего домена:

cat v3.ext | sed s/%%DOMAIN%%/$COMMON_NAME/g > /tmp/__v3.ext

Выпускаем сертификат:
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext

Переименовываем сертификат и удаляем временный файл:
mv device.csr $DOMAIN.csr cp device.crt $DOMAIN.crt # remove temp file rm -f device.crt;

Скрипт готов. Запускаем его:
./create_certificate_for_domain.sh mysite.localhost

Получаем два файла: mysite.localhost.crt и device.key

Теперь нужно указать web серверу пути к этим файлам. На примере nginx это будет выглядеть так:

Запускаем браузер, открываем https://mysite.localhost и видим:

Браузер не доверяет этому сертификату. Как быть?

Нужно отметить выпущенный нами сертификат как Trusted. На Linux (Ubuntu и, наверное, остальных Debian-based дистрибутивах) это можно сделать через сам браузер. В Mac OS X это можно сделать через приложение Keychain Access. Запускаем приложение и перетаскиваем в окно файл mysite.localhost.crt. Затем открываем добавленный файл и выбираем Always Trust:

Обновляем страницу в браузере и:

Успех! Браузер доверяет нашему сертификату.

Сертификатом можно поделиться с другими разработчиками, чтобы они добавили его к себе. А если вы используете Docker, то сертификат можно сохранить там. Именно так это реализовано на всех наших проектах.

Делитесь в комментариях, используете ли вы https для локальной разработки?

Максим Ковтун,
Руководитель отдела разработки

Создаём самоподписанный ssl сертификат с помощью OpenSSL. » Pechenek.NET

Недавно возникла необходимость создать самоподписанный сертификат. Использовал я для этого утилиту OpenSSL и Linux. Собственно этим и хочу с вами поделиться.

Для начала нам необходима ОС Linux, в принципе данная утилита есть и пот Windows, но так как есть linux пользуюсь им. В ОС необходимо установить пакет OpenSSL. Устанавливаем его следующей командой (если под админом можно без “sudo”):

sudo apt-get install openssl

sudo apt-get install openssl

После установки OpenSSL, создаём папки, в которых будут лежать наши сертификаты и ключи, например так:

mkdir /home/devuser/cert/

mkdir /home/devuser/cert/

Приступаем к созданию самоподписанного ssl сертификата. Выполняем команду:

sudo openssl req -x509 -newkey rsa:2048 -days 365 -keyout /home/devuser/cert/mykey.key -out /home/devuser/cert/cert.crt

sudo openssl req -x509 -newkey rsa:2048 -days 365 -keyout  /home/devuser/cert/mykey.key -out /home/devuser/cert/cert.crt

Описание параметров:

  • req – это генерация запросов на подпись сертификата, но если мы задаём ключ “-x509”, это означает, что мы генерируем самоподписанный сертификат.
  • -newkey rsa:2048 –  если у нас ещё нет ключа, мы добавляем данный параметр, что бы ключ был создан автоматически. Указываем параметры ключа.
  • -days 365 – указываем количество дней,  в течении которых будет действовать данный сертификат.
  • -keyout  /home/devuser/cert/mykey.key – параметр нужен, так как мы указали newkey и генерируем новый ключ. Указываем в какой фал положим ключ.
  • -out /home/devuser/cert/cert.crt – сюда положим наш сертификат.

OpenSSL создаём сертификат

Дальше нас попросят ввести пароль к ключу. Вводим пароль, не меньше 4 символов, и повторяем ввод пароля. Затем нас попросят ввести данные о сертификате (информацию о серверной стороне). Если какие-то данные Вам не нужны можете просто ставить точку (“.”).

Давайте рассмотрим по порядку, что нам предлагают ввести:

  • Country Name (2 letter code) [AU]: 77 – страна/регион
  • State or Province Name (full name) [Some-State]:. – штат (у нас их нет, поэтому пропускаем)
  • Locality Name (eg, city) []:Moscow – город
  • Organization Name (eg, company) [Internet Widgits Pty Ltd]:Pechenek.NET – имя организации
  • Organizational Unit Name (eg, section) []:. – подразделение организации, пропускаем.
  • Common Name (e.g. server FQDN or YOUR name) []:Pechenek.net – Обязательное поле, это имя по которому к серверу будут обращаться.
  • Email Address []:[email protected] – адрес электронной почты, тоже можно пропустить.

В итоге мы получили два файла, ключ и сертификат. Ключ-это секретный ключ, публичный ключ находиться в теле самого сертификата. Сам сертификат выглядит так:

OpenSSL самоподписанный сертификат

Убираем пароль с секретного ключа.

Ещё можно немного модифицировать наш скрипт, например убрать пароль с секретного ключа, это в большинстве случаев не удобно, если сервис стартует в автоматическом режиме, в тот момент когда ему необходимо будет получить доступ к секретному ключу, нужно будет вручную ввести пароль.

Добавляем параметр “-nodes”, в результате секретный ключ не будет зашифрован паролем.

sudo openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout /home/devuser/cert/mykey.key -out /home/devuser/cert/cert.crt

sudo openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout /home/devuser/cert/mykey.key -out /home/devuser/cert/cert.crt

Так же можно ещё добавить параметр “-subj” – этот тот кому принадлежит сертификат, то что мы вводили в интерактивном режиме (название организации, мыло и так далее). Можно эти параметры сразу указать в скрипте. Например так:

sudo openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout /home/devuser/cert/mykey.key -out /home/devuser/cert/cert.crt -subj /C=/ST=/L=/O=/CN=pechenek.net

sudo openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout /home/devuser/cert/mykey.key -out /home/devuser/cert/cert.crt -subj /C=/ST=/L=/O=/CN=pechenek.net

В примере выше пропускаем все поля, кроме CN (Common Name).

Для просмотра сертификата можно воспользоваться этой командой:

openssl x509 -noout -text -in /home/devuser/cert/cert.crt

openssl x509 -noout -text -in /home/devuser/cert/cert.crt

  • -noout – выводим данные не в файл а в консоль.
  • -text – выводим данные в текстовом виде.
  • -in /home/devuser/cert/cert.crt – откуда берём сертификат

На этом всё. Не забывайте пользоваться кнопками «Поделиться в соц. сетях», так же подписываться на наш Канал и группы в ВК, Twitter, Facebook.

Всем удачи и море печенек!

Как создать самоподписанный сертификат в Windows | Windows для системных администраторов

Большинству администраторов Windows, знакомых с темой PKI, известна утилита MakeCert.exe, с помощью которой можно создать самоподписанный сертификат. Эта утилита включена в состав Microsoft .NET Framework SDK и Microsoft Windows SDK. В Windows 8 и Windows Server 2012 появилась встроенная возможность создания самоподписанного сертификата средствами PowerShell 3.0 и выше без использования специальных утилит.

Использование командлета New-SelfSignedCertificate для создания сертфикатов

Для создания самоподписанного сертификата в PowerShell предлагается использовать командлет New-SelfSignedCertificate, входящий в состав модуля PoSh с именем PKI (Public Key Infrastructure).

Чтобы вывести список всех доступных командлетов в модуле PKI, выполните команду:

Get-Command -Module PKI

Самоподписанные сертификаты рекомендуется использовать в тестовых целях или для обеспечения сертификатами внутренних интранет служб (IIS, Exchange, Web Application Proxy, LDAPS, ADRMS, DirectAccess и т.п.), в тех случая когда по какой-то причине приобретение сертификата у внешнего провайдера или разворачивание инфраструктуры PKI/CA невозможны.

Совет. Не забывайте также про возможность использования полноценных бесплатных SSL сертификатов от Let’s Encrypt. Пример, как выпустить SSL сертификат Let’s Encrypt и привязать его к сайту IIS.

Для создания сертификата нужно указать значения DnsName (DNS имя сервера, имя может быть произвольным и отличаться от имени localhost) и CertStoreLocation (раздел локального хранилища сертификатов, в который будет помещен сгенерированный сертификат). Командлет можно использовать для создания самоподписанного сертификата в Windows 10 (в нашем примере), Windows 8/8.1 и Windows Server 2016/2012/2012 R2.

Чтобы создать сертификат для DNS имени test.contoso.com и поместить его в список персональных сертификатов компьютера, выполним команду:

New-SelfSignedCertificate -DnsName test.contoso.com -CertStoreLocation cert:\LocalMachine\My

Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
Thumbprint                               Subject
----------                               -------
2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 CN=test.contoso.com

По-умолчанию генерируется самоподписанный сертификат со следующим настройками:

  • Криптографический алгоритм: RSA;
  • Размер ключа: 2048 бит;
  • Допустимые вариантов использования ключа:  Client Authentication и Server Authentication;
  • Сертификат может использоваться для: Digital Signature, Key Encipherment ;
  • Срок действия сертификата: 1 год.

Данная команда создаст новый сертификат и импортирует его в персональное хранилище компьютера. Открыв оснастку certlm.msc, проверим, что в разделе Personal хранилища сертификатов компьютера появился новый сертификат.

Как вы видите, в свойствах сертификата указано, что данный сертификат может использоваться для аутентификации клиентов (Client Authentication), однако он действителен и для аутентификации сервера (Server Authentication).

Примечание. Срок действия такого самоподписанного сертификата ограничивается 1 годом с момента его создания. Чтобы выпустить сертификат на 3 года, выполните следующие команды:

$todaydate = Get-Date
$add3year = $todaydate.AddYears(3)
New-SelfSignedCertificate -dnsname test.contoso.com -notafter $add3year -CertStoreLocation cert:\LocalMachine\My

Чтобы экспортировать полученный сертификат c закрытым ключом в pfx файл, защищенный паролем, нам понадобится его отпечаток (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

Полученный открытый ключ или сам файл сертификата можно установить на веб-сервер или клиентах домена с помощью GPO (пример установки сертификата на ПК с помощью групповых политик).

Одной из полезных возможностей командлета New-SelfSignedCertificate является возможность создать сертификат с несколькими различными именами Subject Alternative Names (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

Также можно выписать сертификат для всего пространства имен в домене, для этого в качестве имени сервера указывается *.contoso.com.

New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname *.contoso.com

Создаем самоподписанный сертфикат типа Code Signing для подписывания кода

В PoweShell 3.0 командлет New-SelfSifgnedCertificate генерировал только SSL сертификаты, которые нельзя было использоваться для подписывания кода драйверов и приложений (в отличии сертификатов, генерируемых утилитой MakeCert).

В PowerShell 5 новая версия командлета New-SelfSifgnedCertificate теперь может использоваться для выпуска сертификатов типа 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

SSL cертификаты используются для шифрования информации, передаваемой через сети общего доступа. Сертификаты применяют при построении почтовой системы, а также (значительно чаще) устанавливают на домены для получения доступа к сайту через интернет браузер по порту 443. Только посредством https соединения осуществляются любые денежные операции на сайтах систем онлайн торговли.

SSL cертификаты и ключи можно генерировать на любых Linux серверах, подписывать из должны сертфикационные центры, также сертфикаты можно подписывать самостоятельно. Браузер при обращении к сайту, работающему с самоподписанным SSL сертификатом будет выдавать предупреждение о невозможности убедиться в защищенности соединения, однако часто такой вариант также находит применение. Рассмотрим как сгенерировать самоподписанный сертификат SSL.

Для того чтобы сгенерировать самоподписанный сертификат потребуется установить на сервер пакет openssl (часто он установлен по умолчанию)

apt-get install openssl

 

Файлы приватного ключа и цепочки сертификатов генерируются одной командой

openssl req -new -x509 -days 365 -sha256 -newkey rsa:2048 -nodes -out example.pem -keyout example.key

 

После ее выполнения возникает ряд диалогов, в которых нужно указать данные организации и домен для которого выпускается сертификат

 

Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:some state
Locality Name (eg, city) []:mycity
Organization Name (eg, company) [Internet Widgits Pty Ltd]:company
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:[email protected]com

 

Результатом будут создавшиеся файлы example.pem и example.key

Обычно этого достаточно и файлы уже можно использовать

Путь к ним теперь необходимо будет указывать при настройке различного ПО, использующего сертификаты: веб- (Apache, Nginx) и почтовых серверов (Postfix, Exim, Dovecot).

 

Генерация самоподписанного сертификата в несколько шагов

Далее описан тот же процесс, что и ранее, но не в одной команде, а по шагам.

Создаем ключ

openssl genrsa -des3 -out example.key 1024

 

Создаем запрос на сертификат на основе ключа

openssl req -new -key example.key -out cert.csr

Появится файл example.src

 

 

Парольная фраза при использовании приватного ключа

Каждый раз когда мы производим какие-либо операции с приватным ключом система запрашивает парольную фразу. Чтобы не вводить ее каждый раз производим следующие действия. Генерируем ключ .nopass и заменяем использовавшийся ранее ключ.

openssl rsa -in example.key -out example.key.nopass

mv example.key.nopass example.key

После этого парольная фраза уже не понадобится

 

Генерируем сертификат

openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt

Читайте также про то, как установить SSL сертификат на Apache и на Nginx

Генерация самоподписанного тестового сертификата для веб-сервера Mobile SMARTS - Клеверенс

Последние изменения: 30.01.2018

Выберите уточнение:

Для получения самоподписанного тестового сертификата в системах Windows® 8 и Windows Server® 2012 легче всего воспользоваться Windows PowerShell 3.0. 

Установка Windows PowerShell.

Для запуска консоли Windows PowerShell, выполните: Win+R, “PowerShell_ISE.exe”, “Выполнить”, откроется окно консоли  Windows PowerShell, запускать консоль необходимо с правами локального администратора, см. рисунок:


Далее, в окне консоли  Windows PowerShell необходимо выполнить командлет “New-SelfSignedCertificate”, для этого вводим команду:

New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My

Данная команда запускает командлет, который производит генерацию самоподписанного сертификата для DNS имени localhost, и помещает его в раздел “Личные” локального хранилища сертификатов, иногда по неустановленным причинам сертификат может быть помещен в другой раздел локального хранилища, например “Промежуточные центры сертификации”. 

При успешном выполнении командлета в окне консоли появится информация, содержащая слепок сгенерированного сертификата.



Далее необходимо открыть оснастку “Сертификаты” с правами локального администратора, для этого запустите соответствующий файл “certmgr.msc” и произведите поиск сгенерированного сертификата по его DNS имени “localhost”.


Далее, найденный сертификат необходимо переместить в раздел “Доверенные корневые центры сертификации\Сертификаты”.


Если описанный способ не сработал, попробуйте альтернативные способы получения сертификата:

Создание самоподписанного сертификата SSL

Последнее обновление 27 мая 2020 г.

При использовании функции конечной точки SSL для непроизводственных приложений вы можете избежать затрат, связанных с сертификатом SSL, используя самоподписанный сертификат SSL. Хотя в сертификате реализовано полное шифрование, посетители вашего сайта увидят предупреждение браузера, указывающее, что этому сертификату нельзя доверять.

Вы можете пропустить это предупреждение, чтобы просмотреть зашифрованный сайт.

Предварительные требования

Библиотека openssl требуется для создания вашего собственного сертификата. Выполните следующую команду в своей локальной среде, чтобы убедиться, что у вас уже установлен openssl.

  $ который openssl / usr / bin / openssl  

Если команда и не возвращает путь, вам нужно будет установить openssl самостоятельно:

Сгенерировать закрытый ключ и запрос на подпись сертификата

Для создания сертификата SSL необходимы закрытый ключ и запрос на подпись сертификата.Их можно сгенерировать с помощью нескольких простых команд.

Когда команда openssl req запрашивает «пароль вызова», просто нажмите return, оставив пароль пустым. Этот пароль используется центрами сертификации для аутентификации владельца сертификата, когда они хотят отозвать свой сертификат. Поскольку это самозаверяющий сертификат, отозвать его через CRL (список отзыва сертификатов) невозможно.

  $ openssl genrsa -des3 -passout pass: x -out server.пароль 2048 ... $ openssl rsa -passin pass: x -in server.pass.key -out server.key запись ключа RSA $ rm server.pass.key $ openssl req -new -key server.key -out server.csr ... Название страны (двухбуквенный код) [AU]: США Название штата или провинции (полное название) [Some-State]: Калифорния ... Пароль вызова []: ...  

Создать сертификат SSL

Самоподписанный сертификат SSL генерируется из закрытого ключа server.key и файлов server.csr .

  $ openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt  

Файл server.crt - это сертификат вашего сайта, подходящий для использования с надстройкой SSL Heroku вместе с закрытым ключом server.key .

.

Создание самозаверяющего сертификата с помощью настраиваемого корневого ЦС - шлюз приложений Azure

  • 6 минут на чтение

В этой статье

SKU шлюза приложений v2 вводит использование доверенных корневых сертификатов для поддержки внутренних серверов. Это удаляет сертификаты проверки подлинности, которые требовались в SKU v1.Корневой сертификат - это корневой сертификат в формате X.509 (.CER) в кодировке Base-64, полученный от внутреннего сервера сертификатов. Он идентифицирует корневой центр сертификации (CA), выдавший сертификат сервера, и сертификат сервера затем используется для связи TLS / SSL.

Application Gateway по умолчанию доверяет сертификату вашего веб-сайта, если он подписан известным центром сертификации (например, GoDaddy или DigiCert). В этом случае вам не нужно явно загружать корневой сертификат.Дополнительные сведения см. В разделе Обзор завершения TLS и сквозного TLS со шлюзом приложений. Однако, если у вас есть среда разработки / тестирования и вы не хотите приобретать подтвержденный сертификат, подписанный ЦС, вы можете создать свой собственный ЦС и создать на нем самозаверяющий сертификат.

Примечание

Самозаверяющие сертификаты по умолчанию не являются доверенными, и их трудно поддерживать. Кроме того, они могут использовать устаревшие наборы хешей и шифров, которые могут быть не надежными. Для большей безопасности приобретите сертификат, подписанный известным центром сертификации.

Из этой статьи вы узнаете, как:

  • Создайте свой собственный центр сертификации
  • Создайте самозаверяющий сертификат, подписанный вашим индивидуальным CA
  • Загрузить самозаверяющий корневой сертификат на шлюз приложений для аутентификации внутреннего сервера

Предварительные требования

  • OpenSSL на компьютере под управлением Windows или Linux

    Хотя для управления сертификатами могут быть доступны и другие инструменты, в этом руководстве используется OpenSSL.Вы можете найти OpenSSL в комплекте со многими дистрибутивами Linux, такими как Ubuntu.

  • Веб-сервер

    Например, Apache, IIS или NGINX для проверки сертификатов.

  • Шлюз приложений v2 SKU

    Если у вас нет существующего шлюза приложений, см. Краткое руководство: прямой веб-трафик с помощью шлюза приложений Azure - портал Azure.

Создать сертификат корневого ЦС

Создайте сертификат корневого ЦС с помощью OpenSSL.

Создайте корневой ключ

  1. Войдите в свой компьютер, на котором установлен OpenSSL, и выполните следующую команду. Это создает ключ, защищенный паролем.

      openssl ecparam -out contoso.key -name prime256v1 -genkey  
  2. По запросу введите надежный пароль. Например, не менее девяти символов, используя верхний и нижний регистр, цифры и символы.

Создайте корневой сертификат и подпишите его самостоятельно

  1. Используйте следующие команды для создания csr и сертификата.

      openssl req -new -sha256 -key contoso.key -out contoso.csr openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt  

    Предыдущие команды создают корневой сертификат. Вы будете использовать это для подписания сертификата сервера.

  2. При появлении запроса введите пароль для корневого ключа и организационную информацию для настраиваемого центра сертификации, такую ​​как страна / регион, штат, организация, подразделение и полное доменное имя (это домен эмитента).

Создать сертификат сервера

Затем вы создадите сертификат сервера с помощью OpenSSL.

Создайте ключ сертификата

Используйте следующую команду, чтобы сгенерировать ключ для сертификата сервера.

  openssl ecparam -out fabrikam.key -name prime256v1 -genkey  

Создать CSR (запрос на подпись сертификата)

CSR - это открытый ключ, который выдается CA при запросе сертификата.ЦС выдает сертификат для этого конкретного запроса.

Примечание

CN (общее имя) сертификата сервера должно отличаться от домена эмитента. Например, в этом случае CN для эмитента - www.contoso.com , а CN сертификата сервера - www.fabrikam.com .

  1. Используйте следующую команду для создания CSR:

      openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr  
  2. При появлении запроса введите пароль для корневого ключа и информацию об организации для настраиваемого центра сертификации: страна / регион, штат, организация, подразделение и полное доменное имя.Это домен веб-сайта, и он должен отличаться от домена эмитента.

Создайте сертификат с CSR и ключом и подпишите его корневым ключом CA

  1. Используйте следующую команду для создания сертификата:

      openssl x509 -req -in fabrikam.csr -CA contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256  

Проверить вновь созданный сертификат

  1. Используйте следующую команду для печати вывода файла CRT и проверки его содержимого:

      openssl x509 - в фабриках.crt -text -noout  

  2. Проверьте файлы в вашем каталоге и убедитесь, что у вас есть следующие файлы:

    • contoso.crt
    • contoso.key
    • fabrikam.crt
    • фабрикам. ключ

Настройте сертификат в настройках TLS вашего веб-сервера

На своем веб-сервере настройте TLS с помощью файлов fabrikam.crt и fabrikam.key. Если ваш веб-сервер не может принимать два файла, вы можете объединить их в один.pem или .pfx с помощью команд OpenSSL.

IIS

Инструкции по импорту сертификатов и загрузке их в качестве сертификатов сервера в IIS см. В разделе КАК: установить импортированные сертификаты на веб-сервер в Windows Server 2003.

Инструкции по привязке TLS см. В разделе Как настроить SSL в IIS 7.

Apache

Следующая конфигурация представляет собой пример виртуального хоста, настроенного для SSL в Apache:

   DocumentRoot / var / www / fabrikam Имя сервера www.fabrikam.com SSLEngine включен SSLCertificateFile /home/user/fabrikam.crt SSLCertificateKeyFile /home/user/fabrikam.key   

NGINX

Следующая конфигурация является примером серверного блока NGINX с конфигурацией TLS:

Доступ к серверу для проверки конфигурации

  1. Добавьте корневой сертификат в доверенное корневое хранилище вашего компьютера. Когда вы заходите на веб-сайт, убедитесь, что вся цепочка сертификатов видна в браузере.

    Примечание

    Предполагается, что DNS настроен так, чтобы указывать имя веб-сервера (в данном примере www.fabrikam.com) на IP-адрес вашего веб-сервера. Если нет, вы можете отредактировать файл hosts, чтобы разрешить имя.

  2. Перейдите на свой веб-сайт и щелкните значок замка в адресном поле браузера, чтобы проверить информацию о сайте и сертификате.

Проверьте конфигурацию с OpenSSL

Или вы можете использовать OpenSSL для проверки сертификата.

  openssl s_client -connect localhost: 443 -servername www.fabrikam.com -showcerts  

Загрузите корневой сертификат в настройки HTTP шлюза приложений

Чтобы загрузить сертификат в шлюз приложений, необходимо экспортировать сертификат .crt в формат .cer с кодировкой Base-64. Поскольку .crt уже содержит открытый ключ в формате base-64, просто переименуйте расширение файла с .crt на .cer.

Портал Azure

Чтобы загрузить доверенный корневой сертификат с портала, выберите Параметры HTTP и выберите протокол HTTPS .

Azure PowerShell

Или вы можете использовать Azure CLI или Azure PowerShell для загрузки корневого сертификата. Следующий код представляет собой образец Azure PowerShell.

Примечание

В следующем примере к шлюзу приложений добавляется доверенный корневой сертификат, создается новый параметр HTTP и добавляется новое правило, предполагая, что внутренний пул и прослушиватель уже существуют.

  ## Добавить доверенный корневой сертификат в шлюз приложений $ gw = Get-AzApplicationGateway -Name appgwv2 -ResourceGroupName rgOne Add-AzApplicationGatewayTrustedRootCertificate ` -ApplicationGateway $ gw ` -Имя CustomCARoot ` -CertificateFile "C: \ Users \ surmb \ Downloads \ contoso.cer " $ trustroot = Get-AzApplicationGatewayTrustedRootCertificate ` -Имя CustomCARoot ` -ApplicationGateway $ gw ## Получить слушателя, бэкэнд-пул и зонд $ listener = Get-AzApplicationGatewayHttpListener ` -Название basichttps ` -ApplicationGateway $ gw $ bepool = Get-AzApplicationGatewayBackendAddressPool ` -Название testbackendpool ` -ApplicationGateway $ gw Добавить AzApplicationGatewayProbeConfig ` -ApplicationGateway $ gw ` -Название testprobe ` -Протокол Https ` -HostName »www.fabrikam.com "` -Путь "/" ` -Интервал 15` -Тайм-аут 20 минут -UnhealthyThreshold 3 $ probe = Get-AzApplicationGatewayProbeConfig ` -Название testprobe ` -ApplicationGateway $ gw ## Добавьте конфигурацию в настройку HTTP и не забудьте указать поле "hostname" ## к доменному имени сертификата сервера, так как оно будет установлено как заголовок SNI и ## будет использоваться для проверки сертификата внутреннего сервера. Обратите внимание, что рукопожатие TLS будет ## в противном случае произойдет сбой, что может привести к тому, что внутренние серверы будут сочтены зондами неисправными. Добавить AzApplicationGatewayBackendHttpSettings ` -ApplicationGateway $ gw ` -Название testbackend ` -Порт 443` -Протокол Https ` -Probe $ probe ` -TrustedRootCertificate $ trustroot ` -CookieBasedAffinity Disabled ` -RequestTimeout 20` -HostName www.fabrikam.com ## Получите конфигурацию и обновите шлюз приложений $ backendhttp = Get-AzApplicationGatewayBackendHttpSettings ` -Название testbackend ` -ApplicationGateway $ gw Добавить AzApplicationGatewayRequestRoutingRule ` -ApplicationGateway $ gw ` -Name testrule ` -RuleType Basic ` -BackendHttpSettings $ backendhttp ` -HttpListener $ слушатель ` -BackendAddressPool $ bepool Set-AzApplicationGateway -ApplicationGateway $ gw  

Проверить работоспособность серверной части шлюза приложений

  1. Щелкните представление Backend Health своего шлюза приложений, чтобы проверить работоспособность зонда.
  2. Вы должны увидеть, что статус Исправен для зонда HTTPS.

Следующие шаги

Чтобы узнать больше о SSL \ TLS в шлюзе приложений, см. Обзор завершения TLS и сквозного TLS со шлюзом приложений.

.

Генератор самоподписанных сертификатов

Самозаверяющие ssl-сертификаты могут использоваться для настройки временных ssl-серверов. Вы можете использовать его для серверов тестирования и разработки, где безопасность не имеет большого значения. Используйте форму ниже, чтобы сгенерировать самоподписанный сертификат и ключ ssl.

О сертификатах SSL

Сертификаты SSL

необходимы для работы веб-сайтов с использованием протокола HTTPS. Для профессиональных веб-сайтов вы обычно покупаете такой сертификат у Verisign, Thawte или любого другого поставщика сертификатов ssl.SSL-сертификаты используют цепочку доверия, где каждый сертификат подписан (доверяет) более высоким и более надежным сертификатом. На вершине цепочки доверия находятся корневые сертификаты, принадлежащие Verisign и другим. Эти сертификаты обычно поставляются с вашей операционной системой или веб-браузером.

В Internet Explorer и Firefox

Когда вы посещаете веб-сайт по протоколу HTTPS, ваш веб-браузер получает сертификат ssl для веб-сайта. Он проверит содержимое сертификата, чтобы убедиться, что он действительно действителен для доменного имени, которое вы пытаетесь посетить.После этого он проверит цепочку доверия. Он посмотрит, кто подписал сертификат. Если этот сертификат является корневым, он будет сравнивать его с сертификатами, поставляемыми с операционной системой. Если это не корневой сертификат, он поднимется по цепочке доверия еще на один уровень.

Самоподписанные сертификаты

При использовании самоподписанного сертификата цепочка доверия отсутствует. Сертификат подписал сам. Затем веб-браузер выдаст предупреждение о том, что сертификат веб-сайта не может быть проверен.Таким образом, вы не должны использовать самозаверяющие сертификаты для профессионального использования, поскольку посетители не будут доверять безопасности вашего веб-сайта.

Покупка сертификата

Настоящий сертификат безопаснее самоподписанного. Если вы хотите купить настоящий сертификат SSL, нажмите здесь.

.

Как создать самозаверяющий сертификат с помощью PowerShell - статьи TechNet - США (английский)

Может наступить время, когда сертификат потребуется для целей тестирования, а центр сертификации (ЦС) будет недоступен. Пример сценария ниже предоставляет следующее:

- Самоподписанные сертификаты в личном хранилище локального компьютера
-2048 предоставленных закрытых ключей, помеченных как экспортируемые
-Возможность генерировать сразу несколько сертификатов
-Возможность выбора темы
-Возможность выбора из пяти идентификаторов объектов (OID) расширенного использования ключа (EKU)
Аутентификация сервера
Аутентификация клиента
Аутентификация смарт-карты
Шифрованная файловая система
Подпись кода

Образец можно легко изменить, указав другие свойства закрытого ключа и объекта сертификата по выбору.

Пример кода Powershell

Примечание. Этот образец сценария предоставляется КАК ЕСТЬ, без каких-либо гарантий и прав.

#SCRIPT SAMPLE TITLE - создание самоподписанных сертификатов

# АВТОР - Адам Конкл - Microsoft Corporation

№ ВЕРСИЯ - 1.1

$ ErrorActionPreference = "SilentlyContinue"

#write header

Write-Host "` n ПРЕДУПРЕЖДЕНИЕ. Этот образец сценария предоставляется как есть, без каких-либо гарантий и прав."-ForegroundColor Желтый

Write-Host "` n Этот пример сценария будет генерировать самозаверяющие сертификаты с закрытым ключом "

Write-Host «в хранилище личных сертификатов локального компьютера».

# узнайте, сколько сертификатов они хотят подписать самостоятельно

[int] $ Iterations = Read-Host "` n Сколько сертификатов вы хотите сгенерировать? "

$ ContextAnswer = Read-Host "` n Хранить сертификаты в хранилище пользователя или компьютера? (U / C) "

Если ($ ContextAnswer -eq "U")

{

$ machineContext = 0

$ initContext = 1

}

ElseIF ($ ContextAnswer -eq "C")

{

$ machineContext = 1

$ initContext = 2

}

Остальное

{

Write-Host "n Неверный выбор.Exiting`n`n -ForegroundColor Красный

Выход

}

Для ($ Count = 1; $ Count -le $ Iterations; $ Count ++)

{

$ Subject = Read-Host "` n Введите тему для сертификата `# $ Count"

# Создать сертификат на локальном компьютере Мой магазин

$ name = new-object -com "X509Enrollment.CX500DistinguishedName.1 "

$ name.Encode ("CN = $ Subject", 0)

$ key = new-object -com "X509Enrollment.CX509PrivateKey.1"

$ ключ.ProviderName = "Поставщик криптографии Microsoft RSA SChannel"

$ key.KeySpec = 1

$ ключ. Длина = 2048

$ ключ.SecurityDescriptor = "D: PAI (A ;; 0xd01f01ff ;;; SY) (A ;; 0xd01f01ff ;;; BA) (A ;; 0x80120089 ;;; NS)"

$ key.MachineContext = $ machineContext

$ ключ.ExportPolicy = 1

$ ключ.Создайте()

$ ekuoids = new-object -com "X509Enrollment.CObjectIds.1"

$ Нет ответа Да = $ true

Пока ($ Нет ответа Да)

{

Write-Host "` n Add Enhanced Key Usage `(EKU`), ответив Да / Нет на следующее:"

$ AddServerAuth = Read-Host "Проверка подлинности сервера?"

$ AddClientAuth = Read-Host "Проверка подлинности клиента?"

$ AddSmartCardAuth = Read-Host "Аутентификация смарт-карты?"

$ AddEFS = Read-Host "EFS?"

$ AddCodeSigning = Read-Host "Подпись кода?"

Если (($ AddServerAuth -eq "Y") -or ($ AddClientAuth -eq "Y") -or ($ AddSmartCardAuth -eq "Y") -or ($ AddEFS -eq "Y") -or ($ AddCodeSigning -eq "Y"))

{

$ Нет ответа Да = $ false

}

Если ($ Нет ответа Да)

{

Write-Host "` n Вы должны выбрать по крайней мере одно EKU для сертификата `# $ Count."

}

Если ($ AddServerAuth -eq "Y")

{

$ serverauthoid = новый-объект -com "X509Enrollment.CObjectId.1 "

$ serverauthoid.InitializeFromValue ("1.3.6.1.5.5.7.3.1")

$ ekuoids.add ($ serverauthoid)

}

Если ($ AddClientAuth -eq "Y")

{

$ clientauthoid = new-object -com "X509Enrollment.CObjectId.1 "

$ clientauthoid.InitializeFromValue ("1.3.6.1.5.5.7.3.2")

$ ekuoids.add ($ clientauthoid)

}

Если ($ AddSmartCardAuth -eq "Y")

{

$ smartcardoid = new-object -com "X509Enrollment.CObjectId.1 "

$ smartcardoid.InitializeFromValue ("1.3.6.1.4.1.311.20.2.2")

$ ekuoids.add ($ smartcardoid)

}

Если ($ AddEFS -eq "Y")

{

$ efsoid = new-object -com "X509Enrollment.CObjectId.1 "

$ efsoid.InitializeFromValue ("1.3.6.1.4.1.311.10.3.4")

$ ekuoids.add ($ efsoid)

}

Если ($ AddCodeSigning -eq "Y")

{

$ codeigningoid = новый-объект -com "X509Enrollment.CObjectId.1 "

$ codeigningoid.InitializeFromValue ("1.3.6.1.5.5.7.3.3")

$ ekuoids.add ($ codeigningoid)

}

}

$ ekuext = new-object -com "X509Enrollment.CX509ExtensionEnhancedKeyUsage.1 "

$ ekuext.InitializeEncode ($ ekuoids)

$ cert = new-object -com "X509Enrollment.CX509CertificateRequestCertificate.1"

$ серт.InitializeFromPrivateKey ($ initContext, $ key, "")

$ cert.Subject = $ name

$ cert.Issuer = $ cert.Subject

$ серт.NotBefore = дата получения

$ cert.NotAfter = $ cert.NotBefore.AddDays (1825)

$ cert.X509Extensions.Add ($ ekuext)

$ серт.Кодировать ()

$ enrollment = new-object -com "X509Enrollment.CX509Enrollment.1"

$ enrollment.InitializeFromRequest ($ cert)

$ certdata = $ enrollment.CreateRequest (0)

$ enrollment.InstallResponse (2, $ certdata, 0, "")

}

Write-Host "` n`tFinished`n "-ForegroundColor Green

#################################

.

Как создать самоподписанный сертификат SSL для Nginx в Ubuntu 18.04

× Содержание

× Поделиться этим учебником

Куда бы вы хотели этим поделиться?

  • Twitter
  • Reddit
  • Хакерские новости
  • Facebook

Поделиться ссылкой

Ссылка на руководство

× Поделиться этим учебником

Куда бы вы хотели этим поделиться?

  • Twitter
  • Reddit
.

Как создать самоподписанный SSL-сертификат для Nginx в Ubuntu 16.04

× Содержание

× Поделиться этим учебником

Куда бы вы хотели этим поделиться?

  • Twitter
  • Reddit
  • Хакерские новости
  • Facebook

Поделиться ссылкой

Ссылка на руководство

× Поделиться этим учебником

Куда бы вы хотели этим поделиться?

  • Twitter
.

Смотрите также