- Почему?
- Что такое сертификат ssl? как работает ssl?
- Что такое центр сертификации
- Что такое ssl-сертификат? он мне вообще нужен? — meduza
- Apache
- Nginx
- Organization validation
- Ssl сертификат
- Ssl-сертификат
- Windows (iis)
- Бесплатный способ получить tls сертификат безопасности
- В чем разница между tls и ssl?
- Вариант 1: создать csr
- Вариант 2. создание csr для существующего закрытого ключа
- Вариант 4: генерация самоподписанного(self-signed) сертификата
- Вариант 5: генерация самоподписанного сертификата из существующего закрытого ключа и csr
- Где получить ssl-сертификат
- Где получить сертификат ssl?
- Для чего нужен ssl-сертификат?
- Закрытый ключ
- Зашифровать незашифрованный закрытый ключ
- История версий сертификатов шифрования
- Как найти свой ранее установленный закрытый ключ?
- Как переместить ssl-сертификат с сервера windows на сервер, отличный от windows?
- Как получить ssl сертификат безопасности
- Как проверить свой csr, ssl-сертификат и ключ
- Как скопировать содержимое файла csr
- Как создать сертификат ssl
- Как установить ssl-сертификат для домена?
- Какие данные содержит в себе ssl сертификат
- Какие существуют виды ssl сертификатов шифрования
- Команды openssl для конвертации csr
- Конвертировать der в pem
- Конвертировать pem в der
- Назначение domain validation — dv
- Назначение organization validation — ov
- Преобразовать pem csr и закрытый ключ в pkcs12 (.pfx .p12)
- Принцип работы tls и ssl
- Проверить версию openssl
- Проверка ssl-сертификата на сайте
- Проверка домена (dv ssl – domain validation)
- Проверьте, совпадают ли сертификат и закрытый ключ
- Продление сертификата – не используйте старые csr повторно
- Разновидности ssl-сертификатов
- Расшифровать зашифрованный закрытый ключ
- Система не извлекает закрытый ключ автоматически
- Типы ssl сертификатов шифрования
- Типы ssl-сертификатов
- Уровни проверки ssl-сертификатов
- Установка openssl в debian и ubuntu
- Установка openssl в red hat и centos
- Установка соединения ssl/tls на уровне сетевых пакетов
- Этапы установки соединения ssl/tls
- Расширенная проверка (ev ssl – extended validation)
- Extended validation
- Заключение
Почему?
😪Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.
Что такое сертификат ssl? как работает ssl?
Сертификат Secure Socket Layer (SSL) – это протокол безопасности, который защищает данные между двумя компьютерами с использованием шифрования.
Проще говоря, сертификат SSL – это файл данных, который в цифровом виде связывает криптографический ключ с сервером или доменом, а также с названием и местонахождением организации.
Как правило, сертификаты SSL используются на веб-страницах, которые передают и получают конфиденциальные данные конечного пользователя, такие как номер социального страхования, данные кредитной карты, домашний адрес или пароль. Онлайн формы оплаты являются хорошим примером и обычно шифруют вышеупомянутую деликатную информацию с использованием 128 или 256-битной технологии SSL.
Сертификаты SSL обеспечивают идентификацию удаленного компьютера, чаще всего сервера, но также подтверждают идентификацию вашего компьютера с удаленным компьютером для установления безопасного соединения. Обеспечение безопасности в Интернете всегда было улицей с двусторонним движением, и благодаря SSL-шифрованию сервер «пожимает руку» вашему персональному компьютеру, и обе стороны знают, с кем они общаются.
Что такое центр сертификации
Что такое CA — Certification Authority или центр сертификации, читайте по ссылке слева, я подробно рассказал об этом там.
Что такое ssl-сертификат? он мне вообще нужен? — meduza
Каждый пользователь, заходя на любой сайт, оставляет о себе много информации. Если на таком сайте не стоит SSL-сертификат, то данные, которые вводит пользователь, можно украсть. Поэтому прежде всего защищаться нужно интернет-магазинам, банкам, платежным системам, соцсетям, форумам — всем, кто обрабатывает персональные данные и проводит финансовые транзакции.
Да, в том числе. С незащищенного сайта можно перехватить финансовую информацию, данные вашего аккаунта, содержание переписки и прочее. Нешифрованную информацию может перехватить недобросовестный поставщик интернет-услуг, хостер сайта или же злоумышленник, который подключен вместе с вами к одной вайфай-сети. Если сайт не защищен, то интернет-провайдер может размещать на нем свою рекламу или же следить за посещением сайтов и собирать информацию, чтобы таргетировать рекламу и продавать эти данные сторонним компаниям. Браузеры, поисковики и в особенности компания Google по-своему борются с незащищенными сайтами: например, такие страницы понижают в поисковой выдаче. А еще перед переходом по ссылке на такой сайт может выводиться предупреждающий экран. Кроме того, SSL-сертификат не позволяет перенаправлять пользователей на подменный ресурс, а самим сайтам помогает не нарушать федеральный закон № 152.
SSL-сертификатов несколько видов. Во-первых, они отличаются по количеству доменов и субдоменов, для которых они могут использоваться. Во-вторых, по тому, как именно сайт будет проверяться, — тут есть три варианта:
- Первый — DV (domain validation) SSL — подтверждает домен, а также шифрует и защищает данные при передаче с помощью протокола https. Установить его себе на сайт могут как физические лица, так и организации. Выпускается он, как правило, почти мгновенно (точно не дольше 3 часов), после чего на сайте появляется значок замочка (см. пункт 2) и сайт становится защищенным.
- Второй — OV (organization validation) SSL — кроме защиты информации гарантируется принадлежность домена конкретной организации. Сертификат выдается только юридическим лицам с подтвержденным номером телефона (перед его выпуском в организацию звонят). На сайте с таким сертификатом пользователь может найти информацию об организации — владельце сайта, обычно просто щелкнув по иконке замка. Выпускается он в течение 3 дней.
- Третий — EV (extended validation) — то же, что и OV, только проверяется уже и налоговая, и коммерческая деятельность компании, причем более детально. На сайте рядом с URL появляется название компании. Выпускается в течение 5 дней.
Apache
При использовании библиотеки OpenSSL в Apache закрытый ключ по умолчанию сохраняется в /usr/local/ssl. Запустите openssl version –a, команду OpenSSL, которая определяет, какую версию OpenSSL вы используете.
Выходные данные будут отображать каталог, который содержит закрытый ключ. Смотрите пример выходных данных ниже:
OpenSSL 1.0.2g 1 Dec 2021 built on: reproducible build, date unspecified platform: debian-amd64 options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx) compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS - D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector- strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,- Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int - DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 - DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM - DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM OPENSSLDIR: "/usr/lib/ssl"
Последняя строка OPENSSLDIR определяет путь к файлу. В приведенном примере это местоположение по умолчанию /usr/lib/ssl.
Nginx
Вы сможете найти местоположение личного ключа вашего сервера в файле виртуального хоста вашего домена.
https://www.youtube.com/watch?v=t9BO9ARYCDo
Перейдите к местоположению корневого сервера сайта (обычно это каталог /var/www/) и откройте основной файл конфигурации сайта. Найдите директиву ssl_certificate_key, которая предоставит путь к файлу закрытого ключа.
Если вы не можете найти директиву ssl_certificate_key, возможно, существует отдельный файл конфигурации для деталей SSL. Ищите что-нибудь вроде ssl.conf.
Organization validation
OV-сертификат подтверждает бизнес-статус организации и вызывает куда больше доверия пользователей, чем DV-сертификат. Данный тип сертификата хорошо подойдёт для онлайн-магазина и другого небольшого интернет-бизнеса.
Сертификат уровня защиты OV:
- обеспечивает средний уровень защиты;
- выдаётся только юридическим лицам;
- для регистрации необходимо предоставить копии документов организации, счёт телефонной компании с указанным названием организации и номером телефона её владельца;
- выпускается в течение 1-5 дней;
- обойдётся примерно от 4 000 рублей до 50 000 рублей в год.
Ssl сертификат
Когда вам нужно проверить сертификат, дату его истечения и кто его подписал, используйте следующую команду OpenSSL:
openssl x509 -in server.crt -text –noout
Ssl-сертификат
SSL-сертификат – это своего рода уникальная цифровая подпись вашего сайта. Такой сертификат нужен, в первую очередь, банкам, платежным системам и другим организациям, работающим с персональными данными, – для защиты транзакций и предотвращения несанкционированного доступа к информации.
Так, если вы являетесь организацией и хотите использовать наш плагин для сбора пожертвований «Онлайн-Лейку», то для подключения платежной системы Яндекс.Деньги необходимо использование SSL-сертификата.
SSL-сертификат содержит следующую информацию:
- доменное имя, на которое оформлен SSL-сертификат;
- юридическое лицо, которое владеет сертификатом;
- физическое местонахождение владельца сертификата (город, страна);
- срок действия сертификата;
- реквизиты компании-поставщика SSL-сертификатa.
SSL-cертификат подтверждает, что домен принадлежит реальной компании и что его владелец вправе пользоваться секретным ключом на законных основаниях.
Windows (iis)
На серверах, работающих под управлением Windows Internet Information Services, операционная система сохраняет закрытый ключ в скрытой папке, так же как любая обычная ОС Windows хранит важные системные данные.
Однако, экспортируя файл .pfx, вы можете получить закрытый ключ и сертификаты. Для этого выполните следующие действия:
- Откройте консоль управления MMC (Microsoft Management Console).
- Разверните дерево Сертификаты (локальный компьютер), расположенное в корне консоли.
- Ваш сертификат находится либо в личной папке, либо в папке веб-хостинга. Вы можете идентифицировать каждый сертификат по его Common name (домену)
- Щелкните правой кнопкой мыши сертификат, который вы хотите экспортировать, и выберите Все задачи -> Экспорт.
- Следуйте инструкциям мастера для экспорта файла
.pfx
.
Теперь у вас есть то, что вам нужно, если вы хотите сохранить резервную копию или установить сертификат на другом сервере Windows.
Если вам нужно установить сертификат на другом сервере, который не работает под управлением Windows (например, Apache), вам необходимо сконвертировать файл .pfx и разделить файлы .key и .crt или .cer. Вы можете сделать это с OpenSSL.
Бесплатный способ получить tls сертификат безопасности
Этот способ, подразумевает использование самоподписного сертификата (self-signed), его можно сгенерировать на любом веб-сервере с ролью IIS или Apache. Если рассматривать современные хостинги, то в панелях управления, таких как:
там это штатный функционал. Самый большой плюс в самоподписных сертификатах шифрования, это то, что они бесплатные и начинаются, сплошные минусы, так как никто кроме вас не доверяет этому сертификату, вы наверняка видели в браузерах вот такую картину, где сайт ругается на сертификат безопасности.
Если у вас самоподписный сертификат, используется исключительно для внутренних целей, то это нормально, а вот для публичных проектов, это будет огромный минус, так как ему никто не доверяет и вы лишитесь большого числа клиентов или пользователей, которые у видя ошибку сертификата безопасности в браузере, сразу его закроют.
Давайте смотреть как можно получить ssl сертификат безопасности, для этого формируется запрос на выпуск сертификата, называется он CSR запрос (Certificate Signing Request). Делается это чаще всего у специальной компании в веб форме, которая спросит вас несколько вопросов, про ваш домен и вашу компанию.
Все эти не понятные данные легко можно интерпретировать специальными CSR Decoder сайтами.
Состав CSR запроса
В чем разница между tls и ssl?
Её нет! Transport Layer Security (TLS) – это обновленная версия Secure Socket Layer (SSL). Даже при том, что большинство безопасных соединений через протоколы TLS, люди продолжают называть это SSL.
Вариант 1: создать csr
Первое, что нужно сделать, – это создать 2048-битную пару ключей RSA локально. Эта пара будет содержать как ваш закрытый, так и открытый ключ. Вы можете использовать инструмент Java key или другой инструмент, но мы будем работать с OpenSSL.
Чтобы создать открытый и закрытый ключ с запросом на подпись сертификата (CSR), выполните следующую команду OpenSSL:
openssl req –out certificatesigningrequest.csr -new -newkey rsa:2048 -nodes -keyout privatekey.key
Что эта команда означает:
openssl
– активирует программное обеспечение OpenSSLreq
– указывает, что мы хотим CSR–out
– указывает имя файла, в котором будет сохранен ваш CSR. У нас в примере этоcertificatesigningrequest.csr
–new –newkey
– создать новый ключrsa:2048
– cгенерировать 2048-битный математический ключ RSA–nodes
– нет DES, то есть не шифровать закрытый ключ в PKCS#12 файл–keyout
– указывает домен, для которого вы генерируете ключ
Далее ваша система должна запустить текстовую анкету для заполнения, которую мы описывали в таблице выше:
Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []:
После завершения работы программы вы сможете найти файл CSR в вашем рабочем каталоге. Запрос на подпись сертификата, сгенерированный с помощью OpenSSL, всегда будет иметь формат файла .csr. Чтобы найти в папке все файлы этого формата используйте команду
ls *.csr
Тут будет список всех сертификатов, останется только найти тот, что мы только что сгенерировали.
Также вы можете открыть файл .csr в текстовом редакторе, например nano, чтобы просмотреть сгенерированный буквенно-цифровой код.
sudo nano your_domain.csr
После того, как вы сгенерировали CSR с парой ключей, сложно увидеть, какую информацию она содержит, поскольку она не будет в удобочитаемом формате. Вы можете легко декодировать CSR на своем сервере, используя следующую команду OpenSSL:
openssl req -in server.csr -noout -text
Далее можно декодировать CSR и убедиться, что он содержит правильную информацию о вашей организации, прежде чем он будет отправлен в центр сертификации. В Интернете существует множество CSR-декодеров, которые могут помочь вам сделать то же самое, просто скопировав содержимое файла CSR, например sslshopper.
Вариант 2. создание csr для существующего закрытого ключа
Рекомендуется выдавать новый закрытый ключ всякий раз, когда вы генерируете CSR. Если по какой-либо причине вам необходимо сгенерировать запрос на подпись сертификата для существующего закрытого ключа, используйте следующую команду OpenSSL:
openssl req -out CSR.csr -key privateKey.key -new
Вариант 4: генерация самоподписанного(self-signed) сертификата
Самозаверяющий сертификат обычно используется для сред тестирования и разработки, а также в интрасети. Давайте создадим самозаверяющий сертификат, используя следующую команду OpenSSL:
openssl req -newkey rsa:2048 -nodes -keyout domain.key-x509 -days 365 -out domain.crt
Параметр –days установлен на 365, что означает, что сертификат действителен в течение следующих 365 дней. Параметр x509 указывает, что это будет самозаверяющий сертификат. Временный CSR генерируется, и он используется только для сбора необходимой информации. Если вы не хотите защищать свой закрытый ключ паролем, вы можете добавить параметр –nodes.
Центры сертификации не проверяют самоподписанные сертификаты. Таким образом, они не так безопасны, как проверенные сертификаты. Если ЦС не подписал сертификат, каждый основной браузер отобразит сообщение об ошибке «Ненадежный сертификат», как показано на рисунке ниже.
Вариант 5: генерация самоподписанного сертификата из существующего закрытого ключа и csr
Если у вас уже есть CSR и закрытый ключ и вам нужно создать самозаверяющий сертификат, используйте следующую команду:
openssl x509 -signkey domain.key -in domain.csr -req -days 365 -out domain.crt
Параметр –days установлен на 365, что означает, что сертификат действителен в течение следующих 365 дней.
Где получить ssl-сертификат
Для получения сертификата необходимо обратиться в компании, которые выдают SSL-сертификаты. Например, в RU-CENTER– крупнейший регистратор доменов и один из ведущих хостинг-провайдеров в России. Стоимость SSL-сертификата на 1 год может составлять от 2600 до 5000 рублей. Часто SSL-сертификат может входить в стоимость хостинга сайта.
Мы также писали про бесплатный SSL для любого сайта от Cloudflare — возможно, именно такой вариант подойдет для вашего сайта.
Где получить сертификат ssl?
Сертификаты SSL проверяются и выдаются Центром сертификации (CA – Certificate Authorities). Вы подаете заявку, генерируя CSR (Certificate Signing Request – запрос на получение сертификата) с парой ключей на вашем сервере, которая в идеале будет содержать сертификат SSL. CSR содержит важные организационные детали, которые CA проверяет.
Для чего нужен ssl-сертификат?
Оставим все сложные технические моменты, и попробуем разобраться, каким проектам нужен SSL-сертификат, а какие проекты могут обойтись и без него.
Как вы поняли, главная задача SSL-сертификата — безопасность передаваемых данных. Особенно этот момент чувствителен для финансового сектора, и сайтов, которые оперируют личными или даже конфиденциальными данными пользователей. Однако существуют и информационные сайты, которые создают контент и никак не работают с персональными данными. Нужен ли SSL им? Давайте рассмотрим основные преимущества установки SSL-сертификата и недостатки.
Закрытый ключ
Закрытый ключ кодируется и создается в формате PEM на основе Base-64, который не читается человеком. Вы можете открыть его в любом текстовом редакторе, но все, что вы увидите, это несколько десятков строк, которые кажутся случайными символами, заключенными в открывающие и закрывающие заголовки. Ниже приведен пример закрытого ключа:
-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCVqGpH2S7F0CbEmQBgmbiDiOOGxhVwlG yY/6OBQoPKcx4Jv2h vLz7r54ngjaIqnqRNP7ljKjFLp5zhnAu9GsdwXbgLPtrmMSB MVFHTJvKjQ eY9p dWA3NbQusM9uf8dArm 3VrZxNHQbVGXOIAPNHTO08cZHMSqIDQ6OvLma7wIDAQAB AoGAbxKPzsNh826JV2A253svdnAibeSWBPgl7kBIrR8QWDCtkH9fvqpVmHa 6pO5 5bShQyQSCkxa9f2jnBorKK4 0K412TBM/SG6Zjw DsZd6VuoZ7P027msTWQrMBxg Hjgs7FSFtj76HQ0OZxFeZ8BkIYq0w 7VQYAPBWEPSqCRQAECQQDv09M4PyRVWSQM S8Rmf/jBWmRnY1gPPEOZDOiSWJqIBZUBznvOPOOQSH6B vee/q5edQA2OIaDgNmn AurEtUaRAkEAn7/65w Tewr89mOM0RKMVpFpwNfGYAj3kT1mFEYDq iNWdcSE6xE 2H0w3YEbDsSayxc36efFnmr//4ljt4iJfwJAa1pOeicJhIracAaaa6dtGl/0AbOe f3NibugwUxIGWkzlXmGnWbI3yyYoOta0cR9fvjhxV9QFomfTBcdwf40FgQJAH3MG DBMO77w8DK2QfWBvbGN4NFTGYwWg52D1Bay68E759OPYVTMm4o/S3Oib0Q53gt/x TAUq7IMYHtCHZwxkNQJBAORwE 6qVIv/ZSP2tHLYf8DGOhEBJtQcVjE7PfUjAbH5 lr 9qUfv0S13gXj5weio5dzgEXwWdX2YSL/asz5DhU= -----END RSA PRIVATE KEY-----
В большинстве случаев вам не нужно импортировать код закрытого ключа в файловую систему сервера, так как он будет создан в фоновом режиме, пока вы создаете CSR, а затем автоматически сохраняется на сервере. Во время установки SSL-сертификата система извлекает ключ.
Зашифровать незашифрованный закрытый ключ
Следующая команда OpenSSL возьмет незашифрованный закрытый ключ и зашифрует его с помощью определенной вами парольной фразы.
openssl rsa -des3 -in unencrypted.key -out encrypted.key
Определите ключевую фразу для шифрования закрытого ключа.
История версий сертификатов шифрования
Всегда нужно знать историю, как сертификат шифрования эволюционировал и какие у него выходили версии. Так как зная это и принцип работы, будет проще искать решение проблем.
- SSL 1.0 > данная версия в народ так и не попала, причины, возможно нашли его уязвимость
- SSL 2.0 > эта версия ssl сертификата была представлена в 1995 году, на стыке тысячелетий, она так же была с кучей дыр безопасности, сподвигнувшие компанию Netscape Communications к работе над третье версией сертификата шифрования
- SSL 3.0 > пришел на смену SSL 2.0 в 1996 году. Стало это чудо развиваться и в 1999 году крупные компании Master Card и Visa купили коммерческую лицензию на его использование. Из 3.0 версии появился TLS 1.0
- TLS 1.0 > 99 год, выходит обновление SSL 3.0 под названием TLS 1.0, проходит еще семь лет, интернет развивается и хакеры не стоят на месте, выходит следующая версия.
- TLS 1.1 > 04.2006 это его отправная точка, было исправлено несколько критичных ошибок обработки, а так же появилась защита от атак, где делался режим сцепления блоков шифротекста
- TLS 1.2 > появился в августе 2008
- TLS 1.3 > появится в конце 2021 года
Как найти свой ранее установленный закрытый ключ?
Если дело в том, что ваш сертификат уже установлен, выполните следующие действия, которые помогут вам найти свой закрытый ключ в популярных операционных системах.
Как переместить ssl-сертификат с сервера windows на сервер, отличный от windows?
Чтобы переместить сертификат с сервера Windows на сервер, отличный от Windows, необходимо извлечь закрытый ключ из файла .pfx с помощью OpenSSL.
Как получить ssl сертификат безопасности
Давайте теперь поймем где взять сертификат шифрования, или как получить ssl сертификат безопасности. Способов конечно несколько, есть как платные, так и бесплатные.
Как проверить свой csr, ssl-сертификат и ключ
Как мы уже упоминали, было бы разумно проверить информацию, представленную в CSR, прежде чем подавать заявку на сертификат. Используйте следующие команды для проверки вашего запроса на подпись сертификата, SSL-сертификата и ключа:
Как скопировать содержимое файла csr
Откройте каталог, в котором находится ваш CSR-файл. Введите следующую команду:
sudo cat domain.csr
Замените domain параметром FQDN вашего CSR. Эта команда отобразит содержимое файла CSR. Скопируйте весь контент, начиная с BEGIN CERTIFICATE REQUEST и заканчивая END CERTIFICATE REQUEST.
Как создать сертификат ssl
То, как сгенерировать запрос на подпись сертификата (CSR), зависит исключительно от платформы, которую вы используете, и конкретного выбранного вами инструмента.
Мы будем генерировать CSR с использованием OpenSSL.
OpenSSL – это широко используемый инструмент для работы с CSR-файлами и SSL-сертификатами, который можно загрузить с официального сайта OpenSSL. Это инструмент реализации с открытым исходным кодом для SSL/TLS, который используется примерно на 65% всех активных интернет-серверов, что делает его неофициальным отраслевым стандартом.
Как установить ssl-сертификат для домена?
Если у вас выделенный сервер, то вам придется устанавливать сертификат самостоятельно. На выделенном сервере вы можете получить бесплатный SSL-сертификат для сайта от Let’s Encrypt. И то, и другое легко сделать с помощью ISPmanager. В первом случае вам необходимо сформировать CSR-запрос, который отправляется в центр сертификации, после чего уже ввести полученные данные из центра сертификации в соответствующие поля.
Какие данные содержит в себе ssl сертификат
В сертификате хранится следующая информация:
Какие существуют виды ssl сертификатов шифрования
Основных видов сертификатов безопасности три:
Команды openssl для конвертации csr
Если вы работаете с серверами Apache, запросы на подпись сертификатов (CSR) и ключи хранятся в формате PEM. Но что, если вы хотите перенести CSR на сервер Tomcat или Windows IIS? Вам придется конвертировать стандартный файл PEM в файл PFX. Следующие команды помогут вам сделать это.
Примечание: Используйте параметр -nodes
, если вы не хотите шифровать файл .key
. Если вы не используете этот параметр, вам нужно будет указать пароль.
Конвертировать der в pem
Если вам нужно преобразовать файл .der в PEM, используйте следующую команду OpenSSL:
openssl x509 -inform der -in domain.der -out domain.crt
Конвертировать pem в der
DER – это двоичный формат, обычно используемый с Java. Чтобы преобразовать файл ASCII PEM в DER, используйте следующую команду OpenSSL:
openssl x509 -in domain.crt -outform der -out domain.der
Назначение domain validation — dv
И так сертификаты шифрования, подтверждающие только домен ресурса, это самые распространенные в сети сертификаты, их делают всех быстрее, автоматически. Когда вам нужно проверить такой сертификат безопасности, отправляется email с гиперссылкой, кликая по которой подтверждается выпуск серта.
approver email так же имеет требования, логично, что если вы заказываете сертификаты шифрования для домена, то и электронный ящик должен быть из него, а не mail или rambler, либо он должен быть указан в whois домена и еще одно требование название approver email, должно быть по такому шаблону:
Я обычно беру ящик postmaster@ваш домен
Сертификат tls-ssl подтверждающие доменное имя выпускаются, когда CA произвел валидацию того, что заказчик обладает правами на доменное имя, все остальное, что касается организации в сертификате не отображается.
Назначение organization validation — ov
Сертификаты шифрования tls-ssl, будет содержать название вашей организации, его получить частное лицо просто не сможет, его культурно пошлют регистрировать ИП. Делается он от 3 до десяти рабочих дней, все зависит от центра сертификации, который его будет выпускать.
Преобразовать pem csr и закрытый ключ в pkcs12 (.pfx .p12)
Файлы FKCS12 используются для экспорта или импорта сертификатов в Windows IIS.
openssl pkcs12 -inkey domain.key -in domain.crt -export -out domain.pfx
Эта команда возьмет закрытый ключ и CSR и преобразует его в один файл .pfx. Вы можете настроить экспортную фразу-пароль, но также можете оставить это поле пустым. Обратите внимание, что, объединив строки символов сертификата в конец одного файла PEM, вы можете экспортировать цепочку сертификатов в формат файла .pfx.
Принцип работы tls и ssl
Давайте разбираться как работает протоколы SSL и TLS. Начнем с основ, все сетевые устройства имеют четко прописанный алгоритм общения друг с другом, называется он OSI, который порезан на 7 уровней. В ней есть транспортный уровень отвечающий за доставку данных, но так как модель OSI это некая утопия, то сейчас все работаю по упрощенной модели TCP/IP, из 4 уровней.
Список можно продолжать очень долго, так их более 200 наименований. Ниже представлена схема сетевых уровней.
Ну и схема стека SSL/TLS, для наглядности.
Проверить версию openssl
Эта команда отображает версию OpenSSL, и ее параметры, с которыми она была скомпилирована:
openssl version -a
Получим примерно такой вывод:
OpenSSL 1.0.1f 6 Jan 2021 built on: Mon Apr 7 21:22:23 UTC 2021 platform: debian-amd64 options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx) compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM OPENSSLDIR: "/usr/lib/ssl"
Проверка ssl-сертификата на сайте
Для проверки корректности установки SSL-сертификата, а также его корректного отображения в большинстве браузеров воспользуйтесь бесплатным сервисом. Если с вашим SSL-сертификатом все хорошо, сервис выдаст аналогичный результат.
Проверка домена (dv ssl – domain validation)
Этот тип сертификата SSL идеально подходит для защиты блогов, приложений социальных сетей и личных веб-сайтов. Центр сертификации не гарантирует идентичность организации, и проверяется только владение доменом.
Проверьте, совпадают ли сертификат и закрытый ключ
Для проверки вам нужно вывести контрольные суммы md5 и сравнить их. Выполните следующую команду:
openssl x509 -noout -modulus -in server.crt| openssl md5
openssl rsa -noout -modulus -in server.key| openssl md5
Продление сертификата – не используйте старые csr повторно
То, что некоторые веб-серверы позволяют использовать старые CSR для обновления сертификатов, не означает, что вы должны их использовать. В качестве меры безопасности всегда генерируйте новый CSR и закрытый ключ при обновлении сертификата. Привязка к одному и тому же секретному ключу – это дорога, вымощенная уязвимостями безопасности.
Также рекомендуется обновить SSL-сертификат до истечения срока его действия. В противном случае потребуется покупать новый сертификат.
Разновидности ssl-сертификатов
Существует несколько типов SSL-сертификатов:
SSL-сертификаты с проверкой домена (Domain Validation) – это сертификаты начального уровня, являются самыми распространенными в мире, а скорость выдачи таких сертификатов варьируется от 2 до 10 минут, зависит от бренда. Чтобы получить такой сертификат, не требуется специальных документов. Такие сертификаты подойдут для небольших сайтов и маленьких проектов, когда нет необходимости в большом доверии со стороны клиентов и посетителей сайта. Нужно подтвердить владение доменом:
Расшифровать зашифрованный закрытый ключ
Следующая команда OpenSSL возьмет зашифрованный закрытый ключ и расшифрует его.
openssl rsa -in encrypted.key -out decrypted.key
При появлении запроса введите кодовую фразу для расшифровки закрытого ключа.
Система не извлекает закрытый ключ автоматически
Некоторые системы не автоматизируют процедуру извлечения закрытого ключа. Кроме того, если вам нужно установить существующий сертификат на другом сервере, вы, очевидно, не можете ожидать, что он получит закрытый ключ. Основная сложность здесь заключается в том, как найти точное местоположение ключа.
Типы ssl сертификатов шифрования
Следующим важным вопросом, будет какие типы SSL – TLS сертификатов шифрования существуют, и их отличия и стоимость.
- Обычные SSL сертификаты > это самые распространенные сертификаты, делаются автоматически, для подтверждения только домена. Стоят в среднем 18-22 доллара.
- SGC сертификаты > это SSL – TLS сертификаты с поддержкой, более высокого уровня шифрования. Они в основном идут для старперных браузеров, у которых есть поддержка только 40-56 битное шифрование. SGC принудительно повышает уровень шифрования , до 128 бит, что в несколько раз выше. Так как XP доживает свои последние годы, скоро SGC сертификаты шифрования не будут нужны. Стоит это чудо около 300-ста баксов за год.
- Wildcard сертификаты > Требуются, для субдоменов вашего основного домена. Простой пример мой блог pyatilistnik.org, если я покупаю Wildcard, то имею возможно его вешать на все домены 4 уровня у себя, *.pyatilistnik.org. Стоимость Wildcard сертификатов шифрования варьируется от количества поддоменов, от 190 баксов.
- SAN сертификаты > Допустим у вас есть один сервер, но на нем хостятся много разных доменов, вот SAN сертификат можно повесить на сервер и все домены будут использовать его, стоит от 400 баксов в год.
- EV сертификаты > про расширенные мы уже все обсудили выше, стоят от 250 баксов в год.
- Сертификаты c поддержкой IDN доменов
список сертификатов, у которых есть такая поддержка, IDN доменов:
Типы ssl-сертификатов
Убедитесь, что вы выбрали центр сертификации, который поддерживает необходимый вам тип сертификата. Для вашего удобства ниже приведено описание каждого типа сертификата:
Уровни проверки ssl-сертификатов
Центры сертификации имеют различные уровни проверки сертификатов в ответ на растущий спрос на сертификаты. Некоторые организации используют SSL только для шифрования, в то время как другие хотят показать своим клиентам, что они являются доверенной компанией. Различные потребности привели к различным уровням проверки сертификата.
Установка openssl в debian и ubuntu
Сначала проверим, установлена ли у нас утилита OpenSSL при помощи команды:
dpkg -l |grep openssl
Если пакет OpenSSL установлен, мы получим следующий результат:
ii libgnutls-openssl27:amd64 2.12.23-12ubuntu2.4 amd64 GNU TLS library - OpenSSL wrapper ii openssl 1.0.1f-1ubuntu2.16 amd64 Secure Sockets Layer toolkit - cryptographic utility
Если вы не видите такого результата, выполните следующую команду для установки OpenSSL:
apt-get install openssl
Установка openssl в red hat и centos
Red Hat (версия 7.0 и более поздние) должна поставляться с предустановленной ограниченной версией OpenSSL. Он предлагает только ограниченную поддержку для IDEA, RC5 и MDC2, поэтому вы можете установить недостающие функции.
Чтобы проверить, установлен ли OpenSSL на сервере yum (например, Red Hat или CentOS), выполните следующую команду:
rpm -qa | grep -i openssl
Эта команда должна вернуть следующий результат:
openssl-1.0.1e-48.el6_8.1.x86_64 openssl-devel-1.0.1e-48.el6_8.1.x86_64 openssl-1.0.1e-48.el6_8.1.i686
Если ваш формат вывода отличается, это означает, что OpenSSL не установлен на вашем сервере. Выполните следующую команду для установки OpenSSL:
yum install openssl openssl-devel
Установка соединения ssl/tls на уровне сетевых пакетов
На иллюстрации, черные стрелки показывают сообщения, которые отправляются открытым текстом, синие – это сообщения, подписанные открытым ключом, а зеленые – это сообщения, отправленные с помощью шифрования объёмных данных и того MAC, о которых стороны договорились в процессе переговоров.
Ну и подробно про каждый этап обмена сетевых сообщений протоколов SSL/TLS.
- 1. ClientHello > пакет ClientHello делает предложение со списком поддерживаемых версий протоколов, поддерживаемые наборы шифров в порядке предпочтения и список алгоритмов сжатия (обычно NULL). Еще от клиента приходит случайное значение 32 байта, его содержимое указывает отметку текущего времени, его позже будут использовать для симметричного ключа и идентификатора сессии, который будет иметь значение ноль, при условии, что не было предыдущих сессий.
- 2. ServerHello > пакет ServerHello, отсылается сервером, в данном сообщении идет выбранный вариант, алгоритма шифрования и сжатия. Тут так же будет случайное значение 32 байта (отметка текущего времени), его также используют для симметричных ключей. Если ID текущей сессии в ServerHello имеет значение ноль, то создаст и вернёт идентификатор сессии. Если в сообщении ClientHello был предложен идентификатор предыдущей сессии, известный данному серверу, то протокол рукопожатия будет проведён по упрощённой схеме. Если клиент предложил неизвестный серверу идентификатор сессии, сервер возвращает новый идентификатор сессии и протокол рукопожатия проводится по полной схеме.
- 3.Certificate (3) > в данном пакете сервер отправляет клиенту свой открытый ключ (сертификат X.509), он совпадает с алгоритмом обмена ключами в выбранном наборе шифров. Вообще можно сказать в протоколе, запроси открытый ключ в DNS, запись типа KEY/TLSA RR. Как я писал выше этим ключом будет шифроваться сообщение.
- 4. ServerHelloDone > Сервер говорит, что сессия установилось нормально.
- 5. ClientKeyExchange > Следующим шагом идет отсылка клиентом ключа pre-master key, используя случайные числа (или отметки текущего времени) сервера и клиента. Данный ключ (pre-master key) как раз и шифруется открытым ключом сервера. Данное сообщение может расшифровать только сервер, с помощью закрытого ключа. Теперь оба участника вычисляют общий секретный ключ master key из ключа pre-master.
- 6. ChangeCipherSpec — клиент > смысл пакета, указать на то, что теперь весь трафик, который идет от клиента, будет шифроваться, с помощью выбранного алгоритма шифрования объёмных данных и будет содержать MAC, вычисленный по выбранному алгоритму.
- 7. Finished — клиент > Это сообщение содержит все сообщения, отправленные и полученные во время протокола рукопожатия, за исключением сообщения Finished. Оно шифруется с помощью алгоритма шифрования объемных данных и хэшируется с помощью алгоритма MAC, о которых договорились стороны. Если сервер может расшифровать и верифицировать это сообщение (содержащее все предыдущие сообщения), используя независимо вычисленный им сеансовый ключ, значит диалог был успешным. Если же нет, на этом месте сервер прерывает сессию и отправляет сообщение Alert с некоторой (возможно, неконкретной) информацией об ошибке
- 8. ChangeCipherSpec — сервер > пакет, говорит, что теперь весь исходящий трафик с данного сервера, будет шифроваться.
- 9.Finished — сервер > Это сообщение содержит все сообщения, отправленные и полученные во время протокола рукопожатия, за исключением сообщения Finished
- 10. Record Protocol (протокол записи) > теперь все сообщения шифруются ssl сертификатом безопасности
Этапы установки соединения ssl/tls
- Клиент обращается к серверу, устанавливая с ним соединение, далее запрашивается защищенное подключение, тут два варианта, если вы изначально обращаетесь на порт 443, который предназначен для TLS/SSL соединения, или после того как вы установили обычное подключение, клиент делает дополнительный запрос на защищенное соединение.
- Когда идет установка соединения, клиент говорит серверу, какие алгоритмы шифрования ему известны, сервер сравнивает его со своим списком алгоритмов шифрования и находит тот, который поддерживается обоими сторонами. Далее он говорит клиенту, что будет использоваться именно этот метод защиты. По умолчанию сервер будет стараться использовать самый современный алгоритм (SSLv3, TLSv1, TLSv1.1, TLSv1.2)
- После того, как определились с алгоритмами шифрования, сервер передает клиенту свой цифровой сертификат, который подписан вышестоящим, мировым центром сертификации и открытый ключ сервера.
- Клиент проверяет ликвидность полученного сертификата от сервера, для этого он обращается к центру сертификации, который его выдавал, и спрашивает есть ли у тебя такой сертификат, если все нормально, можно продолжать. Тут главное, чтобы сертификат не был отозван и вы доверяли корневому центру сертификации, выдавшим его, по умолчанию в операционной системе Windows, уже есть большое количество корневых сертификатов, которым вы доверяете, и они обновляются при установке новых обновлений в систему.
- Следующим этапом, после получения клиентом нужных ключей, начинается генерация сеансового ключа для защищенного соединения по принципу: Клиентом происходит генерация случайной цифровой последовательности, которую он шифрует с помощью открытого ключа полученного от сервера и отсылает результат шифрования на сервер. Полученный сеансовый ключ расшифровывается сервером с помощью его закрытого ключа, в виду того, что используется асимметричный алгоритм шифрования, то расшифровать последовательность полученную от клиента, может только сервер. Об алгоритмах шифрования мы еще поговорим ниже.
- Все защищенный канал настроен и будет работать до тех пор, пока не будет разорвано соединение.
Вот еще одна красивая и наглядная схема создания защищенного канала.
Расширенная проверка (ev ssl – extended validation)
Центр сертификации проверяет право собственности на домен и проводит тщательное расследование организации, связанной с сертификатом EV. При рассмотрении расширенного запроса проверки соблюдаются строгие правила, и центр сертификации должен проверить следующее:
- Информация об организации соответствует официальным данным
- Физическое, юридическое и эксплуатационное существование субъекта
- Организация имеет исключительные права на использование домена, указанного в сертификате SSL
- Организация надлежащим образом санкционировала выдачу сертификата EV SSL
Extended validation
SSL-сертификаты с расширенным уровнем проверки являются самыми надёжными, но и самыми дорогими. Хорошо подойдут для крупной и серьезной организации, для которой важны престиж и безопасность.
Сертификат уровня EV:
- предлагает самый высокий уровень защиты и наивысший уровень доверия среди других SSL-сертификатов
- выдаётся только юридическим лицам;
- для регистрации необходимы следующие дополнительные документы: свидетельство о постановке на учёт в налоговом органе, уведомление о регистрации юридического лица, извещение о регистрации в качестве страхователя и другие;
- поддерживает кириллические домены;
- выпускается в течение 3-10 дней.
- обойдётся примерно от 10 000 до 100 000 рублей в год.
Также после документальной проверки провайдер может позвонить по официально заявленному телефону организации, совершив тем самым дополнительный этап проверки. Зато после прохождения всего этого документооборота ваш сайт будет обладать самым высоким уровнем доверия, о чём будет свидетельствовать зелёная панелька с названием компании в адресной строке.
По ней пользователи и смогут определить высокий бизнес статус компании, а при нажатии на панель узнать полные сведения об организации. Сертификаты этого типа служат отличной защитой от фишинга: из-за строгих требований верификации, злоумышленники не смогут пройти все этапы проверки, в результате чего “липовые” EV-сертификаты встречаются в крайне редких случаях.
Заключение
Теперь вы знаете, как сгенерировать запрос на подпись сертификата с помощью OpenSSL, а также устранить наиболее распространенные ошибки.