- Создание самоподписанного сертификата SSL
- Creating a Self-Signed SSL Certificate
- В этом руководстве объясняется, как создать самозаверяющий сертификат SSL с помощью инструмента openssl.
- Что такое самоподписанный сертификат SSL?
- Предпосылки
- Создание самоподписанного SSL-сертификата
- Создание самоподписанного SSL-сертификата без запроса
- Вывод
- Как создать самоподписанный сертификат в Windows?
- New-SelfSignedCertificate: командлет PowerShell для генерации самоподписанного сертификата
- Создать самоподписанный сертфикат типа Code Signing для подписывания кода
- Использование самоподписанного SSL сертификата SHA-256 в IIS
- Как создать SSL сертификат самостоятельно?
- Что следует учесть перед созданием сертификата?
- Создать сертификат: пошаговая инструкция
- Привязать сертификат к серверу
Создание самоподписанного сертификата SSL
Creating a Self-Signed SSL Certificate
В этом руководстве объясняется, как создать самозаверяющий сертификат SSL с помощью инструмента openssl.
Что такое самоподписанный сертификат SSL?
Самозаверяющий сертификат SSL — это сертификат, подписанный лицом, которое его создало, а не доверенным центром сертификации. Самозаверяющие сертификаты могут иметь тот же уровень шифрования, что и доверенный CA-подписанный SSL-сертификат.
Самозаверяющие сертификаты, признанные действительными в любом браузере. Если вы используете самозаверяющий сертификат, веб-браузер покажет посетителю предупреждение о том, что сертификат веб-сайта невозможно проверить.
Самозаверяющие сертификаты в основном используются для целей тестирования или внутреннего использования. Вы не должны использовать самозаверяющий сертификат в производственных системах, которые подключены к Интернету.
Предпосылки
Инструментарий openssl необходим для создания самозаверяющего сертификата.
Чтобы проверить, установлен ли пакет openssl в вашей системе Linux, откройте ваш терминал, введите openssl version и нажмите Enter. Если пакет установлен, система распечатает версию OpenSSL, в противном случае вы увидите нечто подобное openssl command not found .
Если пакет openssl не установлен в вашей системе, вы можете установить его, выполнив следующую команду:
Ubuntu и Debian
Чентос и Федора
Создание самоподписанного SSL-сертификата
Чтобы создать новый самоподписанный сертификат SSL, используйте openssl req команду:
Давайте разберем команду и разберемся, что означает каждая опция:
- -newkey rsa:4096 — Создает новый запрос сертификата и 4096-битный ключ RSA. Значение по умолчанию составляет 2048 бит.
- -x509 — Создает сертификат X.509.
- -sha256 — Используйте 265-битный SHA (алгоритм безопасного хэширования).
- -days 3650 — Количество дней для сертификации сертификата. 3650 — это 10 лет. Вы можете использовать любое положительное целое число.
- -nodes — Создает ключ без ключевой фразы.
- -out example.crt — Указывает имя файла, в который будет записан вновь созданный сертификат. Вы можете указать любое имя файла.
- -keyout example.key — Задает имя файла, в который будет записан вновь созданный закрытый ключ. Вы можете указать любое имя файла.
Для получения дополнительной информации о параметрах openssl req команды посетите страницу документации OpenSSL req.
Как только вы нажмете Enter, команда сгенерирует закрытый ключ и задаст вам ряд вопросов, которые она будет использовать для генерации сертификата.
Введите запрашиваемую информацию и нажмите Enter.
Сертификат и закрытый ключ будут созданы в указанном месте. Используйте команду ls, чтобы убедиться, что файлы были созданы:
Это оно! Вы создали новый самозаверяющий сертификат SSL.
Всегда полезно создать резервную копию нового сертификата и ключа для внешнего хранилища.
Создание самоподписанного SSL-сертификата без запроса
Если вы хотите сгенерировать самозаверяющий SSL-сертификат без запроса какого-либо вопроса, используйте -subj параметр и укажите всю информацию о субъекте:
- C= — Название страны. Двухбуквенное сокращение ISO.
- ST= — Название штата или провинции.
- L= — Название населенного пункта. Название города, в котором вы находитесь.
- O= — Полное название вашей организации.
- OU= — Организационная единица.
- CN= — Полное доменное имя.
Вывод
В этом руководстве мы показали, как создать самозаверяющий сертификат SSL с помощью инструмента openssl. Теперь, когда у вас есть сертификат, вы можете настроить приложение для его использования.
Как создать самоподписанный сертификат в 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 невозможны.
Для создания сертификата нужно указать значения –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
Если вы указали нестандартный криптографический провайдер CSPs (например, с помощью параметров -KeyAlgorithm «ECDSA_secP256r1» -Provider ‘Microsoft Smart Card Key Storage Provider’ ), убедитесь, что он установлен на компьютере (по умолчанию используется CSP Microsoft Enhanced Cryptographic Provider). Иначе появится ошибка:
По-умолчанию генерируется самоподписанный сертификат со следующим параметрами:
- Криптографический алгоритм: RSA;
- Размер ключа: 2048 бит;
- Допустимые варианты использования ключа: Client Authentication и Server Authentication;
- Сертификат может использоваться для: Digital Signature, Key Encipherment ;
- Срок действия сертификата: 1 год.
Данная команда создаст новый сертификат и импортирует его в персональное хранилище компьютера. Откройте оснастку certlm.msc и проверьте, что в разделе Personal хранилища сертификатов компьютера появился новый сертификат.
С помощью командлета Get-ChildItem можно вывести все параметры созданного сертификата по его отпечатку (Thumbprint):
Get-ChildItem -Path «Cert:\LocalMachine\My» | Where-Object Thumbprint -eq DC1A0FDE0120085A45D8E14F870148D1EBCB82AE | Select-Object *
$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.
Полученный открытый ключ или сам файл сертификата можно распространить на все компьютеры и сервера в домене с помощью 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
Также можно сгенерировать 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
Set-AuthenticodeSignature -FilePath C:\PS\test_script.ps1 -Certificate $cert
Если при выполнении команды появится предупреждение UnknownError, значит этот сертификат недоверенный, т.к. находится в персональном хранилище сертификатов пользователя.
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 сертификат самостоятельно?
Для создания защищенного соединения между пользователем сетевого ресурса и сервером широко применяются SSL сертификаты, которые являются гарантией того, что передаваемые данные будут надежно зашифрованы и смогут быть прочитаны только владельцем данного сертификата. Подобная схема позволяет исключить утечку информации при передаче сведений о банковской карте клиента, его персональных данных и прочей конфиденциальной информации. Даже в том случае, если поток данных удастся перехватить, расшифровать его без наличия секретного ключа и алгоритма шифрования не представляется возможным.
Процесс создания SSL сертификата самостоятельно — достаточно трудоемкий процесс, требующий немало времени, особенно, если Вы раньше не сталкивались с этим вопросом. Поэтому в некоторых случаях проще получить самый простой сертификат от доверенного центра сертификации, выдача которого занимает всего 5 минут.
Создать сертификат самому можно средствами свободно распространяемого пакета IIS6 Resource Kit Tools.
Может потребоваться установка служб. Для этого в Панели управления необходимо выбрать раздел «Программы и компоненты» и в открывшемся окне в меню слева нажать на ссылку «Включение или отключение компонентов Windows». Далее в открывшемся окне нужно включить компонент «Службы IIS».
Что следует учесть перед созданием сертификата?
Прежде чем создать сертификат, следует проанализировать сферу его применения. Данный метод удобен для организации защиты данных на локальном сервере или во внутренней сети предприятия. Но если к сайту, использующему самоподписанный сертификат, обратится посторонний клиент, ему будет выдано уведомление, что создатель сертификата неизвестен и будет предложено выбрать, доверяет ли пользователь этому сертификату или нет. Не все готовы доверить свои личные и тем более финансовые данные неизвестному производителю. Поэтому, если Ваш сайт предполагает работу с внешними посетителями, мы рекомендуем приобрести один из SSL сертификатов доверительного центра сертификации, который занимается этим на профессиональной основе:
Использование доверенного сертификата гарантирует безопасность и исключает риски клиента. К сайтам, использующим проверенных поставщиков сертификатов безопасности, клиенты относятся более лояльно, что обеспечивает более эффективное и выгодное сотрудничество.
Создать сертификат: пошаговая инструкция
Самостоятельно создать сертификат можно, выполнив 4 простых шага:
- В Панели управления войдите в раздел «Администрирование» и выберите там пункт «Диспетчер служб IIS»
.
В Диспетчере служб нужно перейти в раздел «Сертификаты сервера».
Справа расположен столбец «Действия». В нем выберите пункт «Создать самозаверенный сертификат…»
В открывшемся диалоговом окне понадобится ввести название сертификата.
Привязать сертификат к серверу
После того, как Вы создали SSL сертификат, следует привязать его к IIS-серверу. Для этого вернитесь в раздел «Сертификаты сервера» и в разделе «Подключения» слева выберите сайт, к которому планируете привязать созданный.
В столбце «Действия» нажмите на «Привязки…».
В открывшемся диалоговом окне «Добавление привязки сайта» введите сведения о привязке (не забудьте выбрать созданный сертификат в соответствующем поле) и нажмите «ОК».
После создания сертификата, описывающего метод шифрования данных, необходимо экспортировать его приватный ключ и задать пароль, чтобы предотвратить выполнение изменений. В результате этих действий будет получен полноценный сертификат, который можно применять для обеспечения защищенных соединений.