Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия | |||
— | ssl [2025/07/06 12:40] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== SSL сертификат ====== | ||
+ | ~~Title: Что такое SSL сертификат для сайта, почты ~~ | ||
+ | {{htmlmetatags> | ||
+ | metatag-description=(Что такое SSL-сертификат. Бесплатный SSL сертификат. | ||
+ | }} | ||
+ | |||
+ | {{ :: | ||
+ | |||
+ | * Тестирование вашего сертификата [[https:// | ||
+ | |||
+ | **SSL** (Secure Sockets Layer — уровень защищённых сокетов) — криптографический протокол, | ||
+ | |||
+ | Протокол обеспечивает конфиденциальность обмена данными между клиентом и сервером, | ||
+ | |||
+ | Протокол SSL состоит из двух под-протоколов: | ||
+ | |||
+ | * **Аутентификация и обмен ключами.** | ||
+ | SSL поддерживает три типа аутентификации: | ||
+ | |||
+ | ===== Кому и зачем нужен SSL-сертификат ===== | ||
+ | {{:: | ||
+ | |||
+ | Начиная с 2018 года SSL сертификат должен быть установлен на каждом сайте. Если вы запускаете новый сайт, даже это если это просто информационный сайт или блог, на нем должен быть установлен SSL сертификат. В Google наличие или отсутствие SSL сертификата (протокола HTTPS) является одним из факторов ранжирования вашего сайта. | ||
+ | |||
+ | SSL-сертификат нужен для того, чтобы мошенники не могли перехватить личные данные, | ||
+ | |||
+ | SSL-сертификат выгоден для владельца сайта: так вы подтвердите, | ||
+ | |||
+ | ===== SSL-сертификат, | ||
+ | |||
+ | Для работы SSL требуется, | ||
+ | |||
+ | **Центр сертификации** или Удостоверяющий центр (англ. Certification authority, CA) — это организация или подразделение организации, | ||
+ | |||
+ | * Серийный номер сертификата; | ||
+ | * Объектный идентификатор алгоритма электронной подписи; | ||
+ | * Имя удостоверяющего центра; | ||
+ | * Срок годности; | ||
+ | * Имя владельца сертификата (имя пользователя, | ||
+ | * Открытые ключи владельца сертификата (ключей может быть несколько); | ||
+ | |||
+ | * Сертификат также содержит полностью определенное имя домена (FQDN [[RFC]] 821) в строке Common Name. Одна из возможных атак - подмена DNS - будет обнаружена до отправки данных. | ||
+ | |||
+ | ==== Виды SSL- сертификатов ==== | ||
+ | |||
+ | **Выделяют различные виды SSL- сертификатов в зависимости от типа проверки: | ||
+ | * Сертификаты с проверкой домена – подтверждают подлинность доменного имени. Не содержат информации о компании. | ||
+ | * Сертификаты с проверкой компании – содержат информацию не только о домене, | ||
+ | * Сертификаты на домен и поддомены (**Wildcard** SSL) – обеспечивают защиту неограниченного количества субдоменов одним сертификатом. Сертификат выдается на определенное доменное имя и при этом защищает все поддомены. Данные сертификаты могут быть как с проверкой домена, | ||
+ | * Сертификаты с расширенной проверкой организации (Extended Validation SSL (EV SSL)) – обеспечивают наивысшее доверие клиентов. Когда пользователь находится на сайте с EV SSL сертификатом, | ||
+ | < | ||
+ | |||
+ | ===== Бесплатные Центры сертификации ===== | ||
+ | |||
+ | * **Какой центр сертификации вам нужен? | ||
+ | * **Частное использование.** Если вы планируете использовать сертификат только для личных целей, когда он нужен только вам или ограниченному числу пользователей (например, | ||
+ | * **Официальное использование.** Если вам надо поддерживать официальные контакты с внешними пользователями и почтовыми серверами, | ||
+ | |||
+ | **Бесплатный сертификат** (центр выдачи сертификатов) должен поддерживаться браузером, | ||
+ | |||
+ | От сертификата есть польза только если он выдан доверенным центром сертификации(которые встроены в windows) и если он обеспечен обязательствами (обычно от 10.000 у.е.). | ||
+ | Все остальные сертификаты ничем не отличаются от самоподписанного, | ||
+ | |||
+ | **Бесплатные центры сертификации SSL:** | ||
+ | * [[https:// | ||
+ | * [[Let’s Encrypt|Let’s Encrypt]] - бесплатный центр сертификации SSL | ||
+ | * SSL Welcome to CAcert.org - аналогично предыдущему. Дают сертификаты на год, но браузеры ничего не знают об этом поставщике и ругаются так же как и на самоподписанные сертификаты. | ||
+ | * Thawte (основанный, | ||
+ | |||
+ | |||
+ | ===== Файлы сертификатов X.509 ===== | ||
+ | Получение, | ||
+ | |||
+ | * *.cer – сертификат, | ||
+ | * *.der – сертификат, | ||
+ | * *.crt – файл сертификата в формате CER, DER или Netscape. | ||
+ | * *.pem – сертификат в кодировке Base64. Может также включать полный путь удостоверения сертификата и секретный ключ. | ||
+ | * *.p8 – файл, содержащий секретный ключ, защищенный по стандарту PKCS#8. | ||
+ | * *.p12 (в Windows используется расширение *.pfx) – файл сертификата, | ||
+ | |||
+ | ====== Создание и использование самоподписанного (self-signed) SSL сертификата ====== | ||
+ | ===== Создание CA -сертификата ===== | ||
+ | <note important> | ||
+ | Если вы решили самостоятельно выпускать сертификаты, | ||
+ | < | ||
+ | # cp / | ||
+ | # nano openssl.cnf | ||
+ | ... | ||
+ | [ CA_default ] | ||
+ | |||
+ | dir = ./demoCA | ||
+ | # cacert.pem- Это открытый ключ центра сертификации. Он должен находиться в корневых хранилищах ваших хостов, | ||
+ | # чтобы они могли проверить родпись в открытом сертификате (например, | ||
+ | certificate | ||
+ | # cakey.pem - это секретный ключ центра сертификации. Он должен быть хорошо защищен, | ||
+ | # доступ к нему на чтение и запись должен иметь только администратор центра сертификации. | ||
+ | private_key | ||
+ | # Время жизни сертификата (по умолчанию 1 год) | ||
+ | default_days | ||
+ | [ req ] | ||
+ | # длина RSA ключа (по умолчанию 1024 bit). Длину ключа можете настроить по своему усмотрению. | ||
+ | default_bits | ||
+ | [ req_distinguished_name ] | ||
+ | countryName_default | ||
+ | 0.organizationName_default | ||
+ | stateOrProvinceName_default | ||
+ | organizationalUnitName_default | ||
+ | |||
+ | # В подавляющем большинстве случае должно соответствовать полному доменному имени хоста. | ||
+ | # Common Name (eg, your name or your server' | ||
+ | |||
+ | commonName | ||
+ | commonName_default | ||
+ | ... | ||
+ | # / | ||
+ | </ | ||
+ | |||
+ | ===== Postfix SMTP SSL/TSL сертификат ===== | ||
+ | По умолчанию [[SMTP]]-сеанс клиента с сервером не шифруется. Клиент просто устанавливает [[TCP]] - соединение и начинает передачу данных. Если содержимое не было зашифровано другими средствами, | ||
+ | * **Как работает [[TLS]] на примере SMTP?** | ||
+ | * Создадим SSL - сертификат сервера [[Postfix]]. Создаем заявку на сертификат (в последующем заявку нужно подписать в нашем центре сертификации).< | ||
+ | # cd /etc/ssl/ | ||
+ | |||
+ | # openssl req -new -nodes -keyout postfix_private_key.pem -out postfix_private_key.pem -days 3650</ | ||
+ | * Последний этап создания серверного сертификата заключается в подписании его центром сертификации. Если вы пользуетесь услугами официального центра, | ||
+ | # openssl ca -policy policy_anything -out postfix_public_cert.pem -infiles postfix_private_key.pem</ | ||
+ | < | ||
+ | * Подготовим ключи для использования в Posrfix. Скопируем 3 файла в отдельную директорию и установим права.< | ||
+ | # mkdir / | ||
+ | # chmod 600 postfix_private_key.pem | ||
+ | </ | ||
+ | * Настройка main.cf в Postfix.< | ||
+ | # nano / | ||
+ | ... | ||
+ | # Включить TLS | ||
+ | smtpd_use_tls=yes | ||
+ | smtpd_tls_key_file = / | ||
+ | smtpd_tls_cert_file = / | ||
+ | #путь к хранилищам сертификатов | ||
+ | smtpd_tls_CApath = / | ||
+ | #loglevel to mail.log | ||
+ | smtpd_tls_loglevel = 2 | ||
+ | # | ||
+ | smtpd_tls_received_header = yes | ||
+ | </ | ||
+ | * **Проверка**: | ||
+ | # openssl s_client -starttls smtp -CApath / | ||
+ | |||
+ | ====== Quick Postfix SMTP SSL/TSL сертификат ====== | ||
+ | |||
+ | TLS- шифрование трафика предназначено для обеспечения защиты трафика при взаимодействии клиентов, | ||
+ | < | ||
+ | # mkdir / | ||
+ | # cd / | ||
+ | # openssl req -new -nodes -x509 -out smtpd.pem -keyout smtpd.pem -days 3650 | ||
+ | # chmod 644 smtpd.pem | ||
+ | </ | ||
+ | * Команда req заставляет OpenSSL создать сертификат, | ||
+ | * -new - cоздать запрос на сертификат, | ||
+ | * -nodes - не шифровать закрытый ключ, | ||
+ | * -x509 (совместно с -new) - создать самоподписной сертификат, | ||
+ | * -keyout - задает местонахождение закрытого ключа, | ||
+ | * -out - задает местонахождение самоподписного сертификата, | ||
+ | * -days - задает время действия сертификата (365x10 дней, что приблизительно равно десяти годам). | ||
+ | |||
+ | В процессе выполнения команды на экран будут выданы запросы о вводе таких параметров как: Country Name, State or Province Name; Locality Name; Organization Name; Organizational Unit Name; Common Name; Email Address. Самым важным параметром является значение Common Name. В нашем случае оно должно совпадать с FQDN сервера, | ||
+ | |||
+ | После генерации сертификата необходимо включить поддержку TLS в файле main.cf: | ||
+ | < | ||
+ | smtp_use_tls = yes | ||
+ | smtpd_use_tls = yes | ||
+ | smtpd_tls_session_cache_database = btree: | ||
+ | smtp_tls_session_cache_database = btree: | ||
+ | smtpd_tls_auth_only = yes | ||
+ | smtp_tls_note_starttls_offer = yes | ||
+ | smtpd_tls_key_file = / | ||
+ | smtpd_tls_cert_file = / | ||
+ | smtpd_tls_CAfile = / | ||
+ | smtpd_tls_CApath = / | ||
+ | smtpd_tls_loglevel = 1 | ||
+ | smtpd_tls_received_header = yes | ||
+ | smtpd_tls_session_cache_timeout = 3600s | ||
+ | tls_random_source = dev:/ | ||
+ | </ | ||
+ | Указанные параметры имеют следующие значения: | ||
+ | * smtp_use_tls - использовать TLS, если удаленный сервер сообщает о поддержке TLS, | ||
+ | * smtpd_use_tls - сообщать клиентам о поддержке TLS, | ||
+ | * smtpd_tls_auth_only - использовать аутентификацию SMTP только для TLS-соединений, | ||
+ | * smtp_tls_note_starttls_offer - фиксировать в логе имена серверов, | ||
+ | * smtpd_tls_key_file - местонахождение закрытого ключа сервера, | ||
+ | * smtpd_tls_cert_file - местонахождение сертификата сервера, | ||
+ | * smtpd_tls_CAfile - местонахождение самоподписного доверенного сертификата, | ||
+ | * smtpd_tls_CApath - место нахождение всех корневых сертификатов, | ||
+ | * smtpd_tls_loglevel - детальность сообщений о TLS-активности, | ||
+ | * smtpd_tls_received_header - запрашивать заголовки сообщений с информацией о версии протокола и алгоритме шифрования, | ||
+ | * smtpd_tls_session_cache_timeout - время, в течение которого данные в кэше TLS-сессии считаются актуальными, | ||
+ | * tls_random_source - имя устройства-генератора псевдослучайных чисел (PRNG). | ||
+ | * smtpd_tls_ask_ccert - устраняет ошибку No client certificate requested | ||
+ | |||
+ | Администраторы сервера выбирают, | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | Для того, чтобы Postfix принимал TLS- соединения на специальный порт (465/SMTPS, а не 25/SMTP), в файле / | ||
+ | < | ||
+ | smtps inet n - n - - smtpd | ||
+ | -o smtpd_tls_wrappermode=yes | ||
+ | -o smtpd_sasl_auth_enable=yes | ||
+ | </ | ||
+ | Не забудьте, | ||
+ | |||
+ | ====== Quick Dovecot SSL сертификат ====== | ||
+ | < | ||
+ | # mkdir / | ||
+ | # cd / | ||
+ | # openssl req -new -nodes -x509 -out imapd.pem -keyout imapd.pem -days 3650 | ||
+ | # chmod 644 imapd.pem | ||
+ | </ | ||
+ | Правим конфигурационный файл [[Dovecot]]. | ||
+ | < | ||
+ | # nano / | ||
+ | ... | ||
+ | ## SSL settings | ||
+ | ssl_cert_file = / | ||
+ | ssl_key_file = / | ||
+ | ssl_ca_file = / | ||
+ | ... | ||
+ | </ | ||
+ | Вывести все доступные сертификаты | ||
+ | < | ||
+ | openssl s_client -connect 10.26.95.225: | ||
+ | </ | ||
+ | ====== Quick Apache2 самоподписанный SSL сертификат ====== | ||
+ | |||
+ | [[mod_gnutls]]: | ||
+ | * Включаем модуль ssl и файл с настройками HTTPS по умолчанию< | ||
+ | a2enmod ssl | ||
+ | a2ensite default-ssl | ||
+ | </ | ||
+ | * Создадим самоподписанные SSL сертификаты (можно оставить по умолчанию сгенерированные системой: | ||
+ | mkdir / | ||
+ | cd / | ||
+ | openssl req -new -nodes -x509 -out httpsd.pem -keyout httpsd.pem -days 9999 | ||
+ | </ | ||
+ | * Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию: | ||
+ | < | ||
+ | ... | ||
+ | ## SSL settings | ||
+ | |||
+ | SSLEngine on | ||
+ | # запретить использование устаревшего протокол SSLv2 и SSLv3 | ||
+ | SSLProtocol all -SSLv2 -SSLv3 | ||
+ | # или запретить можно запретить все и включить только требуемые | ||
+ | # | ||
+ | |||
+ | SSLCertificateFile / | ||
+ | SSLCertificateKeyFile / | ||
+ | # SSLCertificateFile | ||
+ | # SSLCertificateKeyFile / | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ====== Создание самоподписанного SSl сертификата для Nginx ====== | ||
+ | Создадим и подключим самоподписанный SSL сертификат в [[Nginx|Nginx]]. | ||
+ | |||
+ | Создадим папку где будем хранить сертификаты: | ||
+ | <file bash> | ||
+ | mkdir / | ||
+ | chown root:root / | ||
+ | chmod 700 / | ||
+ | </ | ||
+ | |||
+ | Перейдем в эту папку и сгенерируем сертификат: | ||
+ | |||
+ | <file bash> | ||
+ | cd / | ||
+ | openssl req -new -x509 -days 9999 -nodes -newkey rsa:2048 -out nginx.pem -keyout nginx.key | ||
+ | </ | ||
+ | При генерации вас попросят указать некоторые данные, | ||
+ | | ||
+ | |||
+ | <file bash> | ||
+ | server { | ||
+ | listen | ||
+ | listen | ||
+ | server_name | ||
+ | |||
+ | # ssl_protocols | ||
+ | ssl_certificate / | ||
+ | ssl_certificate_key / | ||
+ | |||
+ | ... | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | | ||
+ | |||
+ | Пример с принудительным использованием HTTPS: | ||
+ | <file bash> | ||
+ | server { | ||
+ | listen | ||
+ | server_name | ||
+ | rewrite ^ https:// | ||
+ | } | ||
+ | |||
+ | server { | ||
+ | listen | ||
+ | server_name | ||
+ | |||
+ | ssl on; | ||
+ | # ssl_protocols | ||
+ | ssl_certificate / | ||
+ | ssl_certificate_key / | ||
+ | |||
+ | ... | ||
+ | } | ||
+ | </ |
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга