Содержание

Как создать SSL сертификат самостоятельно?

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

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

Создать сертификат самому можно средствами свободно распространяемого пакета IIS6 Resource Kit Tools.

Может потребоваться установка служб. Для этого в Панели управления необходимо выбрать раздел «Программы и компоненты» и в открывшемся окне в меню слева нажать на ссылку «Включение или отключение компонентов Windows». Далее в открывшемся окне нужно включить компонент «Службы IIS».

Что следует учесть перед созданием сертификата?

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

Поэтому, если Ваш сайт предполагает работу с внешними посетителями, мы рекомендуем приобрести один из SSL сертификатов доверительного центра сертификации, который занимается этим на профессиональной основе:

        

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

Создать сертификат: пошаговая инструкция

Самостоятельно создать сертификат можно, выполнив 4 простых шага:

  1. В Панели управления войдите в раздел «Администрирование» и выберите там пункт «Диспетчер служб IIS»
    .
     
  2. В Диспетчере служб нужно перейти в раздел «Сертификаты сервера». 

  3. Справа расположен столбец «Действия». В нем выберите пункт «Создать самозаверенный сертификат…»

     

  4. В открывшемся диалоговом окне понадобится ввести название сертификата.

     

Привязать сертификат к серверу

После того, как Вы создали SSL сертификат, следует привязать его к IIS-серверу. Для этого вернитесь в раздел «Сертификаты сервера» и в разделе «Подключения» слева выберите сайт, к которому планируете привязать созданный. 

В столбце «Действия» нажмите на «Привязки…». 

В открывшемся диалоговом окне «Добавление привязки сайта» введите сведения о привязке (не забудьте выбрать созданный сертификат в соответствующем поле) и нажмите «ОК». 

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

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

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

Содержание:

  • New-SelfSignedCertificate: создать самоподписанный SSL сертификат в PowerShell
  • Как сгенерировать SAN (SubjectAltName) сертификат с помощью PowerShell?
  • Экспорт самоподписаного сертификата в Windows
  • Сгенерировать сертификат для подписи кода типа Code Signing
  • Создать самоподписанный SSL сертификат SHA-256 для IIS

New-SelfSignedCertificate: создать самоподписанный SSL сертификат в PowerShell

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

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

Get-Command -Module PKI

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

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

Для создания сертификата нужно указать значения -DnsName (DNS имя сервера, имя может быть произвольным и отличаться от имени localhost) и -CertStoreLocation (раздел локального хранилища сертификатов, в который будет помещен сгенерированный сертификат).

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

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

Команда вернет отпечаток нового сертификата (Thumbprint), Subject и EnhancedKeyUsageList. По умолчанию такой сертификат можно использовать для аутентификации клиента Client Authentication (1.3.6.1.5.5.7.3.2) или сервера Server Authentication (1.3.6.1.5.5.7.3.1).

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

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

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

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

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

PSPath                   : Microsoft.PowerShell.Security\Certificate::LocalMachine\My\76360EAA92D958ECF2717261F75D426E6
  DB5B4D1
PSParentPath             : Microsoft.PowerShell.Security\Certificate::LocalMachine\My
PSChildName              : 76360EAA92D958ECF2717261F75D426E6DB5B4D1
PSDrive                  : Cert
PSProvider               : Microsoft. PowerShell.Security\Certificate
PSIsContainer            : False
EnhancedKeyUsageList     : {Client Authentication (1.3.6.1.5.5.7.3.2), Server Authentication (1.3.6.1.5.5.7.3.1)}
DnsNameList              : {test.contoso.com}
SendAsTrustedIssuer      : False
EnrollmentPolicyEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
EnrollmentServerEndPoint : Microsoft.CertificateServices.Commands.EnrollmentEndPointProperty
PolicyId                 :
Archived                 : False
Extensions               : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid,
                           System.Security.Cryptography.Oid, System.Security.Cryptography.Oid}
FriendlyName             :
HasPrivateKey            : True
PrivateKey               : System.Security.Cryptography.RSACng
IssuerName               : System.Security.Cryptography.X509Certificates.X500DistinguishedName
NotAfter                 : 12/2/2023 3:41:18 PM
NotBefore                : 12/2/2022 3:21:18 PM
PublicKey                : System.
Security.Cryptography.X509Certificates.PublicKey RawData : {48, 130, 3, 45…} SerialNumber : 24682351DA9C59874573BA2B5BB39874 SignatureAlgorithm : System.Security.Cryptography.Oid SubjectName : System.Security.Cryptography.X509Certificates.X500DistinguishedName Thumbprint : 76360EAA92D958ECF2717261F75D426E6DB5B4D1 Version : 3 Handle : 2007435579936 Issuer : CN=test.contoso.com Subject : CN=test.contoso.com

Можно создать цепочку сертификатов. Сначала создается корневой сертификат (CA), а на основании него генерируется SSL сертификат сервера:

$rootCert = New-SelfSignedCertificate -Subject "CN=TestRootCA,O=TestRootCA,OU=TestRootCA" -KeyExportPolicy Exportable  -KeyUsage CertSign,CRLSign,DigitalSignature -KeyLength 2048 -KeyUsageProperty All -KeyAlgorithm 'RSA'  -HashAlgorithm 'SHA256'  -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider"
New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName "test2. contoso.com" -Signer $rootCert -KeyUsage KeyEncipherment,DigitalSignature

Чтобы изменить длину ключа сертификата и алгоритм шифрования, нужно использовать параметры –KeyAlgorithm , –KeyLength и –HashAlgorithm . Например:

New-SelfSignedCertificate -KeyAlgorithm RSA -KeyLength 2048 -HashAlgorithm "SHA256"

Если на компьютере доступен модуль TPM 2.0, можно использовать его для защиты ключа:

New-SelfSignedCertificate -Type Custom -Provider "Microsoft Platform Crypto Provider" ...

Провайдер Microsoft Platform Crypto Provider использует Trusted Platform Module чип устройства для создания ассиметричного ключа.
$Params = @{
"DnsName" = "mylocalhostname"
"CertStoreLocation" = "Cert:\\CurrentUser\\My"
"KeyUsage" = "KeyEncipherment","DataEncipherment","KeyAgreement"
"Type" = "DocumentEncryptionCert"
}
New-SelfSignedCertificate @Params

Как сгенерировать SAN (SubjectAltName) сертификат с помощью PowerShell?

Командлет New-SelfSignedCertificate позволяет создать сертификат с несколькими различными именами Subject Alternative Names (SAN).

Примечание. Утилита Makecert.exe, в отличии от командлета New-SelfSignedCertificate, не умеет создавать сертификаты с SAN.

Если создается сертификат с несколькими именами, первое имя в параметре DnsName будет использоваться в качестве CN (Common Name) сертификата. К примеру, создадим сертификат, у которого указаны следующие имена:

  • Subject Name (CN): adfs1.contoso.com
  • Subject Alternative Name (DNS): web-gw.contoso.com
  • Subject Alternative Name (DNS): enterprise-reg.contoso.com

Команда создания сертификата будет такой:

New-SelfSignedCertificate -DnsName adfs1.contoso.com,web_gw.contoso.com,enterprise_reg.contoso.com -CertStoreLocation cert:\LocalMachine\My

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

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

Вы можете привязать сертификат не только к DNS имени, но и к IP адресу. Для этого вместе параметр -DnsName нужно использовать -TextExtension. Например:

New-SelfSignedCertificate -TextExtension @("2.5.29.17={text}IPAddress=10.10.2.3&DNS=TESTServer1&DNS=TESTServer1.local")

Как вы видите, в поле Subject Alternative Name теперь содержится IP адрес.

Экспорт самоподписаного сертификата в Windows

Для экспорта полученного сертификата c закрытым ключом в pfx файл, защищенный паролем, нужно получить его отпечаток (Thumbprint). Сначала нужно указать пароль защиты сертификата и преобразовать его в формат SecureString. Значение Thumbprint нужно скопировать из результатов выполнения команды New-SelfSignedCertificate.

$CertPassword = ConvertTo-SecureString -String “YourPassword” -Force –AsPlainText

Export-PfxCertificate -Cert cert:\LocalMachine\My\2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C:\test. pfx -Password $CertPassword

Можно экспортировать открытый ключ сертификата:

Export-Certificate -Cert Cert:\LocalMachine\My\2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C:\testcert.cer

Проверьте, что в указанном каталоге появился CER (PFX) файл сертификата. Если щелкнуть по нему правой клавишей и выбрать пункт меню Install Certificate, можно с помощью мастера импорта сертификатов добавить сертификат в корневые доверенные сертификаты компьютера.

Выберите Store location -> Local Machine, Place all certificates in the following store -> Trusted Root Certification Authorities.

Можно создать сертификат и сразу импортировать его в доверенные корневые сертификаты компьютера командами:
$cert=New-SelfSignedCertificate …..
$certFile = Export-Certificate -Cert $cert -FilePath C:\certname.cer
Import-Certificate -CertStoreLocation Cert:\LocalMachine\AuthRoot -FilePath $certFile. FullName

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

Сгенерировать сертификат для подписи кода типа Code Signing

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

В версии PowerShell 5 командлет New-SelfSifgnedCertificate теперь можно использовать чтобы выпустить сертификат типа Code Signing.

Вы можете обновить версию PowerShell согласно инструкции.

Для создания самоподписанного сертфиката для подписывания кода приложений, выполните команду:

$cert = New-SelfSignedCertificate -Subject "Cert for Code Signing” -Type CodeSigningCert -CertStoreLocation cert:\LocalMachine\My

Теперь можно подписать ваш PowerShell скрипт эти сертификатом:

Set-AuthenticodeSignature -FilePath C:\PS\test_script. ps1 -Certificate $cert

Если при выполнении команды появится предупреждение UnknownError, значит этот сертификат недоверенный, т.к. находится в персональном хранилище сертификатов пользователя.

Нужно переместить его в корневые сертификаты (не забывайте периодически проверять хранилище сертификатов Windows на наличие недоверенных сертфикатов и обновлять списки корневых сертификатов):

Move-Item -Path $cert.PSPath -Destination "Cert:\CurrentUser\Root"

Теперь вы можете использовать этот самоподписанный сертификат для подписи PowerShell скриптов, драйверов или приложений.

Создать самоподписанный SSL сертификат SHA-256 для IIS

Обратите внимание, что при создании самоподписанный сертификат для IIS через консоль Internet Information Manager (пункт меню Create Self-Signed Certificate), создается сертификат с использованием алгоритма шифрования SHA-1. Такие сертификаты многими браузерами считаются недоверенными, поэтому они могут выдавать предупреждение о небезопасном подключении. Командлет New-SelfSignedCertificate позволяет создать более популярный тип сертификата с помощью алгоритма шифрования SHA-256.

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

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

Также можно привязать SSL сертификат к сайту IIS по его отпечатку:

New-IISSiteBinding -Name "Default Web Site" -BindingInformation "*:443:" -CertificateThumbPrint $yourCert.Thumbprint -CertStoreLocation "Cert:\LocalMachine\My" -Protocol https

Как создать собственный центр сертификации SSL для локальной разработки HTTPS

В 2018 году Google начал выступать за то, чтобы сайты применяли шифрование HTTPS, помечая сайты, не использующие сертификат SSL, как «небезопасные» в своем браузере Chrome. Это было широко признано хорошей идеей, поскольку защита веб-трафика защищает как владельца сайта, так и его клиентов.

Несмотря на то, что Let’s Encrypt и его API значительно упростили создание и установку SSL-сертификатов на своих серверах, это мало помогает разработчикам с HTTPS в их средах разработки. Создание локального SSL-сертификата для обслуживания ваших сайтов разработки через HTTPS может оказаться сложной задачей. Даже если вам удастся сгенерировать самозаверяющий сертификат, вы все равно получите ошибки конфиденциальности браузера.

В этой статье мы рассмотрим создание собственного центра сертификации (ЦС) для ваших локальных серверов, чтобы вы могли без проблем запускать сайты HTTPS локально.

  1. Почему HTTPS локально?
  2. Как это работает
  3. Стать (маленьким) центром сертификации
  4. Установка корневого сертификата
  5. Создание сертификатов, подписанных ЦС, для ваших сайтов разработки
  6. Сценарий оболочки
  7. Альтернативы
  8. Заключение

Если вы предпочитаете учиться визуально, наш видеопродюсер Томас создал для вас видео, в котором рассказывается об этапах создания собственного локального ЦС. Он также создал видеоролики, демонстрирующие процесс для пользователей Linux и Windows.

Почему HTTPS локально?

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

Например, моя среда разработки для этого сайта (и SpinupWP) работает как сервер Ubuntu на виртуальной машине (ВМ) VMware на моем Mac. Рабочий сайт представляет собой сервер Ubuntu, работающий на DigitalOcean, с почти идентичной конфигурацией.

Вы определенно хотите, чтобы ваша среда разработки была максимально приближена к производственной среде. Когда это не так, вы вызываете появление новых проблем в производстве, которые не проявлялись в разработке. Запуск HTTP, когда ваш рабочий сайт поддерживает только HTTPS, определенно является ненужным риском. Даже в ситуации, когда вы не можете идеально отразить свою производственную среду, вы все равно захотите запускать HTTPS локально, или вам придется целый день бороться с предупреждениями SSL со смешанным содержимым.

Если вы когда-либо пытались перейти на локальный сайт через HTTPS, для которого не настроен SSL-сертификат, вы, вероятно, видели следующее сообщение в Chrome:

Или следующее в Firefox:

Другие браузеры имеют другие сообщения, но суть одна и та же.

Один из способов обойти это — переключить локальную среду разработки WordPress на что-то вроде LocalWP, DevKinsta или даже Laravel Valet, которые предлагают локальные решения SSL из коробки. Недостатком является то, что это означает изменение вашего рабочего процесса разработки, что не идеально, если вам удобнее то, что у вас уже есть, особенно если оно уже соответствует вашей производственной среде.

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

Основная проблема с локальными самозаверяющими сертификатами заключается в том, что ваш браузер также должен доверять им. Просто настроить локальный самозаверяющий сертификат недостаточно. Вы получите то же сообщение браузера, но на этот раз с ERR_CERT_AUTHORITY_INVALID . Это происходит потому, что браузер хочет проверить действительность этого сертификата в центре сертификации и не может. Таким образом, решение состоит в том, чтобы стать вашим собственным ЦС!

Как это работает

Чтобы запросить SSL-сертификат у ЦС, такого как Verisign или GoDaddy, вы отправляете им запрос на подпись сертификата (CSR), и они выдают вам SSL-сертификат в обмен на то, что они подписали с использованием своего корневого сертификата и частного сертификата. ключ. Все браузеры имеют копию (или доступ к копии из операционной системы) корневого сертификата из различных центров сертификации, поэтому браузер может проверить, подписан ли ваш сертификат доверенным центром сертификации.

Вот почему, когда вы генерируете самоподписанный сертификат, браузер ему не доверяет. Он не был подписан ЦС. Чтобы обойти это, нужно сгенерировать собственный корневой сертификат и закрытый ключ. Затем мы добавляем корневой сертификат ко всем устройствам, которыми мы владеем, только один раз, и тогда все самозаверяющие сертификаты, которые мы генерируем, будут изначально доверенными.

Стать (крохотным) центром сертификации

Просто смешно создавать файлы, необходимые для того, чтобы стать центром сертификации. На самом деле требуется всего две команды. Давайте углубимся в то, как мы можем сделать это в macOS и Linux, а затем посмотрим, как это работает в операционной системе Windows.

Создание закрытого ключа и корневого сертификата в macOS Monterey и Linux

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

Единственная реальная разница между ними заключается в том, что в macOS вам может потребоваться установить приложение командной строки OpenSSL. Для этого, если у вас его еще нет, установите homebrew, что позволит вам установить OpenSSL.

 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
варить установить openssl
 

Большинство дистрибутивов Linux поставляются с установленным OpenSSL. Если нет, его можно установить через менеджер пакетов по умолчанию.

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

 мкдир ~/сертификаты
компакт-диск ~/сертификаты
 

С этой настройкой мы готовы сгенерировать закрытый ключ, чтобы стать локальным ЦС:

 openssl genrsa -des3 -out myCA.key 2048
 

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

 Генерация закрытого ключа RSA, длина модуля 2048 бит
. ................................................ ...............+++
......................................++++
е 65537 (0x10001)
Введите парольную фразу для myCA.key:
Проверка — введите парольную фразу для myCA.key:
 

Далее генерируем корневой сертификат:

 openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem
 

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

 Введите парольную фразу для myCA.key:
Вас попросят ввести информацию, которая будет включена
в ваш запрос сертификата.
То, что вы собираетесь ввести, называется отличительным именем или DN.
Полей довольно много, но вы можете оставить некоторые пустыми
Для некоторых полей будет значение по умолчанию,
Если вы введете «. », поле останется пустым.
-----
Название страны (двухбуквенный код) [AU]:US
Название штата или провинции (полное название) [Some-State]: Штат Спрингфилд
Название местности (например, город) []:Спрингфилд
Название организации (например, компания) [Internet Widgits Pty Ltd]: Hellfish Media
Название организационного подразделения (например, раздел) []:7G
Общее имя (например, полное доменное имя сервера или ВАШЕ имя) []:Hellfish Media
Адрес электронной почты []:[email protected]
 

Теперь у вас должно быть два файла: myCA.key (ваш закрытый ключ) и myCA.pem (ваш корневой сертификат).

🎉 Поздравляем, теперь вы ЦС. Вроде, как бы, что-то вроде.

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

В Windows также можно настроить среду для запуска команд openssl . Вам просто нужны дополнительные инструменты.

Если вы используете подсистему Windows для Linux (WSL), то это как если бы вы работали в Linux, и команды будут работать точно так же. Если вы используете Windows с чем-то вроде WampServer или XAMPP, вам понадобится способ установить утилиту командной строки OpenSSL в Windows. Самый простой способ сделать это — установить Git для Windows, который поставляется в комплекте с OpenSSL и утилитой Git Bash.

Открыв окно Git Bash, вы можете запускать те же команды, что и для macOS или Linux, с одним небольшим отличием. Из-за того, как некоторые консольные приложения (в частности, OpenSSL) работают в Git Bash, вам необходимо добавлять префикс ко всем командам openssl с помощью утилиты winpty .

Так, например, следующая команда позволяет сгенерировать закрытый ключ, чтобы стать локальным ЦС в Git Bash:

 winpty openssl genrsa -des3 -out myCA.key 2048
 

Другими небольшими отличиями являются пути к файлам в Git Bash. Когда вы открываете экземпляр Git Bash, домашний каталог в терминале сопоставляется с вашим пользовательским каталогом в Windows, но со структурой каталогов, подобной Linux. Итак, если ваш каталог пользователя находится по адресу c:\Users\Hellfish в Windows ваш домашний каталог Git Bash будет c/Users/Hellfish .

Установка корневого сертификата

Чтобы стать настоящим центром сертификации, вам необходимо получить корневой сертификат на всех устройствах в мире.

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

Добавление корневого сертификата в macOS Monterey Keychain

Через интерфейс командной строки
 sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" myCA.pem
 
Через приложение «Связка ключей macOS»
  1. Откройте приложение «Связка ключей macOS»
  2. При необходимости убедитесь, что вы выбрали системную связку ключей (в более ранних версиях macOS по умолчанию используется эта связка ключей)
  3. Перейдите к Файл > Импорт элементов…
  4. Выберите файл с закрытым ключом (например, myCA. pem )
  5. Найдите то, что вы ответили как «Общее имя» выше
  6. Дважды щелкните корневой сертификат в списке
  7. Расширение раздела Trust
  8. Измените флажок «При использовании этого сертификата:» на Всегда доверять
  9. Закрыть окно сертификата
  10. Во время процесса может попросить ввести пароль (или отсканировать палец), сделайте это
  11. 🎉 Празднуйте!

Добавление корневого сертификата в Linux

Существует так много дистрибутивов Linux, но Ubuntu, безусловно, самый популярный, и именно его мы использовали при создании SpinupWP. Поэтому эти инструкции охватывают Ubuntu.

  1. Если он еще не установлен, установите пакет ca-certificates . sudo apt-get install -y ca-сертификаты
  2. Скопируйте файл myCA.pem в каталог /usr/local/share/ca-certificates как файл myCA.crt . sudo cp ~/certs/myCA. pem /usr/local/share/ca-certificates/myCA.crt
  3. Обновите хранилище сертификатов. sudo update-ca-сертификаты

Вы можете проверить, установлен ли сертификат, выполнив следующую команду:

 awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt | grep Адская рыба
 

Если он установлен правильно, вы увидите сведения о корневом сертификате.

 subject=C = US, ST = Springfield State, L = Springfield, O = Hellfish Media, OU = 7G, CN = Hellfish Media, emailAddress = [email protected]
 

Добавление корневого сертификата в Windows 10

  1. Откройте «Консоль управления Microsoft» с помощью комбинации клавиш Windows + R , введя mmc и нажав Открыть
  2. Перейдите к Файл > Добавить/удалить оснастку
  3. Click Сертификаты и Добавить
  4. Выберите Учетная запись компьютера и нажмите Далее
  5. Выберите Локальный компьютер , затем нажмите Готово
  6. Нажмите OK , чтобы вернуться в окно MMC
  7. Дважды щелкните Сертификаты (локальный компьютер) , чтобы развернуть представление
  8. Выберите Доверенные корневые центры сертификации , щелкните правой кнопкой мыши Сертификаты в среднем столбце в разделе «Тип объекта» и выберите Все задачи затем Импорт
  9. Щелкните Далее , затем Просмотрите . Измените раскрывающийся список расширения сертификата рядом с полем имени файла на Все файлы (*.*) и найдите файл myCA.pem , нажмите Открыть , затем Далее
  10. Выберите Поместите все сертификаты в следующее хранилище . По умолчанию используется «Хранилище доверенных корневых центров сертификации». Нажмите Далее , затем нажмите Готово для завершения работы мастера.

Если все прошло по плану, вы должны увидеть свой сертификат ЦС в списке Доверенные корневые центры сертификации > Сертификаты .

Добавление корневого сертификата в iOS 14

Если вы используете что-то вроде ngrok для просмотра локальных сайтов разработки на мобильных устройствах, вам может потребоваться добавить корневой сертификат на эти устройства. На устройствах iOS вы можете сделать это довольно легко, выполнив следующие действия:

  1. Отправьте корневой сертификат себе по электронной почте, чтобы вы могли получить к нему доступ на своем устройстве iOS. Обязательно используйте почтовое приложение по умолчанию для доступа к электронной почте.
  2. Нажмите на вложение в электронном письме на вашем устройстве iOS. Вам будет предложено просмотреть профиль в приложении «Настройки».
  3. Откройте приложение «Настройки» и нажмите Профиль загружен вверху.
  4. Щелкните Установить в правом верхнем углу, а затем еще раз Установить на экране предупреждения.
  5. После установки нажмите Закройте и вернитесь на главную страницу настроек.
  6. Перейдите к Общие > О .
  7. Прокрутите вниз и нажмите Настройки доверия сертификата .
  8. Включите корневой сертификат в разделе «ВКЛЮЧИТЬ ПОЛНОЕ ДОВЕРИЕ ДЛЯ КОРНЕВЫХ СЕРТИФИКАТОВ».

Теперь мы являемся центром сертификации на всех наших устройствах и можем подписывать сертификаты для любых новых сайтов разработчиков, которым требуется HTTPS. Во-первых, мы создаем закрытый ключ для сайта разработки. Обратите внимание, что мы называем закрытый ключ, используя URL-адрес доменного имени сайта разработки. Это не обязательно, но упрощает управление, если у вас несколько сайтов:

 openssl genrsa -out hellfish.test.key 2048
 

Затем мы создаем CSR:

 openssl req -new -key hellfish.test.key -out hellfish.test.csr
 

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

 Вас попросят ввести информацию, которая будет включена
в ваш запрос сертификата.
То, что вы собираетесь ввести, называется отличительным именем или DN.
Полей довольно много, но вы можете оставить некоторые пустыми
Для некоторых полей будет значение по умолчанию,
Если вы введете «.», поле останется пустым.
-----
Название страны (двухбуквенный код) [AU]:US
Название штата или провинции (полное название) [Some-State]: Springfield State
Название местности (например, город) []:Спрингфилд
Название организации (например, компания) [Internet Widgits Pty Ltd]: Hellfish Media
Название организационного подразделения (например, раздел) []:7G
Общее имя (например, полное доменное имя сервера или ВАШЕ имя) []:Hellfish Media
Адрес электронной почты []:[email protected]
Пожалуйста, введите следующие «дополнительные» атрибуты
будет отправлен с вашим запросом сертификата
Пароль вызова []:
Необязательное название компании []:
 

Наконец, мы создадим файл конфигурации расширения сертификата X509 V3, который используется для определения альтернативного имени субъекта (SAN) для сертификата. В нашем случае мы создадим файл конфигурации с именем hellfish.test.ext , содержащий следующий текст:

 authorKeyIdentifier=keyid,issuer
основные ограничения = КА: ЛОЖЬ
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = адская рыба.тест
 

Мы будем запускать openssl x509 , потому что команда x509 позволяет нам редактировать настройки доверия сертификатов. В этом случае мы используем его для подписи сертификата в сочетании с файлом конфигурации, что позволяет нам установить альтернативное имя субъекта. Первоначально я нашел этот ответ на Stack Overflow.

Теперь мы запускаем команду для создания сертификата: используя наш CSR, закрытый ключ CA, сертификат CA и файл конфигурации:

 openssl x509 -req -in hellfish.test.csr -CA myCA.pem -CAkey myCA.key \
-CAcreateserial -out hellfish.test.crt -days 825 -sha256 -extfile hellfish.test.ext
 

Теперь у нас есть три файла: hellfish. test.key (закрытый ключ), hellfish.test.csr (запрос на подпись сертификата или файл csr) и hellfish.test.crt (подписанный свидетельство). Мы можем настроить локальные веб-серверы для использования HTTPS с закрытым ключом и подписанным сертификатом.

Если вы используете MAMP Pro, в версии 6.0 появилась встроенная поддержка SSL. Вы можете включить его, установив флажок SSL под выбранным веб-сервером.

Если вы предпочитаете использовать локально подписанный сертификат, который мы только что настроили, вы можете сделать это, включив представление «Эксперт», щелкнув вкладку SSL и выбрав свой «Сертификат» и «Ключ сертификата» (частный ключ) файлы.

Если вы используете среду Linux или Windows, в которой используется Nginx, вы можете воспользоваться инструкциями из нашей серии «Установка WordPress на Ubuntu 20.04».

Если вы используете Apache в Linux или Windows, вам необходимо включить мод Apache SSL и настроить виртуальный хост Apache для порта 443 для локального сайта. Вам потребуется добавить SSLEngine , SSLCertificateFile и SSLCertificateKeyFile , а последние две укажите на только что созданный файл сертификата и ключа.

 <Виртуальный хост *:443>
   Имя сервера hellfish.test
   DocumentRoot /var/www/hellfish-test
   SSLEngine включен
   SSLCertificateFile /path/to/certs/hellfish.test.crt
   SSLCertificateKeyFile /path/to/certs/hellfish.test.key

 

У нас нет инструкций, как это сделать в Windows с помощью IIS, потому что WordPress не так просто настроить в системах IIS.

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

Сценарий оболочки

Чтобы ускорить работу, вот удобный сценарий оболочки, который вы можете изменить для своих целей. Он должен работать на macOS, Linux или Windows через Git Bash:

 #!/bin/sh
если [ "$#" -ne 1 ]
затем
  echo "Использование: необходимо указать домен"
  выход 1
фи
ДОМЕН=$1
компакт-диск ~/сертификаты
openssl genrsa -out $DOMAIN. key 2048
openssl req -new -key $DOMAIN.key -out $DOMAIN.csr
кошка > $DOMAIN.ext << EOF
authorKeyIdentifier=keyid,эмитент
основные ограничения = КА: ЛОЖЬ
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $ДОМЕН
EOF
OpenSSL x509-req -in $DOMAIN.csr -CA ../myCA.pem -CAkey ../myCA.key -CAcreateserial \
-out $DOMAIN.crt -days 825 -sha256 -extfile $DOMAIN.ext
 

Альтернативы

Альтернативой для создания локально доверенных сертификатов SSL является mkcert (спасибо людям в комментариях за указание на это). Если вы не возражаете против использования одного из различных менеджеров пакетов, перечисленных в файле readme mkcert, для установки инструмента, это хорошая альтернатива для создания локально доверенных SSL-сертификатов. Недостатком является то, что он устанавливает для вас только корневой сертификат CA на вашем локальном компьютере и создает локально подписанные SSL-сертификаты, вам все равно нужно настраивать сертификаты вручную для каждого локального сайта.

Заключение

Итак, у вас есть это, как стать вашим собственным локальным центром сертификации, чтобы подписывать ваши локальные SSL-сертификаты и использовать HTTPS на ваших локальных сайтах. Надеюсь, это избавит вас от страшного сообщения «Ваше соединение не защищено» на ваших локальных веб-сайтах разработки.

Пробовали ли вы создать собственный ЦС? Вы работаете локально с HTTPS? Позвольте мне знать в комментариях ниже.

Как получить сертификат SSL за 7 простых шагов

Обновлено 5 января 2023 г.

Наши независимые исследовательские проекты и беспристрастные обзоры частично финансируются за счет партнерских комиссий без каких-либо дополнительных затрат для наших читателей. Подробнее... Имея в виду эту цель, одним из лучших способов обеспечить безопасность вашего веб-сайта является получение сертификата SSL (Secure Sockets Layer).

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

В этой статье мы обсудим, как получить SSL-сертификат, сделав все максимально просто и без профессионального жаргона — обещаю!

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

Уникальный IP-адрес

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

Точная запись WHOIS

Когда вы запрашиваете SSL-сертификат для домена, центр сертификации должен подтвердить, что вы являетесь владельцем доменного имени. Для этого он проверит запись WHOIS домена.

Вы можете использовать инструмент поиска домена, чтобы проверить свою запись WHOIS. Если найденная информация устарела, обязательно обновите ее!

Проверка бизнеса/организации

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

Существует множество различных типов SSL-сертификатов, и их можно разделить на следующие категории:

  • Уровень проверки : Проверка домена, проверка организации и расширенная проверка -Домен

Давайте рассмотрим краткий обзор каждого типа:

Проверка домена : Это самый дешевый и самый низкий уровень проверки, который просто гарантирует, что ваша компания имеет контроль над доменом. Это лучше всего подходит для малого бизнеса, который обычно не обменивается информацией с пользователями.

Проверка организации : Это средний уровень проверки. Он проверяет не только право собственности на домен, но и сведения об организации, такие как имя и местонахождение. Этот уровень идеально подходит для бизнес-сайтов с формами и функциями захвата лидов.

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

Один домен : Обеспечивает защиту одного поддомена. Например, SSL-сертификат, приобретенный для johndoe.com, нельзя использовать для поддоменов, таких как blog.johndoe.com

Подстановочный знак : обеспечивает защиту неограниченного количества поддоменов одного домена. Например, SSL-сертификат, приобретенный для johndoe. com, можно применять к любым поддоменам, таким как blog.johndoe.com или shop.johndoe.com.

Многодоменный : Обеспечивает защиту до 100 доменов с помощью одного SSL-сертификата. SSL-сертификат, приобретенный, например, для johndoe.com, можно применить к другим доменам, таким как janedoe.com.

Центр сертификации (ЦС) — это организация, выпускающая сертификаты SSL. В мире действуют десятки 50 ЦС, но лишь немногие из них владеют большей частью мирового рынка SSL. Эти более крупные игроки включают GoDaddy и GlobalSign.

Источник изображения: О SSL

Вы хотите выбрать авторитетный центр сертификации, который может предоставить необходимый вам тип SSL-сертификата, а также в соответствии с вашим бюджетом и бизнес-целями.

Запрос на подпись сертификата (CSR) — это файл, который должен быть создан на вашем веб-сервере перед тем, как вы запросите SSL-сертификат из ЦС. ЦС затем будет использовать информацию в этом файле для выпуска вашего SSL-сертификата.

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

Теперь, когда вы сгенерировали CSR, следующий шаг — перейти на веб-сайт выбранного вами ЦС и приобрести нужный тип SSL-сертификата.

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

В зависимости от типа приобретаемого вами SSL-сертификата центру сертификации может потребоваться от пары часов до нескольких дней для проверки ваших данных и выдачи SSL-сертификата вашего сайта.

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

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

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

Да, можно. Большинство ведущих хостинг-провайдеров, включая Bluehost, HostGator и InMotion, предоставляют вам бесплатный SSL-сертификат как часть вашего хостинг-пакета.

Показательный пример: Bluehost. Когда вы зарегистрируете учетную запись хостинга в Bluehost, вы обнаружите, что Let’s Encrypt SSL автоматически включается в ваш пакет. Чтобы активировать сертификат SSL, просто:

  1. Перейдите в панель управления Bluehost
  2. Перейдите к Мои сайты > Управление сайтом

3. На вкладке Безопасность включите сертификат SSL переключатель все, что нужно

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