Следующая команда описывает создание cer файла Windows (т.е. Сертификата от надежного поставщика).
Проблема заключается в том, что при создании приложения в Visual Studio 2017 оно позволяет только через файл package.windows10.appxmanifest файл pfx. при обновлении ссылки на эту командную строку он не создает pvk файл, поэтому нужно добавить
MakeCert -r -pe -ss PrivateCertStore -n «CN=Contoso.com(Test)» testcert.cer
дополнительные параметры командной строки, такие как /sv SubjectKeyFile, которые будут создавать результирующий файл pvk.
Однако даже используя эту ссылку командной строки:
MakeCert -r -pe -ss PrivateCertStore -n «CN=Contoso.com(Test)» -sv testcert.pvk testcert.cer
В результате имплантации файла сертификата в Visual Studio возникает эта ошибка:
Разработчику манифеста не удалось импортировать сертификат.
Выбранный вами сертификат недействителен для подписания, поскольку срок его действия истек или возникла другая проблема. Для получения дополнительной информации см. Http://go.microsoft.com/fwlink/?LinkID=241478.
Я иду по ссылке и ничего не объясняет на самом деле, что происходит. Один человек комментирует, чтобы создать временный, который работает, но это неспецифический тестовый сертификат, который длится всего год.
Как сделать Сертификат в онлайн сервиса Canva (Канва)
Есть ли лучший способ создать скрипт с makecert? Как мне узнать, правильно ли в конечном итоге создается сертификат или нет? Дополнительная документация будет полезна, но я не нашел ничего другого.
ОТВЕТЫ
Ответ 1
Исследуя сеть, я нашел много таких ответов в самых разных местах, например, вопросы, ответы в комментариях, YouTube и т.д. Я решил поместить все это в удобное и аккуратное место, чтобы каждый мог найти и изучить.
Во-первых, нужно спросить себя, для чего они используют приложение? Будет ли приложение загружено в Microsoft Store или предназначено только для внутреннего использования.
В любом случае вы захотите отладить и разработать приложение. Отладка не требует установки сертификата, поэтому в этом смысле мы в безопасности.
Если вы используете приложение для своей организации или просто на локальном компьютере, вам понадобится доверенный сертификат.
Этот сертификат может существовать в нескольких различных сценариях.
- Вам нужен самозаверяющий сертификат или
- Вам нужен выданный сертификат от центра сертификации CA, т.е. вашего предприятия или организации?
Я пойду по обоим сценариям. В любом случае протокол makecert устарел Заметки об устаревании makecert
Сценарий 1. Если вам нужен самозаверяющий сертификат, выполните следующие действия.
- Перейдите на powershell и используйте командлет New-SelfSignedCertificate pkiclient. что позволит вам создать комбинацию .cer и соответствующий закрытый ключ + открытый сертификат =.pfx, если вы создадите для сертификата + закрытый ключ. И вам нужно иметь закрытый ключ, т.е..pfx, чтобы связать и упаковать ваше приложение с Visual Studio и установить его в локальное хранилище приложений Windows (не путать с магазином Microsoft.)
Вот ссылки, по которым нужно следовать *** Прежде чем создавать сертификат, обязательно прочитайте 1А:
Урок в Photoshop. Как создать сертификат в Photoshop/ как сделать сертификат за 10 минут самим!
1А. *** Когда вы создаете New-SelfSignedCertificate, вы должны понимать, что сертификат должен быть создан очень специфическим способом. Это для самоподписанного или выданного СА сертификата.
В частности, сертификат должен обладать 2 свойствами
а). Должно быть расширение Basic Constraints, установленное в Subject Type = End Entity. Простыми словами это говорит о том, что. Когда этот сертификат выдается вам, вы не можете сделать так, чтобы сертификат был последующим центром сертификации с возможностью выдавать больше сертификатов. Другими словами. Это конец строки сертификата.
б). Значение расширения Enhanced Key Usage (EKU) установлено на подпись кода. Это предотвращает использование сертификата для каких-либо целей, кроме его предназначения. Что означает, что программное обеспечение было получено от издателя программного обеспечения Защищает программное обеспечение от изменения после публикации.
В деталях сертификата информация будет выглядеть следующим образом:
Подпись кода (1.3.6..1.5.5.7.3.3) Это OID расширенного использования ключа для подписи кода 1.3.6. число
Эта информация была найдена очень случайно и не в каком-либо конкретном порядке текущей документации:
1В. Таким образом, в конечном итоге для использования командлета New-SelfSignedCertifcate через powershell нужно было выполнить команду следующим образом:
Приведенная выше команда соответствует обоим критериям сертификата для подписи кода (хотя вместо использования свойства -type можно было бы выбрать oid расширения использования ключа с соответствующим типом подписи кода, т.е. oid подписи кода = 1.3.6.1. 5.5.7.3.3)
Если вы запустите указанную выше команду в powershell, вы создадите 2 вещи, которые теперь можно экспортировать.
А) публичный сертификат B.) закрытый ключ + открытый сертификат, содержащийся в формате файла .pfx.
Теперь, когда у нас есть возможность экспортировать .pfx, вы можете создать пароль и экспортировать файл с закрытым ключом + сертификат .pfx.
- Используя команду, вы запустите командлет в powershell Export-PfxCertificate:
Вот документация Экспорт pfx:
$pwd = ConvertTo-SecureString -String -Force -AsPlainText Export-PfxCertificate -cert «Cert:LocalMachineMy» -FilePath .pfx -Password $pwd
- На этом этапе у вас есть ключ, который работает с Visual Studio, и теперь вы можете упаковать свое приложение и создать файл .appx или файл appxbundle, который можно будет развернуть в хранилище Windows на локальных машинах.
Подробные инструкции можно найти здесь:
Сценарий 2. Если вам нужен доверенный сертификат от центра сертификации вашей организации
Здесь вы должны иметь в виду, что приведенный выше раздел важен, но вам нужно будет оценить разницу между самозаверяющим сертификатом и доверенным корневым сертификатом CA и/или последующим CA.
Ну, вот один из способов понять это. Корневым сертификатом при его создании был сертификат SelfSigned. Тем не менее, он имеет возможность выдавать сертификаты другим для различных вещей. то есть авторизация на сервере или подпись кода. Подумайте, основные ограничения НЕОГРАНИЧЕННЫЕ. И он также может выдавать другие центры сертификации, которые могут выдавать сертификаты другим по ряду причин.
Это называется цепочкой сертификатов. Помните, что сертификат, который мы хотим для наших целей, является концом этой цепочки. Basic Constraints = LIMITED до 0 или false, что означает, что он должен быть подписан как End-endtity или Certificate Authroity = false. в другом слова, которые вы не можете выдать дальнейшие сертификаты по любой причине из этого сертификата, который был выпущен.
Так как это для приложения, которое просто необходимо установить и использовать. Это имеет смысл.
Итак, для следующего сегмента я собираюсь объяснить шаги для запроса сертификата у вашего центра сертификации через запрос сертификата. В мире Linux через openssl это называется .csr. В мире powershell это называется .req
Если вы правильно установите параметры. конечный результат — это файл, который может быть прочитан веб-сайтом проверки openssl или сертификатом со сменным расширением .req или .csr
Powershell может создавать это с помощью командлета CertReq
- .Вы просто используете эту команду вместе с передачей файла .inf, который создаст ваш запрос сертификата .req
certreq -new TestReqConfig.inf MyRequest.req
- Файл .inf будет содержать параметры для ключа и информацию о сертификате, как при создании сертификата new-selfsigned на основе приведенной выше информации.
INF файл будет выглядеть так:
[NewRequest] Subject = «C=US,ST=Florida,L=City,O=Your Company Information,OU=City Information,CN=certname.com» Requesttype = PKCS10 Exportable = TRUE HashAlgorithm = md5 KeyAlgorithm = RSA KeyLength = 2048 KeyUsage = CERT_DIGITAL_SIGNATURE_KEY_USAGE FriendlyName = «FriendlyName CERT» [Extensions] 2.5.29.19 = «false» 2.5.29.37 = «1.3.6.1.5.5.7.3.3»
Requesttype = PKCS10 позволяет работать с декодером openssl csr. и все остальное объясняется через эти сайты:
Декодер работает, открывая файл создания и получая промежуточную информацию
——BEGIN NEW CERTIFICATE REQUEST—— ——END NEW CERTIFICATE REQUEST——
Я надеюсь, что эта информация поможет кому-то узнать о сертификатах и о том, как они используются при упаковке и создании приложений для магазина Windows.
Ответ 2
Вышеупомянутая ссылка в вашем случае используется для оформления сертификата Windows для драйвера. Если вы хотите сделать сертификат для своего пакета UWP, вы можете обратиться к следующим шагам:
Шаг 1: Определите имя издателя пакета
Шаг 2. Создайте закрытый ключ, используя MakeCert.exe.
Шаг 3. Создание файла обмена личной информацией (.pfx) с помощью Pvk2Pfx.exe.
И вы также можете использовать приведенную ниже команду для создания сертификата напрямую. Вам нужно только заменить параметр CN параметром.
Сделать Pvk
«» /n «CN=Company, O=My Company, C=US» /r /pe /h 0 /eku «1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13» /e 01/01/2018 /sv C:DevelopmentcertificatesCompany.pvk C:DevelopmentcertificatesCompany.cer
Сделать Cer
«» /pvk C:DevelopmentcertificatesCompany.pvk /pi pvkPassword /spc C:DevelopmentcertificatesCompany.cer /pfx C:DevelopmentcertificatesCompany.pfx /po password! /pi password!
Источник: utyatnishna.ru
Как создать самоподписанный SSL сертификат в Windows?
05.12.2022
itpro
PowerShell, Windows 10, Windows 11, Windows Server 2019, Windows Server 2022
комментариев 10
Большинству администраторов 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
Для создания самоподписанного сертификата в 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:LocalMachineMy
Команда вернет отпечаток нового сертификата (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:LocalMachineMy» | Where-Object Thumbprint -eq 76360EAA92D958ECF2717261F75D426E6DB5B4D1 | Select-Object *
PSPath : Microsoft.PowerShell.SecurityCertificate::LocalMachineMy76360EAA92D958ECF2717261F75D426E6 DB5B4D1 PSParentPath : Microsoft.PowerShell.SecurityCertificate::LocalMachineMy PSChildName : 76360EAA92D958ECF2717261F75D426E6DB5B4D1 PSDrive : Cert PSProvider : Microsoft.PowerShell.SecurityCertificate PSIsContainer : False EnhancedKeyUsageList : DnsNameList : SendAsTrustedIssuer : False EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty PolicyId : Archived : False Extensions : 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 : 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:LocalMachineMy
Можно создать цепочку сертификатов. Сначала создается корневой сертификат (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:LocalMachineMy -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).
Примечание. Утилита 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:LocalMachineMy
Также можно сгенерировать wildcard сертификат для всего пространства имен домена, для этого в качестве имени сервера указывается *.contoso.com.
New-SelfSignedCertificate -certstorelocation cert:localmachinemy -dnsname *.contoso.com
Вы можете привязать сертификат не только к DNS имени, но и к IP адресу. Для этого вместе параметр -DnsName нужно использовать -TextExtension. Например:
Как вы видите, в поле Subject Alternative Name теперь содержится IP адрес.
Экспорт самоподписаного сертификата в Windows
Для экспорта полученного сертификата c закрытым ключом в pfx файл, защищенный паролем, нужно получить его отпечаток (Thumbprint). Сначала нужно указать пароль защиты сертификата и преобразовать его в формат SecureString. Значение Thumbprint нужно скопировать из результатов выполнения команды New-SelfSignedCertificate.
$CertPassword = ConvertTo-SecureString -String “YourPassword” -Force –AsPlainText
Export-PfxCertificate -Cert cert:LocalMachineMy2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C:test.pfx -Password $CertPassword
Можно экспортировать открытый ключ сертификата:
Export-Certificate -Cert Cert:LocalMachineMy2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -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:LocalMachineAuthRoot -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:LocalMachineMy
Set-AuthenticodeSignature -FilePath C:PStest_script.ps1 -Certificate $cert
Если при выполнении команды появится предупреждение UnknownError, значит этот сертификат недоверенный, т.к. находится в персональном хранилище сертификатов пользователя.
Move-Item -Path $cert.PSPath -Destination «Cert:CurrentUserRoot»
Теперь вы можете использовать этот самоподписанный сертификат для подписи 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:LocalMachineMy» -Protocol https
Предыдущая статья Следующая статья
Источник: winitpro.ru
Генерируем SSL-сертификаты для Windows и Android
Что такое SSL-сертификат и как его сгенерировать и использовать для локальной разработки, в том числе — для тестирования на мобильных устройствах, разбирает старший веб-разработчик Noveo Антон.
Noveo Senior Developer
Немного теории
SSL-сертификат — это цифровой сертификат, позволяющий убедиться в том, что сервер, передавший данные клиенту, не подменен и данные передал именно он.
Сертификат состоит из закрытого ключа, который держится в секрете и с помощью которого данные шифруются сервером, и самого сертификата с открытым ключом, с помощью которого данные расшифровываются клиентом. Не имея закрытого ключа, невозможно зашифровать данные таким образом, чтобы клиент расшифровал их тем же открытым ключом. Главная информация в сертификате — это то, кому он выдан, то есть доменное имя.
Как оценить профессионализм программиста за 5 вопросов — отвечают эксперты
Также в сертификат может кодироваться информация об издателе (сертификате), которым был подписан сертификат сервера. Это информация имеет контрольную подпись, которая может быть сгенерирована только обладателем закрытого ключа сертификата издателя. Таким образом, только издатель может подписать и сгенерировать валидный сертификат.
Инженер по администрированию систем защиты информации Открытие , Москва , По итогам собеседования
Клиент считает соединение защищенным, если, проверяя цепочку сертификатов, доходит до корневых доверенных центров сертификации, встроенных в систему или браузер, которые, в свою очередь, являются самоподписанными.
Для чего это нужно?
Приложения, требующие наличие валидного сертификата при локальной разработке:
- PWA-приложения,
- приложения, использующие WebRTC.
Есть два способа выполнить эту задачу:
- Сгенерировать самоподписанный сертификат и добавить его в список доверенных корневых центров сертификации; таким образом устройство будет считать его валидным. Как следует из названия, это сертификат, который подписан закрытым ключом его самого же.
- Сгенерировать корневой сертификат и добавить его в список доверенных корневых центров сертификации, далее сгенерировать сертификат сервера и подписать его ранее созданным корневым сертификатом.
Подготовка
Файл конфигурации openssl.cfg
Генерируем самоподписанный сертификат
1. Генерируем приватный ключ:
mkdir example.com openssl genrsa -out example.com/example.com.key
Generating RSA private key, 2048 bit long modulus (2 primes) . +++++ . +++++ e is 65537 (0x010001)
2. Создаем запрос на сертификат:
openssl req -new -key example.com/example.com.key -out example.com/example.com.csr -config openssl.cfg -subj «/CN=example.com certificate»
3. В файле конфигурации openssl.cfg нужно прописать доменное имя или несколько имен в блоке [alt_names].Раньше поддерживалось только одно имя, которое задавалось в поле CN, но сейчас можно указать несколько имен, а также сделать wildcard-сертификат на все поддомены.
[ alt_names ] DNS.0 = example.com DNS.1 = *.example.com
4. Генерируем сертификат:
openssl x509 -req -in example.com/example.com.csr -extensions req_ext -extfile openssl.cfg -signkey example.com/example.com.key -out example.com/example.com.crt -days 1825
5. Проверяем результат:
openssl x509 -in example.com/example.com.crt -text
Certificate: Data: Version: 3 (0x2) Serial Number: 0f:63:6b:b8:76:27:71:d1:e9:f3:53:01:11:11:7c:52:d6:c7:ea:c6 Signature Algorithm: sha256WithRSAEncryption Issuer: CN = example.com certificate Validity Not Before: Sep 27 05:08:48 2022 GMT Not After : Sep 26 05:08:48 2027 GMT Subject: CN = example.com certificate Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: 00:c9. 3b:24: 26:0f Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Alternative Name: DNS:example.com, DNS:*.example.com Signature Algorithm: sha256WithRSAEncryption 20:a9. fe:fd: 5f:30:e8:4a ——BEGIN CERTIFICATE—— MIIC+zCCAeO…8w6Eo= ——END CERTIFICATE——
Теперь у вас есть сам сертификат example.com.crt и файл ключа example.com.key, которые можно использовать в ваших приложениях.
Генерируем корневой сертификат + сертификат сервера
1. Генерируем приватный ключ корневого сертификата:
mkdir ca openssl genrsa -out ca/ca.key
Generating RSA private key, 2048 bit long modulus (2 primes) . +++++ . +++++ e is 65537 (0x010001)
2. Создаем сертификат:
openssl req -x509 -new -key ca/ca.key -days 1825 -out ca/ca.crt -extensions v3_ca_has_san -config openssl.cfg -subj «/CN=Root CA
3. Повторяем шаги 1-5 инструкции про самоподписанный сертификат.
4. Генерируем сертификат, подписанный нашим корневым сертификатом:
openssl x509 -req -in example.com/example.com.csr -CA ca/ca.crt -CAkey ca/ca.key -CAcreateserial -extensions req_ext -extfile openssl.cfg -out example.com/example.com.ca.crt -days 1825
5. Проверяем результат:
openssl x509 -in example.com/example.com.ca.crt -text
Certificate: Data: Version: 3 (0x2) Serial Number: 27:f4:ec:08:a8:36:b8:38:81:53:d9:8f:b5:fe:91:13:79:f0:9e:dc Signature Algorithm: sha256WithRSAEncryption Issuer: CN = Root CA Validity Not Before: Sep 27 05:46:19 2022 GMT Not After : Sep 26 05:46:19 2027 GMT Subject: CN = example.com certificate Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: 00:c9. 26:0f Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Alternative Name: DNS:example.com, DNS:*.example.com Signature Algorithm: sha256WithRSAEncryption 9e:72.
57:17 ——BEGIN CERTIFICATE—— MIIC…JXFw== ——END CERTIFICATE——
Теперь у вас есть сертификат сервера example.com.crt в комплекте с ключом example.com.key, а также корневой сертификат ca.crt в комплекте с ключом ca.key. Если добавить корневой сертификат в хранилище корневых сертификатов в вашей системе или браузере, то это сделает валидными все сертификаты, подписанные им.
Добавляем корневой сертификат в Windows
Браузер Chrome использует системное хранилище сертификатов:
Добавляем корневой сертификат в браузере Mozilla
Возможно, придется отключить DNS over HTTPS, чтобы браузер использовал системный DNS, который, в свою очередь, использует файл hosts.
Использование на примере create-react-app
1. Добавляем в .env следующие переменные:
HTTPS=true SSL_CRT_FILE=certs/example.com.crt SSL_KEY_FILE=certs/example.com.key HOST=example.com
2. Добавляем в файл host (C:WindowsSystem32Driversetchosts для Windows, /etc/hosts для Ubuntu) строку:
192.168.2.116 example.com
чтобы example.com резолвился на локальный адрес компьютера (свой можно посмотреть в свойствах подключения).
3. Запускаем приложение и видим, что соединение защищено и сертификат валидный:
Как установить сертификат на мобильное устройство Android?
1. Поместить телефон и ПК в одну локальную сеть.
2. Использовать create-react-app.
3. Положить в папку public ca.crt.
4. Прописать в .env адрес компьютера в локальной сети:
HOST=192.168.2.116
5. Запустить create-react-app без https.
6. Открыть на телефоне http://192.168.2.116:3000/ca.crt и установить сертификат:
Как прописать домен на Android устройстве?
Для того, чтобы тестировать приложения, нужно обеспечить, чтобы ваше доменное имя резолвилось на локальный адрес компьютера. Тут есть два решения:
1. Имея root-доступ на смартфоне, отредактировать файл hosts.
2. Если прав root нет, то есть более элегантное решение — воспользоваться приложением Postern. Это VPN-сервер, запускаемый на вашем устройстве и способный модифицировать трафик, в том числе перехватывать DNS-запросы и отвечать на них. Через него можно установить соответствие доменного имени example.com ip-адресу вашего компьютера в локальной сети, где запущен webpack-dev-server:
То, что Postern запущен, можно понять по иконке замка в статус-баре (VPN включен, все запросы идут через него).
После того, как все действия проделаны, можно открыть в браузере ваше приложение:
Готово! Теперь вы не только знаете в теории, что такое SSL-сертификат, но и умеете с ним работать на практике.
Источник: tproger.ru