Это техническая статья о протоколе SSL. Она содержит теоретические знания, но также имеет определенную степень практичности. Основное содержание статьи описывает основные концепции, принципы работы, общие сценарии применения протокола SSL и практическое применение. https. Сценарии приложений, а также сосредоточимся на ознакомлении с конкретными принципами работы и способами реализации https-доступа к веб-сайту. Независимо от того, являетесь ли вы новичком в области технологий информационной безопасности или профессионалом, я считаю, что эта статья может принести вам помощь или вдохновение. Если есть какие-либо ошибки, пожалуйста, укажите на них в комментариях, чтобы мы могли расти и совершенствоваться вместе.
SSL (Secure Sockets Layer) — это стандартная технология безопасности, используемая для защиты информации в Интернете. Он обеспечивает безопасную передачу данных между клиентами и серверами путем шифрования сетевых соединений. Протокол SSL использует асимметричное шифрование и технологию симметричного шифрования для предотвращения кражи или подделки данных во время передачи. SSL в основном используется для защиты конфиденциальной информации на веб-сайтах, такой как личная информация, данные кредитной карты и т. д. В современных сетевых коммуникациях SSL был заменен стандартом-преемником TLS (Transport Layer Security), но обычно люди по-прежнему называют его SSL.
В приведенном выше концептуальном описании упомянуты два ключевых момента: во-первых: SSL — это технический стандарт защиты информации; во-вторых: SSL использует технологию симметричного шифрования и технологию асимметричного шифрования, в частности, «Как работает SSL» включает следующие три ключевых этапа:
Посредством вышеуказанных шагов протокол SSL реализует зашифрованную передачу данных, предотвращая угрозы безопасности, такие как атаки «человек посередине» и подслушивание, тем самым обеспечивая безопасность сетевых коммуникаций.
Обычно клиент конкретно относится к браузеру. Клиентский браузер проверяет действительность сертификата SSL, возвращаемого сервером, по следующим аспектам:
Клиент сначала проверит, выдан ли SSL-сертификат, возвращаемый сервером, доверенным центром сертификации (CA), то есть проверит, находится ли эмитент сертификата в списке доверия клиента. Этот процесс, называемый проверкой цепочки сертификатов, обеспечивает надежность сертификата сервера.
Клиент проверит срок действия сертификата, чтобы убедиться, что срок действия сертификата не истек. Если срок действия сертификата истек, клиент не будет ему доверять.
Клиент проверяет, что имя хоста в сертификате соответствует имени хоста сервера, к которому подключается клиент. Этот шаг предотвращает атаки «человек посередине» на злонамеренно поддельные сертификаты.
Клиент также проверяет, отозвал ли центр сертификации сертификат сервера. Это можно проверить, запросив список отзыва сертификатов (CRL) или онлайн-протокол статуса сертификатов (OCSP) центра сертификации.
В некоторых случаях клиент может также выполнять другие дополнительные проверки, например проверку расширенных полей сертификата и т. д.
Посредством проверки в вышеупомянутых аспектах клиент может убедиться в действительности и надежности сертификата SSL, возвращаемого сервером, тем самым устанавливая безопасное соединение связи. Если проверка сертификата не удалась, клиент выдаст предупреждение или откажется от соединения для защиты безопасности передачи данных.
Премастерский секрет:
Предварительный ключ — это случайное значение, генерируемое клиентом на начальном этапе установления связи SSL и используемое для согласования ключа для алгоритма симметричного шифрования, используемого в последующих сеансах связи. Клиент генерирует предварительный главный ключ в начале рукопожатия и отправляет его на сервер. Предварительный главный ключ не используется непосредственно для шифрования данных, а согласовывается для создания окончательного сеансового ключа.
Сессионный ключ:
Сеансовый ключ — это симметричный ключ, создаваемый в результате переговоров между двумя сторонами на основе предварительного главного ключа и другой информации в процессе установления связи SSL и используемый для шифрования и дешифрования данных связи. Ключ сеанса действителен только во время текущего сеанса и обычно хранится на стороне клиента и сервера для передачи зашифрованных данных. После завершения сеанса сеансовый ключ обычно отбрасывается, чтобы гарантировать использование нового сеансового ключа для следующего сеанса связи.
Как правило, предварительный главный ключ используется для безопасного согласования создания сеансового ключа, а сеансовый ключ используется для фактического процесса шифрования и дешифрования данных. Таким образом, протокол SSL гарантирует, что передача данных между взаимодействующими сторонами зашифрована и безопасна.
Технология асимметричного шифрования имеет следующие основные особенности:
Асимметричное шифрование использует пару ключей: открытый ключ и закрытый ключ. Открытый ключ используется для шифрования данных, а закрытый ключ используется для расшифровки данных. Открытый ключ может быть открыт для использования другими, тогда как закрытый ключ остается в секрете.
Данные, зашифрованные с помощью открытого ключа, можно расшифровать только с помощью соответствующего закрытого ключа, а данные, зашифрованные с помощью закрытого ключа, можно расшифровать только с помощью соответствующего открытого ключа. Эта функция обеспечивает безопасность данных во время передачи.
Асимметричное шифрование также можно использовать для создания и проверки цифровых подписей. Отправитель может подписать сообщение, используя свой закрытый ключ, а получатель может проверить подпись, используя открытый ключ отправителя, гарантируя тем самым целостность и подлинность сообщения.
Безопасность алгоритмов асимметричного шифрования основана на математических задачах, таких как задачи разложения больших чисел или задачи дискретного логарифмирования эллиптических кривых. Соответствующая длина ключа может повысить безопасность алгоритмов шифрования.
Асимметричное шифрование также используется для безопасного обмена ключами, необходимыми для алгоритмов симметричного шифрования, например, использование асимметричного шифрования для обмена симметричными ключами во время установления связи TLS.
Алгоритмы асимметричного шифрования обычно требуют большего объема вычислений, чем алгоритмы симметричного шифрования, и поэтому могут быть менее эффективными при передаче больших объемов данных. Поэтому симметричное и асимметричное шифрование часто комбинируют для достижения баланса безопасности и эффективности.
Технология симметричного шифрования имеет следующие характеристики:
Алгоритмы симметричного шифрования обычно работают быстрее, чем алгоритмы асимметричного шифрования, поскольку в процессах шифрования и дешифрования используется один и тот же ключ и не требуется никаких сложных математических операций.
По сравнению с алгоритмами асимметричного шифрования алгоритмы симметричного шифрования проще реализовать, требуют меньше вычислений и подходят для шифрования больших объемов данных.
Алгоритмы симметричного шифрования должны обеспечивать безопасную передачу и хранение ключей, в противном случае ключи могут быть украдены, что приведет к утечке данных. Это создает ключевые проблемы управления.
Алгоритмы симметричного шифрования подходят для большинства сценариев шифрования данных, таких как передача данных, шифрование файлов и т. д. Однако существуют некоторые ограничения в согласовании и распространении ключей, особенно при безопасной передаче данных может потребоваться объединение других технологий для решения проблемы обмена ключами.
Ключи, используемые для шифрования и дешифрования в алгоритмах симметричного шифрования, одинаковы, и эта симметрия также является источником его названия. Таким образом, обеим сторонам необходимо договориться и использовать один и тот же ключ перед общением.
Вообще говоря, технология симметричного шифрования имеет преимущества в скорости и эффективности, в то время как технология асимметричного шифрования имеет больше преимуществ в управлении ключами и обмене ключами. Поэтому во многих сценариях эти две технологии используются вместе для достижения эффекта изучения сильных сторон друг друга.
Ответ — нет. MD5 и асимметричное шифрование — это две разные технологии шифрования. Между ними есть некоторые связи, но есть и различия:
MD5 (алгоритм дайджеста сообщения 5) — это алгоритм хеширования, который в основном используется для создания дайджеста данных для обеспечения целостности данных и проверки согласованности данных.
Алгоритмы асимметричного шифрования (такие как RSA, ECC и т. д.) — это алгоритм шифрования, который использует пару ключей (открытый ключ и закрытый ключ) для шифрования и дешифрования. Его также можно использовать для цифровых подписей и функций обмена ключами.
MD5 — это алгоритм одностороннего хеширования, то есть он может генерировать дайджест данных, но не может восстановить исходные данные из дайджеста.
Алгоритм асимметричного шифрования является двусторонним. Вы можете использовать открытый ключ для шифрования данных и закрытый ключ для расшифровки данных или использовать закрытый ключ для подписи данных и открытый ключ для проверки подписи.
Алгоритм MD5 имеет некоторые недостатки безопасности, такие как уязвимость к коллизионным атакам и т. д., и не подходит для использования в сценариях с высокими требованиями безопасности.
Алгоритмы асимметричного шифрования основаны на математических задачах и относительно более безопасны и надежны. Они часто используются в таких сценариях, как зашифрованная связь и цифровые подписи.
В практических приложениях дайджесты MD5 часто используются в сочетании с алгоритмами асимметричного шифрования. Например, в цифровых подписях для создания цифровой подписи можно использовать алгоритм асимметричного шифрования, а затем использовать MD5 для дайджеста подписи, чтобы гарантировать целостность и подлинность подписи.
Существует множество распространенных сценариев применения протокола SSL, например следующие. Конечно, помимо перечисленных, существует множество других сценариев, поэтому я не буду здесь вдаваться в подробности.
Среди сценариев применения протокола SSL можно использовать протокол https для реализации зашифрованной связи на веб-сайте. У некоторых друзей могут возникнуть вопросы. https и ssl - это оба протокола. Есть ли разница или связь? Это можно понять так: HTTPS на самом деле является безопасной версией протокола HTTP. Он добавляет к HTTP механизм шифрования протокола SSL/TLS и защищает безопасность связи путем шифрования данных на транспортном уровне.
В настоящее время большинство веб-сайтов используют HTTPS. Если вы хотите внедрить HTTPS на своем веб-сайте, вам обычно требуются следующие шаги:
Обычно существует всего несколько способов получить сертификат SSL. Ниже приведены некоторые распространенные способы:
После получения SSL-сертификата вам необходимо установить его на свой веб-сервер. Обычно это предполагает настройку файла сертификата и файла ключа в соответствующем расположении серверного программного обеспечения (например, Apache, Nginx и т. д.). Это будет сделано позже на примере nginx для установки самозаверяющего сертификата.
Необходимо изменить конфигурацию веб-сервера, включить протокол SSL/TLS и настроить параметры безопасности, такие как набор шифров и версию протокола.
Измените все ссылки на веб-сайте, чтобы они начинались с https://, и убедитесь, что доступ ко всем ресурсам на веб-сайте осуществляется через зашифрованные соединения.
Чтобы гарантировать, что весь доступ осуществляется через HTTPS, обычно принудительно перенаправляют доступ HTTP на HTTPS.
Наконец, тестирование и проверка необходимы, чтобы гарантировать, что конфигурация HTTPS вступила в силу и что веб-сайт отображает логотип безопасной блокировки в браузере.
На этом этапе вы можете относительно безопасно получить доступ к целевому веб-сайту.
Я думаю, вы уже знаете, как реализовать HTTPS для обычных веб-сайтов. Но понимаете ли вы, как работает весь процесс? И посмотрите вниз. Принцип работы HTTPS (безопасный протокол передачи гипертекста) в основном основан на протоколе SSL/TLS. Его ключевые этапы включают в себя:
Клиент инициирует запрос на соединение с сервером, и сервер возвращает свой SSL-сертификат, который содержит открытый ключ и другую информацию. Клиент проверяет действительность сертификата, генерирует случайный симметричный ключ, шифрует его открытым ключом сервера и отправляет на сервер.
После получения зашифрованного симметричного ключа, отправленного клиентом, сервер использует свой собственный закрытый ключ для его расшифровки и получения симметричного ключа. Затем обе стороны генерируют сеансовый ключ на основе симметричного ключа для шифрования данных связи.
Ключ сеанса используется между клиентом и сервером для симметричного шифрования и дешифрования передаваемых данных, обеспечивая конфиденциальность и целостность данных во время передачи.
Благодаря вышеуказанным шагам HTTPS обеспечивает зашифрованную передачу данных, обеспечивая тем самым безопасность данных во время передачи. Кроме того, HTTPS также использует цифровые сертификаты для проверки личности сервера, предотвращения атак «злоумышленник посередине» и обеспечения безопасности и надежности связи между клиентом и сервером.
Настройка сертификата SSL в Nginx обеспечивает доступ клиента по протоколу HTTPS. Процесс настройки не сложен, но предполагается, что у вас должен быть сертификат.
1. Получите SSL-сертификат:
Как упоминалось выше, вы можете получить сертификат SSL от доверенного центра сертификации (CA) или с помощью бесплатной службы сертификации, такой как Let's Encrypt. Следует отметить, что самозаверяющие сертификаты лучше всего использовать только в интрасети. Самозаверяющим сертификатам нельзя доверять в Интернете.
2. Настройте SSL-сертификат.
В конфигурации Nginx укажите расположение SSL-сертификата, закрытого ключа и других связанных конфигураций. Ниже приведен пример конфигурации ключей в nginx.conf:
копировать
server {
listen 443 ssl;
server_name 192.168.35.106;
root /usr/share/nginx/html;
ssl_certificate /etc/nginx/ssl/cert.crt;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 80;
server_name 192.168.35.106;
return 301 https://$host$request_uri;
}
В приведенном выше примере конфигурации необходимо сосредоточиться на на Несколько мест: 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.
3. Перезапустите Nginx.
После завершения настройки SSL вам необходимо перезагрузить или перезапустить Nginx, чтобы изменения вступили в силу. Вы можете использовать команду nginx -s reload или systemctl restart nginx, чтобы перезагрузить конфигурацию.
копировать
nginx -s reload
systemctl restart nginx1.2.
4. Проверка
Используйте браузер для доступа к своему веб-сайту и измените исходный доступ http на доступ https. Если к нему можно получить доступ через HTTPS, а в адресной строке браузера отображается логотип безопасного соединения, это означает, что настройка прошла успешно.
Большое спасибо за ваше терпение при чтении моей статьи. Надеюсь, мой рассказ будет вам полезен. Конечно, если вы считаете, что эта статья полезна для вас, вы можете также нажать кнопку «Нравится», чтобы больше людей увидели этот высококачественный обмен технологиями. В то же время не забудьте добавить эту статью в закладки для удобства использования в будущем.