Secure Sockets Layer (SSL) является одним из самых распространенных протоколов безопасности, используемых в Интернете сегодня. Большинство веб-разработчиков слышали этот термин ранее, и знают смысл «значка замка» и «зеленой адресной строки». Сегодня мы обсудим основные моменты в работе SSL и возможные варианты защиты вашего сайта.
Как работает SSL шифрование?
SSL позволяет шифровать данные, как правило, конфиденциальную информацию (например номера кредитных карт), отправляемую браузером пользователя на ваш сервер. Необходимость в шифровании очевидна, поскольку обычно данные передаются в незашифрованном виде с компьютера на компьютер, пока не достигнут конечной цели. С любого компьютера, через который проходит поток информации, можно просмотреть данные. Если хакер сможет прослушивать информацию, которая передается от браузера клиента к серверу, ему не составит труда украсть секретную информацию.
Отправка конфиденциальной информации без использования SSL равносильна тому, если бы вы записали ее на любом клочке бумаги и дали скопировать всем подряд.
Браузер и сервер, устанавливая SSL соединение, используют довольно сложный процесс, называемый «криптография открытого ключа» и много математики. По сути, две части данных используются для создания SSL соединения: открытый ключ и секретный ключ. Все, что шифруется с помощью открытого ключа пользователя, может быть расшифровано только при помощи секретного ключа и наоборот.
Например, если Петя посылает Васе сообщение, зашифрованное с помощью открытого ключа Васи, то только Вася сможет открыть его, используя секретный ключ.
Если Вася посылает сообщение Пети, зашифрованное секретным ключем Пети, то кто угодно может прочитать его, так как любой имеет доступ к Петиному открытому ключу. Так же, если вам удалось открыть сообщение, вы знаете, что именно Петя прислал его, потому что только он имеет доступ к своему секретному ключу.
Поскольку шифрование и дешифрование с помощью открытого и секретного ключа использует много процессинговой энергии, оно используется только при первом создании SSL соединения для получения так называемого симетрического ключа. Симетрический ключ используют далее для шифрования данных веб-страницы.
Это упрощенная схема процесса создания SSL соединения:
Что такое SSL сертификат?
Почти все интернет-программы, включая браузеры, серверы, почтовые и VPN-клиенты и т.д. поддерживают SSL шифрование. Однако они требуют сертификат до того, как SSL становится доступен. Происходит это потому, что сертификат содержит открытый ключ, который идентифицирует сервер. Сертификат так же включает «содержание». Оно содержит личность владельца сертификата (название компании и местонахождение).
Самая важная часть сертификата – цифровая подпись доверительного поставщика. Почему именно так? Любой человек может создать свой сертификат в считанные секунды. Но это так же, как если бы вы самостоятельно сделали себе водительские права, но они ведь не служили бы залогом доверия. Ведь когда вы хотите получить права, вы идете в гос. орган, потому что знаете, что государство не выдаст вам фальшивые права. Ваш браузер имеет список организаций, которые называются Центрами сертификации (СА), в надежности которых вы можете быть уверенны. Это означает, что если один из таких центров сертификации выдаст SSL сертификат вашей организации, сертификату будут доверять все компьютеры мира, так как СА внесен в списки браузеров по умолчанию. Это так же создает огромные трудности хакерам для создания фишинг-сайтов, поскольку СА не будет подтверждать наличие сертификата на таком сайте.
Использование SSL сертификата от доверенного поставщика позволяет пройти проверку, завоевать доверие посетителей и защитить ваш сайт от фишинга.
Когда мне нужно использовать SSL?
Не все коммуникации требуют шифрования, но вы должны всерьез рассмотреть возможность использования SSL в следующих случаях:
Разные типы SSL сертификатов
Существует много разновидностей SSL сертификатов.
Domain Validated Certificates
Данные сертификаты выдаются с минимальной проверкой (как правило, автоматически). Вам надо доказать лишь что вы являетесь владельцем домена отвечая на письмо или звонок с использованием информации из Whois. Это делает сертификаты более дешевыми, но менее доверительными для пользователей.
Extended Validation Certificates
EV SSL сертификаты относительно новы, обеспечивают самую высокую степень защиты, потому что перед выпуском данного сертификата проводится детальная проверка. Такие сертификаты дороже других, но они обеспечивают «зеленую адресную строку» в большинстве браузеров.
Wildcard Certificates
Большинство SSL сертификатов будут защищать лишь одно конкретное доменное имя. Например, если ваш сертификат выдан для secure.mydomain.com, а вы попытаетесь использовать его на www.mydomain.com, браузер будет выдавать предупреждение, что имя домена не соответствует имени, прописанному в сертификате. Это необходимо для предотвращения фишинга. Тем не менее, Wildcard сертификат будет защищать все поддомены одного домена. Например, сертификат для *.mydomain.com, будет защищать secure.mydomain.com, www.mydomain.com, mail.mydomain.com и т.д.
SAN Certificates
SAN сертификаты так же позволяют защитить несколько доменных имен, но не неограниченное количество. Каждое имя прописывается в поле сертификата Subject Alternative Name. Имена могут быть внутренними и включать несколько разных доменов.
Code Signing Certificates
Сертификаты отличаются от других SSL сертификатов. Они позволяют подписать приложение чтобы пользователи смогли проверить, что приложение действительно принадлежит организации, которая его выпустила и не является поддельным.
Self Signed Certificates
Самоподписанные сертификаты можно создать бесплатно самостоятельно, но пользователи будет видеть предупреждение, что сертификат не является доверенным.
SSL полностью защищает мой сайт?
Нет. Важно помнить, что использование SSL сертификата является лишь частью обеспечения защиты вашего сайта. Необходимо убедиться, что вы приняли и другие меры для защиты вашего сайта.
Как я могу получить SSL сертификат?
Процесс заказа SSL сертификата выглядит приблизительно так:
TLS и SSL упоминаются в последнее время все чаще и чаще, более актуальным становится использование цифровых сертификатов, и даже появились компании, готовые бесплатно предоставлять цифровые сертификаты всем желающим, чтобы гарантировать шифрование трафика между посещаемыми сайтами и браузером клиента. Нужно это, естественно, для безопасности, чтобы никто в сети не мог получить данные, которые передаются от клиента серверу и обратно. Как же это всё работает и как это использовать? Чтобы это понять, надо, пожалуй, начать с теории, а потом показать на практике. Итак, SSL и TLS.
SSL — Secure Socket Layer, уровень защищенных сокетов. TLS — Transport Layer Security, безопасность транспортного уровня. SSL является более ранней системой, TLS появился позднее и он основан на спецификации SSL 3.0, разработанной компанией Netscape Communications. Тем не менее, задача у этих протоколов одна — обеспечение защищенной передачи данных между двумя компьютерами в сети Интернет. Такую передачу используют для различных сайтов, для электронной почты, для обмена сообщениями и много еще для чего. В принципе, можно передавать любую информацию таким образом, об этом чуть ниже.
Безопасная передача обеспечивается при помощи аутентификации и шифрования передаваемой информации. По сути эти протоколы, TLS и SSL, работают одинаково, принципиальных различий нет. TLS, можно сказать, является преемником SSL, хотя они и могут использоваться одновременно, причем даже на одном и том же сервере. Такая поддержка необходима для того, чтобы обеспечить работу как с новыми клиентами (устройствами и браузерами), так и с устаревшими, которые TLS не поддерживают. Последовательность возникновения этих протоколов выглядит вот так:
SSL 1.0 — никогда не публиковался
SSL 2.0 — февраль 1995 года
SSL 3.0 — 1996 год
TLS 1.0 — январь 1999 года
TLS 1.1 — апрель 2006 года
TLS 1.2 — август 2008 года
Принцип работы SSL и TLS, как я уже сказал, один и тот же. Поверх протокола TCP/IP устанавливается зашифрованный канал, внутри которого передаются данные по прикладному протоколу — HTTP, FTP, и так далее. Вот как это можно представить графически:
Прикладной протокол «заворачивается» в TLS/SSL, а тот в свою очередь в TCP/IP. По сути данные по прикладному протоколу передаются по TCP/IP, но они зашифрованы. И расшифровать передаваемые данные может только та машина, которая установила соединения. Для всех остальных, кто получит передаваемые пакеты, эта информация будет бессмысленной, если они не смогут ее расшифровать.
Установка соединения обеспечивается в несколько этапов:
1) Клиент устанавливает соединение с сервером и запрашивает защищенное подключение. Это может обеспечиваться либо установлением соединения на порт, который изначально предназначен для работы с SSL/TLS, например, 443, либо дополнительным запросом клиентом установки защищенного соединения после установки обычного.
2) При установке соединения клиент предоставляет список алгоритмов шифрования, которые он «знает». Сервер сверяет полученный список со списком алгоритмов, которые «знает» сам сервер, и выбирает наиболее надежный алгоритм, после чего сообщает клиенту, какой алгоритм использовать
3) Сервер отправляет клиенту свой цифровой сертификат, подписанный удостоверяющим центром, и открытый ключ сервера.
4) Клиент может связаться с сервером доверенного центра сертификации, который подписал сертификат сервера, и проверить, валиден ли сертификат сервера. Но может и не связываться. В операционной системе обычно уже установлены корневые сертификаты центров сертификации, с которыми сверяют подписи серверных сертификатов, например, браузеры.
5) Генерируется сеансовый ключ для защищенного соединения. Это делается следующим образом:
— Клиент генерирует случайную цифровую последовательность
— Клиент шифрует ее открытым ключом сервера и посылает результат на сервер
— Сервер расшифровывает полученную последовательность при помощи закрытого ключа
Учитывая, что алгоритм шифрования является асимметричным, расшифровать последовательность может только сервер. При использовании асимметричного шифрования используется два ключа — приватный и публичный. Публичным отправляемое сообщение шифруется, а приватным расшифровывается. Расшифровать сообщение, имея публичный, ключ нельзя.
6) Таким образом устанавливается зашифрованное соединение. Данные, передаваемые по нему, шифруются и расшифровываются до тех пор, пока соединение не будет разорвано.
Чуть выше я упомянул корневой сертификат. Это сертификат авторизационного центра, подпись которым подтверждает, что сертификат, который подписан, является именно тем, который принадлежит соответствующему сервису. В самом сертификате обычно содержится ряд информационных полей, в которых содержится информация об имени сервера, которому выдан сертификат, и сроках действия этого сертификата. Если срок действия сертификата истек, он признается недействительным.
Для получения подписанного серверного сертификата необходимо сгенерировать запрос на подпись (CSR, Certificate Sign Request) и отправить этот запрос авторизационному центру, который вернет подписанный сертификат, устанавливаемый непосредственно на сервер, чуть ниже посмотрим, как это сделать на практике. Сначала генерируется ключ для шифрования, затем на основании этого ключа генерируется запрос на подпись, CSR-файл.
Клиентский сертификат может быть сгенерирован как для использования в устройствах, так и для использования пользователями. Обычно такие сертификаты используются при двусторонней верификации, когда клиент верифицирует, что сервер действительно тот, за кого себя выдает, и сервер в ответ делает то же самое. Такое взаимодействие называется двусторонней аутентификацией или mutual authentication. Двусторонняя аутентификация позволяет повысить уровень безопасности по сравнению с односторонней, а также может служить заменой аутентификации с использованием логина и пароля.
Давайте посмотрим на практике, как происходят действия, связанные с генерацией сертификатов, с самого начала, и при этом на практике.
Первое, что делается — это генерация корневого сертификата. Корневой сертификат подписывается самим собой. А потом уже этим сертификатом будут подписываться другие сертификаты.
$ openssl genrsa -out root.key 2048 Generating RSA private key, 2048 bit long modulus ..........+++ ...........................................+++ e is 65537 (0x10001) $ openssl req -new -key root.key -out root.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ".", the field will be left blank. ----- Country Name (2 letter code) :RU State or Province Name (full name) :N/A Locality Name (eg, city) :Saint-Petersburg Organization Name (eg, company) :My Company Organizational Unit Name (eg, section) :IT Service Common Name (e.g. server FQDN or YOUR name) :My Company Root Certificate Email Address :[email protected] Please enter the following "extra" attributes to be sent with your certificate request A challenge password : An optional company name :My Company $ openssl x509 -req -days 3650 -in root.csr -signkey root.key -out root.pem Signature ok subject=/C=RU/ST=N/A/L=Saint-Petersburg/O=My Company/OU=IT Service/CN=My Company Root Certificate/[email protected] Getting Private key
Таким образом мы сгенерировали сначала приватный ключ, затем запрос подписи, а затем своим ключом подписали свой же запрос и получили собственный цифровой сертификат, выданный на 10 лет. Пароль (challenge password) при генерации сертификата можно не вводить.
Приватный ключ ОБЯЗАТЕЛЬНО необходимо хранить в надежном месте, имея его можно подписать от вашего имени любой сертификат. А полученный корневой сертификат можно использовать для идентификации того, что сертификат, например, сервера подписан именно нами, а не кем-то еще. Именно такие действия выполняют авторизационные центры, когда генерируют собственные сертификаты. После создания корневого сертификата можно приступать к генерации сертификата сервера.
Содержимое сертификата можно просмотреть таким образом:
$ openssl x509 -noout -issuer -enddate -in root.pem issuer= /C=RU/ST=N/A/L=Saint-Petersburg/O=My Company/OU=IT Service/CN=My Company Root Certificate/[email protected] notAfter=Jan 22 11:49:41 2025 GMT
Мы видим, кто выдал этот сертификат и когда заканчивается срок его годности.
Для подписи сертификата для сервера нам нужно выполнить следующие действия:
1) Сгенерировать ключ
2) Сгенерировать запрос на подпись
3) Отправить CSR-файл в авторизационный центр или подписать самостоятельно
В серверный сертификат может включаться цепочка сертификатов, которыми подписан сертификат сервера, но ее можно также хранить в отдельном файле. В принципе, выглядит всё примерно так же, как и при генерации корневого сертификата
$ openssl genrsa -out server.key 2048 Generating RSA private key, 2048 bit long modulus ...................................................................................+++ ..........................+++ e is 65537 (0x10001) $ openssl req -new -key server.key -out server.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ".", the field will be left blank. ----- Country Name (2 letter code) :RU State or Province Name (full name) :N/A Locality Name (eg, city) :Saint-Petersburg Organization Name (eg, company) :My Company Organizational Unit Name (eg, section) :IT Service Common Name (e.g. server FQDN or YOUR name) :www.mycompany.com Email Address :[email protected] Please enter the following "extra" attributes to be sent with your certificate request A challenge password : An optional company name : $ openssl x509 -req -in server.csr -CA root.pem -CAkey root.key -CAcreateserial -out server.pem -days 365 Signature ok subject=/C=RU/ST=N/A/L=Saint-Petersburg/O=My Company/OU=IT Service/CN=www.mycompany.com/[email protected] Getting CA Private Key $ openssl x509 -noout -issuer -subject -enddate -in server.pem issuer= /C=RU/ST=N/A/L=Saint-Petersburg/O=My Company/OU=IT Service/CN=My Company Root Certificate/[email protected] subject= /C=RU/ST=N/A/L=Saint-Petersburg/O=My Company/OU=IT Service/CN=www.mycompany.com/[email protected] notAfter=Jan 25 12:22:32 2016 GMT
Таким образом сертификат сервера подписан и мы будем знать, какой организацией выдан этот сертификат. После подписи готовый сертификат можно использовать по назначению, например, установить на веб-сервер.
Для установки SSL/TLS-сертификата на веб-сервер nginx надо выполнить несколько простых шагов:
1) Скопировать файлы.key и.pem на сервер. В различных операционных системах сертификаты и ключи могут храниться в разных директориях. В Debian’е, к примеру, это директория /etc/ssl/certs для сертификатов и /etc/ssl/private для ключей. В CentOS это /etc/pki/tls/certs и /etc/pki/tls/private
2) Прописать необходимые настройки в конфигурационный файл для хоста. Вот как это примерно должно выглядеть (это просто пример):
Server { listen 443; server_name www.mycompany.com; root html; index index.html index.htm; ssl on; ssl_certificate server.pem; ssl_certificate_key server.key; ssl_session_timeout 5m; # Не рекомендуется использовать SSLv3 !!! # Он здесь только для примера ssl_protocols SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; ssl_prefer_server_ciphers on; location / { try_files $uri $uri/ =404; } }
3) Перезапустить nginx
4) Зайти браузером на 443 порт сервера — https://www.mycompany.com и проверить его работоспособность.
Установка SSL/TLS-сертификата на Apache выглядит примерно так же.
1) Скопировать файлы ключа и сертификата на сервер в соответствующие директории
2) Включить модуль ssl для Apache командой «a2enmod ssl», если он еще не включен
3) Создать виртуальный хост, который будет слушать 443 порт. Конфиг будет выглядеть примерно так:
При этом надо сделать еще кое-что. Найти в файле httpd.conf, или apache2.conf, или ports.conf, в зависимости от системы, такой участок конфига:
Если такого условия нет, его надо добавить в конфиг. И еще одно: Надо добавить строку
NameVirtualHost *:443
Эта строка может находиться в файле httpd.conf, apache2.conf или ports.conf
4) Перезапустить веб-сервер Apache
Клиентский сертификат создается примерно так же, как серверный.
$ openssl genrsa -out client.key 2048 Generating RSA private key, 2048 bit long modulus ........................+++ ..................................................+++ e is 65537 (0x10001) $ openssl req -new -key client.key -out client.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ".", the field will be left blank. ----- Country Name (2 letter code) :RU State or Province Name (full name) :Saint-Petersburg Locality Name (eg, city) :^C mnorin@mnorin-work:~/Temp/certs/CA$ openssl req -new -key client.key -out client.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ".", the field will be left blank. ----- Country Name (2 letter code) :RU State or Province Name (full name) :N/A Locality Name (eg, city) :Saint-Petrersburg Organization Name (eg, company) :My Company Organizational Unit Name (eg, section) :Engineering Common Name (e.g. server FQDN or YOUR name) :Ivan Ivanov Email Address :[email protected] Please enter the following "extra" attributes to be sent with your certificate request A challenge password : An optional company name : $ openssl x509 -req -in client.csr -CA root.pem -CAkey root.key -CAcreateserial -out client.pem -days 365 Signature ok subject=/C=RU/ST=N/A/L=Saint-Petrersburg/O=My Company/OU=Engineering/CN=Ivan Ivanov/[email protected] Getting CA Private Key $ openssl x509 -noout -issuer -subject -enddate -in client.pem issuer= /C=RU/ST=N/A/L=Saint-Petersburg/O=My Company/OU=IT Service/CN=My Company Root Certificate/[email protected] subject= /C=RU/ST=N/A/L=Saint-Petrersburg/O=My Company/OU=Engineering/CN=Ivan Ivanov/[email protected] notAfter=Jan 25 13:17:15 2016 GMT
Если необходим клиентский сертификат в формате PKCS12, создаем его:
$ openssl pkcs12 -export -in client.pem -inkey client.key -certfile root.pem -out iivanov.p12 Enter Export Password: Verifying - Enter Export Password:
Теперь можно использовать клиентский сертификат для работы с нашим сервером.
Чаще всего, как я уже сказал, используется односторонняя аутентификация, обычно проверяется только сертификат сервера. Давайте посмотрим, как заставить веб-сервер nginx проверять клиентский сертификат. Необходимо в секцию server добавить опции для работы с клиентскими сертификатами:
# Корневой сертификат(ы), которым(и) подписан клиентский ssl_client_certificate /etc/nginx/certs/clientroot.pem; # Возможные варианты: on | off | optional | optional_no_ca ssl_verify_client optional; # Глубина проверки цепочки сертификатов, которыми подписан клиентский ssl_verify_depth 2;
После этого надо перезагрузить настройки или сервер целиком и можно проверять работу.
Apache настраивается также через добавление дополнительных опций в секцию виртуального хоста:
# Директория, содержащая корневые сертификаты для проверки клиентов SSLCARevocationPath /etc/apache2/ssl.crl/ # или файл, содержащий сертификаты SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl # Опция верификации клиента. Возможные варианты: # none, optional, require and optional_no_ca SSLVerifyClient require # Глубина просмотра цепочки подписей. По умолчанию 1 SSLVerifyDepth 2
Как видите, опции примерно такие же, как и для nginx, поскольку процесс проверки организован единообразно.
Для проверки взаимодействия сервера с клиентскими сертификатами можно проверить, устанавливается ли соединение с использованием TLS/SSL.
На стороне сервера запускаем прослушку порта при помощи openssl:
Openssl s_server -accept 443 -cert server.pem -key server.key -state
На стороне клиента обращаемся к серверу, например, culr’ом:
Curl -k https://127.0.0.1:443
В консоли со стороны сервера можно наблюдать процесс обмена информацией между сервером и клиентом.
Можно также использовать опции -verify [глубина проверки] и -Verify [глубина проверки]. Опция с маленькой буквы запрашивает у клиента сертификат, но он не обязан его предоставлять. С большой буквы — если сертификат не предоставлен, возникнет ошибка. Запустим прослушку со стороны сервера таким образом:
Openssl s_server -accept 443 -cert server.pem -key server.key -state -Verify 3
Со стороны сервера ошибка выглядит так:
140203927217808:error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate:s3_srvr.c:3287:
Со стороны клиента так:
Curl: (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Добавим с клиентской стороны сертификат и доменное имя (можно для проверки вписать в файл /etc/hosts имя хоста для адреса 127.0.0.1):
Curl https://www.mycompany.com:443 --cacert root.pem --cert client.pem --key client.key
Теперь соединение пройдет успешно и можно устанавливать серверный сертификат на веб-сервер, клиентский отдать клиенту, и работать с ними.
При использовании SSL/TLS одним из основных методов является метод MITM (Man In The Middle), «человек посередине». Этот метод основывается на использовании серверного сертификата и ключа на каком-то узле, который будет прослушивать трафик и расшифровывать информацию, которой обмениваются сервер и клиент. Для организации прослушивания можно использовать, например, программу sslsniff. Поэтому корневой сертификат и ключ обычно желательно хранить на машине, которая не подключена к сети, для подписания приносить запросы на подпись на флэшке, подписывать и так же уносить. И, естественно, делать резервные копии.
В общих чертах именно так и используются цифровые сертификаты и протоколы TLS и SSL. Если есть вопросы/дополнения, пишите в комментарии.
Запись опубликована автором в рубрике с метками , .CSR клиент генерирует сам при заказе сертификата, где сохранять закрытый ключ также решает клиент, для выпуска сертификата нам не нужен закрытый ключ и клиент нам его никак не передает. Естественно если это происходит на обычном виртуальном, то у администраторов с root доступом к серверу есть доступ и к ключам, которые там хранятся.
Тема сисек не раскрыта, ибо описанная технология работы PKI не имеет ничего общего с заголовком темы. Хоть бы для причия ссылки на rfc привел.
P.S. Был такой анекдот про собаку и блоху.
Нивкоем случае не хотел тебя обидеть. Искал инфу о различии SSl и TLS на практике и твоя ссылка в гугле была первая. Был заинтрегован названием темы. Все круто, так держать!
Благодарю за толковые пояснения о цифровой сертификации. Я новичок в этом=)
Надеюсь разъясните следующий вопрос.
Поскольку в интернет индустрии очень развита тема мошенничества, хотелось бы научиться определять на «вшивость» самостоятельно посещаемые мною сайты (особенно, где присутствуют кашельки и оплаты, инвестиции и т.д) и определять исходя из этого степень моего доверия (приходится часто регистрироваться, оставлять личную информацию, совершать покупки, транзакции, инвестиции). Если я правильно понял, что наличие данной сертификации позволяет сделать такую оценку. Ну и с другой стороны, получить ее не проблема и даже бесплатно.
Как или с помощью какой программы можно определить наличие цифрового сертификата у того или иного сайта? и желательно его категорию, которая присваивается при выдаче спецорганом SSL DV (выдача сертификата проводится с проверкой только домена), SSL OV (с проверкой организации), EV (с расширенной проверкой юрлица). Мошеннические сайты скорее всего последним вариантом сертификации пользоваться не станут..
Буду рад, если поведаете еще способы определения надежности сайтов))
Какой-то определенной программы для этих целей я еще не встречал, но пару советов по этому поводу могу дать.
Можно использовать, например, Chromium или Google Chrome. Возьмем, например, сайт https://www.thawte.com/
— компания, которая собственно цифровымисертификатами и занимается.
В адресной строке будет написано название компании и зеленый замочек. Это значит, что организация проверена, это как минимум SSL OV.
Если кликнуть на замочек, а в выпавшем окошке «Details», а затем «View Certificate», то можно увидеть информацию о сертификате. Для Thawte сертификат подписан следующим сертификатом: «thawte Extended Validation SHA256 SSL CA», а сертификат для click.alfabank.ru тоже подписан Thawte, но другим сертификатом. Это «thawte EV SSL CA — G3», то есть они тоже проходили Extended Validation.
Как-то так.
Раздел «Принцип работы SSL и TLS», «Клиент генерирует случайную цифровую последовательность».
Я был уверен что клиент генерирует сеансовый закрытый и, соответственно, открытый ключи (который вы, очевидно, и назвали «цифровая последовательность»). Открытый ключ передаётся серверу и сервер шифрует пакеты в сторону клиента сеансовым открытым клиентским ключом.
Уточните, пожалуйста.
Статья очень полезная! Даже есть практические примеры=) Только я не понял одну вещь — в чем различие между корневым сертификатом и серверным? или это одно и тоже?
Здравствуйте.
Хостер предложил услугу - SSL для виртуальных серверов. Воспользовались. Оказалось, что для третьего уровня, т.е. http://www.site.ru
сертификат недействителен, только для site.ru. Притом, посетителей упорно кидает на протокол https, не важно, заходят они на site.ru или на http://www.site.ru
. Разумеется, во втором случае браузер начинает истошно ругаться, а посетитель до сайта так и не добирается.
А для тех, кто до сайта таки добрался, сайт стал выглядеть криво, пропала часть меню, перестала отображаться часть картинок в выдаче некоторыми компонентами.
Сделать хороший сайт непросто, продающий - и того сложнее.
Нужно думать над позиционированием, писать статьи, подбирать иллюстрации.
Это крупные и важные задачи.
Но есть в работе над сайтом мелочи.
Они кажутся формальностью, и отвлекаться на них не хочется.
Забудет о них владелец сайта, а потом это выходит боком.
Одна из таких мелочей - SSL-сертификат.
Казалось бы, зачем он. Говорят, для защиты, но кому нужен мой сайт, брать-то там еще нечего. Так ведь?
Так, да не так. SSL-сертификат нужен для перевода сайта на защищенное соединение (HTTPS).
А оно действительно снижает риск самых разных видов мошенничества в сети.
Именно поэтому все больше сайтов переходят на него.
В России кампанию поддерживает Яндекс: HTTPS как знак качества сайта .
В связи с этим возникает еще два основания для перехода на безопасное соединение.
Чтобы склонить веб-мастеров использовать безопасный протокол, Яндекс и Google встраивают особые уведомления в свои браузеры.
Если SSL не установлен, и при этом сайт собирает чувствительные данные, браузеры заблокируют доступ к нему.
Пользователи уходят, когда видят эти уведомления.
Так отсутствие SSL снижает посещаемость и заработок с сайта .
Поисковики повышают сайты с SSL в поисковой выдаче.
Google считает HTTPS сигналом ранжирования с 2014 года , Яндекс объявил об этом в 2019 году .
Имейте в виду, это только один из многих факторов.
Поговорим о конкретных ситуациях, в которых необходимо безопасное соединение.
Итак, когда нужен SSL-сертификат.
Нужно убедиться, что информация, которую Вы собираете от пользователей или покупателей, достаточно защищена, ведь она может быть использована для кражи личных данных или денег.
SSL предотвращает утечку информации.
К тому же люди заботятся о своей безопасности.
Они не станут платить на Вашем сайте или оставлять контакты, если браузер поставит рядом с адресом сайта пометку «Не защищено».
Для доступа к Вашему сайту посетителям надо оставить логин и пароль?
Если так, Вам нужен SSL-сертификат, чтобы убедиться, что никто не украдет их пароли или не получит доступ к их профилю.
Вам нужно обеспечить эту безопасность, даже если Ваш сайт не содержит чувствительной информации.
Большинство людей используют одинаковые пароли (или вариации одного) для множества сайтов.
Так что если кто-то получит пароли Ваших пользователей, он может взломать их банковский аккаунт или другую платформу.
Ярлык «Не защищено» отпугивает современных интернет-пользователей.
Таким образом, если Вы хотите, чтобы Ваши посетители оставались на Вашем сайте, Вам нужно получить SSL.
Google Ghrome помечает все HTTP-сайты как небезопасные.
Все УЦ должны действовать в соответствии с ними.
Расширенная проверка проводится вручную, поэтому такой SSL стоит дорого.
Цены начинаются от 11500 рублей в год (около 4500 грн).
OV-сертификаты предоставляют следующий уровень доверия.
Он подтверждает права организации на использование доменного имени и ее существование.
Браузеры помечают сайты с OV-сертификатом замком.
Нажав на него, можно увидеть расширенные данные об организации.
Как пример, информационный сайт Сбербанка:
УЦ обычно проверяют заявителей на определенном уровне.
Например, по телефону, обращаясь к третьим лицам или организациям.
OV-сертификат выпускается с частично ручной проверкой, поэтому они стоят дешевле, чем EV.
Цены начинаются от 4500 рублей (около 1700 грн) в год.
Предоставляет нижний уровень доверия.
DV-сертификаты только демонстрируют, что домен принадлежит тому, кто запросил сертификат.
Доступны юридическим и физическим лицам.
Конечные пользователи видят информацию только о шифровании, не об организации.
Вот обычный сайт по продаже штор.
Процесс проверки обычно полностью автоматизирован.
Так, если сертификат покупается для использования на www.mydomain.com, он не может быть использован на mail.mydomain.com или www.otherdomain.com.
Если нужно защитить несколько поддоменов, можно купить Wildcard-сертификат. Он покрывает все поддомены.
Например, Wildcard-сертификат для *.mydomain.com может быть использован для:
Он не может быть использован для защиты mydomain.com and myotherdomain.com.
Бесплатные Wildcard-сертификаты выдает Let’s Encrypt.
Чтобы защитить несколько разных доменных имен одним сертификатом, понадобится сертификат с SAN (Subject Alternative Name).
Он позволит защитить четыре дополнительных доменных имени.
Например, Вы можете использовать один сертификат для:
Сертификаты с поддержкой разных имен стоят дорого.
Иногда выгоднее купить несколько SSL с поддержкой одного домена.
Если у Вас информационный сайт с поддоменами и Вы не собираете персональные данные - подойдет бесплатный Wildcard-сертификат от Let’s Encrypt.
Если у Вас сайт организации и Вам важно доверие (например, портал инвестиционной компании) - подойдет EV-сертификат.
Если у Вас банк или крупный интернет-магазин с миллионами пользователей - Вам нужен EV-сертификат.
Процедура несложная, но отнимет пару часов.
Придется разобраться с технической частью самому или обратиться за помощью к профессионалам.
Если решите подключить SSL высокого уровня доверия, то его сначала надо будет купить.
Обязательный участник процесса - удостоверяющий центр (или центр сертификации).
Как мы уже упоминали, это организация, которая выпускает и отзывает цифровые сертификаты.
УЦ подписывают SSL-сертификаты корневым сертификатом (CA certificate).
Корневые сертификаты устанавливаются во все популярные браузеры.
Именно поэтому браузеры могут распознать сайт с «хорошим SSL» и поставить рядом с его адресом замочек.
Корневые сертификаты выдают следующие центры сертификации: Comodo , Thawte , Symantec , GeoTrust , RapidSSL и другие.
Особой разницы, в каком из этих УЦ выпускать SSL, нет.
Исключение - Let’s Encrypt. Он выдает бесплатные SSL.
Купить SSL можно не только в центре сертификации.
SSL перепродают хостинг-провайдеры. Например,Ru-Center , Reg.ru , Макхост .
Узнайте, есть ли у Вашего провайдера такая услуга.
Она может стоить дороже, зато сотрудники поддержки помогут установить SSL и настроить HTTPS.
Есть и другие реселлеры и даже агрегаторы SSL. Например, LeaderSSL , FirstSSL , ISPsystem .
Здесь могут быть ниже цены - из-за скидок, которые агрегаторы получают за объем.
Кроме того, они помогают с выпуском SSL с высоким уровнем доверия: при расширенной проверке возникают проблемы, а у агрегаторов больше опыта в их разрешении.
Выберите продавца SSL, исходя из своих предпочтений.
После оплаты услуги надо отправить запрос на выпуск SSL.
Форма этого запроса и количество вводимых данных будут зависеть от того, какой SSL-сертификат Вы запрашиваете.
Если нужен простой SSL с проверкой домена, то будет достаточно электронной почты на домене.
Если нужен сертификат с проверкой организации, то приготовьтесь указать ее юридическое название, реальные адрес и телефон.
После заполнения данных продавец сгенерирует CSR-запрос и приватный ключ.
После этого останется только дождаться активации сертификата.
Для SSL уровня DV она проходит до двух дней. Сертификаты уровня EV и DV выдают дольше.
Проверка организации, как мы уже упоминали, сопровождается запросом документов и другими действиями.
Когда УЦ закончит проверку, на указанную почту придут данные для установки SSL-сертификата: сам сертификат, корневой сертификат, промежуточный сертификат и приватный ключ.
Теперь все это надо установить на хостинг или сервер, где размещается сайт.
Попросите помочь поддержку продавца или воспользуйтесь инструкциями контрольных панелей: cPanel , Plesk , ISPmanager .
Когда SSL установлен, сайт автоматически начнет работать по HTTPS.
При этом протокол HTTP тоже продолжит работать.
Чтобы перевести все запросы к сайту на безопасное соединение, нужно включить переадресацию.
Сделайте это, следуя инструкциям контрольных панелей.
Если Вам помогали сотрудники провайдера, то они наверняка уже позаботились об этом.
Обратите внимание! При переходе на HTTPS меняется адрес сайта. Поисковики Яндекс и Google рассматривают сайт с новым адресом как новый. Соответственно, они могут понизить сайт в результатах поиска.
Они автоматически запрашивают, устанавливают и обновляют SSL-сертификаты.
Чтобы установить бесплатный SSL, изучите инструкцию на сайте Let’s Encrypt или обратитесь за помощью к своему хостинг-провайдеру.
Добрый день, уважаемые подписчики, уверен, что в подавляющем большинстве вы слышали такие слова как сертификат безопасности или шифрования, либо SSL сертификат, и я уверен, что большинство из вас даже знает их назначение., если нет, то я вам об этом очень подробно расскажу на личных примерах, все как полагается, после этого вы уже будите более тонко понимать все рубежи безопасности, которые предоставляют нам SSL сертификаты, без них сейчас уже не возможно представить современный IT мир, с его банковскими переводами, электронной почтой smime или интернет магазинами.
Secure Socket Layer или ssl это, технология, призванная сделать доступ к сайтам более надежным и безопасным. Сертификат шифрования позволяет, надежно защитить трафик, передаваемый между браузером пользователя и веб ресурсом (сервером), к которому браузер обращается, все это происходит за счет протокола https. Сделано, это все после того, как бурное развитие интернета привело к огромному количеству сайтов и ресурсов, которые требуют от пользователя ввод личных, персональных данных:
Именно эти данные и являются добычей для хакеров, сколько уже было громких дел, с кражей персональной информации и сколько еще будет, ssl сертификат шифрования, призван это минимизировать. Разработкой технологии SSL выступила компания Netscape Communications, позднее она представила Transport Layer Security или проще TLS, это протокол основанный по спецификации SSL 3.0. И Secure Socket Layer и Transport Layer Security призваны обеспечить передачу данных между двумя узлами по интернету.
SSL и TLS не имеют принципиальных различий в своей работе, могут даже быть использованы на одном сервере одновременно, делается это исключительно из соображений обеспечения работы новых устройств и браузеров, так и устаревших, где Transport Layer Security не поддерживается.
Если рассматривать современный интернет, то там в качестве сертификата безопасности сервера и шифрования используется TLS, просто знайте это
Для примера откройте сайт Яндекса, я это делаю в Google Chrome, там на против адресной строки есть значок замка, щелкаем по нему. Тут будет написано, что подключение к веб-сайту защищено и можно нажать подробнее.
сразу видим значок Secure TLS connection, как я и говорил, большая часть интернет ресурсов именно на этой технологии. Давайте посмотрим сам сертификат, для этого жмем View certificate.
В поле о сведениях о сертификате видим его предназначение:
Всегда нужно знать историю, как сертификат шифрования эволюционировал и какие у него выходили версии. Так как зная это и принцип работы, будет проще искать решение проблем.
Давайте разбираться как работает протоколы SSL и TLS. Начнем с основ, все сетевые устройства имеют четко прописанный алгоритм общения друг с другом, называется он OSI, который порезан на 7 уровней. В ней есть транспортный уровень отвечающий за доставку данных, но так как модель OSI это некая утопия, то сейчас все работаю по упрощенной модели TCP/IP, из 4 уровней. Стек TCP/IP, сейчас стандарт передачи данных в компьютерных сетях и он включает в себя, большое количество известных вам протоколов прикладного уровня:
Список можно продолжать очень долго, так их более 200 наименований. Ниже представлена схема сетевых уровней.
Ну и схема стека SSL/TLS, для наглядности.
Теперь все тоже самое простым языком, так как не всем понятны эти схемы и принцип работы ssl и tls не понятен. Когда вы открываете например мой блог сайт, то вы обращаетесь по прикладному протоколу http, при обращении сервер видит вас и передает на ваш компьютер данные. Если это представить схематично, то это будет простая матрешка, прикладной протокол http, кладется в стек tcp-ip.
Если бы на сайт стоял бы сертификат шифрования TLS, то матрешка протоколов была бы посложнее и выглядела бы вот так. Тут прикладной протокол http, кладется в SSL/TLS, который в свою очередь кладется в стек TCP/IP. Все тоже самое, но уже зашифровано, и если хакер перехватит эти данные по пути их передачи, то получит всего навсего цифровой мусор, а вот расшифровать данные может только та машина, которая устанавливала соединение с сайтом.
Вот еще одна красивая и наглядная схема создания защищенного канала.
На иллюстрации, черные стрелки показывают сообщения, которые отправляются открытым текстом, синие - это сообщения, подписанные открытым ключом, а зеленые - это сообщения, отправленные с помощью шифрования объёмных данных и того MAC, о которых стороны договорились в процессе переговоров.
Ну и подробно про каждый этап обмена сетевых сообщений протоколов SSL/TLS.
Давайте теперь поймем где взять сертификат шифрования, или как получить ssl сертификат безопасности. Способов конечно несколько, есть как платные, так и бесплатные.
Этот способ, подразумевает использование самоподписного сертификата (self-signed), его можно сгенерировать на любом веб-сервере с ролью IIS или Apache. Если рассматривать современные хостинги, то в панелях управления, таких как:
там это штатный функционал. Самый большой плюс в самоподписных сертификатах шифрования, это то, что они бесплатные и начинаются, сплошные минусы, так как никто кроме вас не доверяет этому сертификату, вы наверняка видели в браузерах вот такую картину, где сайт ругается на сертификат безопасности.
Если у вас самоподписный сертификат, используется исключительно для внутренних целей, то это нормально, а вот для публичных проектов, это будет огромный минус, так как ему никто не доверяет и вы лишитесь большого числа клиентов или пользователей, которые у видя ошибку сертификата безопасности в браузере, сразу его закроют.
Давайте смотреть как можно получить ssl сертификат безопасности, для этого формируется запрос на выпуск сертификата, называется он CSR запрос (Certificate Signing Request). Делается это чаще всего у специальной компании в веб форме, которая спросит вас несколько вопросов, про ваш домен и вашу компанию. Как только вы все внесете, сервер сделает два ключа, приватный (закрытый) и публичный (открытый). Напоминаю открытый ключ не является конфиденциальным, поэтому вставляется в CSR запрос. Вот пример Certificate Signing Request запроса.
Все эти не понятные данные легко можно интерпретировать специальными CSR Decoder сайтами.
Примеры двух сайтов CSR Decoder:
Состав CSR запроса
Как только Certificate Signing Request сгенерирован, можно начинать оформлять заявку на выпуск сертификата шифрования. Центр сертификации будет производить проверку, всех данных указанных вами в CSR запросе, и если все хорошо, вы получите свой ssl сертификат безопасности и вы его сможете использовать для https. Теперь ваш сервер, автоматом сопоставит выпущенный сертификат, со сгенерированным приватным ключом, все вы можете шифровать трафик подключения клиента к серверу.
Что такое CA - Certification Authority или центр сертификации, читайте по ссылке слева, я подробно рассказал об этом там.
В сертификате хранится следующая информация:
Основных видов сертификатов безопасности три:
И так сертификаты шифрования, подтверждающие только домен ресурса, это самые распространенные в сети сертификаты, их делают всех быстрее, автоматически. Когда вам нужно проверить такой сертификат безопасности, отправляется email с гиперссылкой, кликая по которой подтверждается выпуск серта. Хочу отметить, что письмо вам отправят, только не подтвержденный email (approver email), указанный при заказе сертификата шифрования.
approver email так же имеет требования, логично, что если вы заказываете сертификаты шифрования для домена, то и электронный ящик должен быть из него, а не mail или rambler, либо он должен быть указан в whois домена и еще одно требование название approver email, должно быть по такому шаблону:
Я обычно беру ящик postmaster@ваш домен
Сертификат tls-ssl подтверждающие доменное имя выпускаются, когда CA произвел валидацию того, что заказчик обладает правами на доменное имя, все остальное, что касается организации в сертификате не отображается.
Сертификаты шифрования tls-ssl, будет содержать название вашей организации, его получить частное лицо просто не сможет, его культурно пошлют регистрировать ИП. Делается он от 3 до десяти рабочих дней, все зависит от центра сертификации, который его будет выпускать.
И так, вы направили CSR запрос на выпуск сертификата шифрования для вашей организации, CA начинает проверять, реально ли ИП рога и копыта существуют, как в CSR и принадлежит ли ей домен указанный в заказе.
Сам сертификат шифрования extendet Validation - EV, самый дорогой и получается всех сложнее, у них кстати есть green bar, вы его точно видели, это когда на сайте в адресной строке посетитель видит зеленую стоку с названием организации. Вот пример клиент банка от сбербанка.
К расширенным сертификатам шифрования (extendet Validation - EV) самое большое доверие, это и логично вы сразу видите, что компания существует и прошла жесткие требования к выдаче сертификата. SSL cертификаты extendet Validatio делаются CA, только при выполнении двух требований, что организация владеет нужным доменом и, что она сама существует в природе. При выпуске EV SSL сертификатов, существует строгий регламент, в котором описаны требования перед выпуском EV сертификата
SSL cертификаты extendet Validatio выпускаются примерно от 10-14 дней, подходят как для некоммерческих организаций, так и для государственных учреждений.
Следующим важным вопросом, будет какие типы SSL - TLS сертификатов шифрования существуют, и их отличия и стоимость.
список сертификатов, у которых есть такая поддержка, IDN доменов:
В будущих статьях, мы еще сами по настраиваем CA и будем на практике использовать SSL/TLS сертификаты шифрования.
Все сайты по умолчанию используют протокол HTTP для получения и передачи информации. Он применяется для отображения HTML-страниц, тех самых, что видит каждый пользователь, заходя по адресу сайта. Особенность HTTP в том, что он не хранит никакой информации о том, был ли посетитель на сайте раньше или нет. Это ускоряет загрузку сайта, но при этом нет практически никакой безопасности. В результате появился протокол HTTPS — (Secure HyperText Transfer Protocol).
«Безопасный HTTP» специально разработали для обмена конфиденциальной информацией — паролями, персональными данными, банковскими реквизитами. Такие данные необходимо передавать по безопасному каналу, чтобы третьи лица не могли перехватить их или взломать сайт.
Поскольку HTTP и HTTPS очень схожи между собой, пользователь разницу не чувствует. Но HTTPS обладает дополнительным уровнем защиты, используя специальный протокол для шифрования данных — SSL. HTTPS отвечает за то, чтобы данные были переданы в полном объеме, без потерь. SSL-протокол обрабатывает передаваемую информацию и шифрует ее от злоумышленников. Действуя «сообща», HTTPS и SSL надежно защищают данные от взлома и утечки. Google фиксирует это важное отличие от HTTP и проверяет его при отображении сайта в поиске.
Если сайт не защищен SSL-сертификатом, то в строке браузера Google Chrome, рядом с адресом появится отметка «Не защищено». Она предупреждает пользователя, что небезопасно оплачивать услуги на сайте, отправлять персональные данные через формы и даже ставить лайки и делать репосты в соцсетях.
Google заботится о своих пользователях и хочет, чтобы сайты, по которым попадает клиент из поиска, были надежно защищены и безопасны для использования. Для этого поисковик запрашивает у сайта специальный SSL-сертификат. Получить его можно, обратившись в специальные организации, которые выступают в качестве доверительной стороны между клиентом и сайтом. Наличие сертификата серьезно влияет на выдачу сайта в поиске и получить его нужно даже если компания не занимается обработкой персональных данных пользователей.
Если сайт не защищен SSL-сертификатом, то постепенно он начнет терять свои позиции в поиске Google. Отсутствие HTTPS-протокола говорит пользователям и поисковику, что безопасность данных будет под угрозой, а значит, отображать сайт на первых страницах результатов поиска и переходить на него нельзя. Кроме этого, в строке браузера Google Chrome, рядом с адресом появится отметка «Не защищено». Она предупредит пользователя, что небезопасно оплачивать услуги на сайте, отправлять персональные данные через формы и даже ставить лайки и делать репосты в соцсетях.
Очень негативно. Фактически, сертификат сайта — его «паспорт» в интернете. Может ли гражданин полноценно существовать без паспорта?
Установить SSL-сертификат.
Клиентам компании WebCanape доступна услуга установка SSL-сертификатов, с помощью которых сохранится репутация компании и сайта.
При заказе нового сайта, оплате доменного имени и хостинга через WebCanape — установка и обслуживание SSL-сертификата в течение первого года — бесплатно.
SSL-сертификат — специальный протокол связи, проверяющий подлинность и шифрующий данные между пользователем и веб-сайтом. Злоумышленники не взломают и не украдут персональную информацию, платежные сведения и другие данные — расшифровать информацию можно только с помощью специального генерируемого ключа, уникального для каждого пользователя.
Существует три типа сертификатов: «начальный», «бизнес» и «расширенного уровня». Какие они?
Кроме сертификата, есть «печать доверия» или «логотип доверия». Это изображение с логотипом центра сертификации, демонстрирующее факт проверки сайта. Ее ставят вместе с сертификатом, чтобы продемонстрировать, что сайт был проверен и надежно защищен. Существует два вида:
Некоторые сертификаты не просто защищают домен сайта. К примеру:
С первого взгляда выглядит сложно, поэтому расскажем подробнее, что купить, чтобы все было хорошо.
Шаг 1. Определите особенности сайта
Шаг 2. Домен оформлен на физическое или юридическое лицо?
Шаг 3. Насколько крупный сайт?
На начальном этапе мы рекомендуем установить сертификат GlobalSign DomainSSL от Reg.ru. Если вы клиент нашего хостинга и покупали доменное имя через WebCanape, то сертификат дается на первый год в подарок, далее его продление будет стоить около 2500 руб. в год. Плюс переустановка на хостинг — 3000 руб. Однако этот сертификат не работает с кириллическими доменами и не защищает домены третьего уровня.