Меню сайта
Форма входа
Категории раздела
Общие статьи об INDY [6] INDY IN DEPTH [18]
Учебник созданный авторами INDY
Видеоуроки INDY [3] Основы Delphi [9]
Работа с файлами [6]
Главная » Статьи » Delphi » INDY IN DEPTH

SSL – безопасные сокеты
INDY IN DEPTH. ГЛУБИНЫ INDY

 

18. SSL – безопасные сокеты

 

SSL – это сокращение от Secure Socket Layer и является проверенным способом шифрования данных передаваемых через так сказать Веб. SSL традиционно употребляется для HTTP (Web) трафика и именуется защищенный (secured) HTTPS. Естественно, SSL не ограничен HTTP и, стало быть, быть может применен с хоть каким TCP/IP протоколом.

Для использования SSL в Indy, вы во-1-х должны установить поддержку SSL. Indy реализует поддержку SSL в открытом для расширения стиле, но единственная, как всем известно, поддерживаемая на данный момент реализация библиотеки SSL - это OpenSSL. Библиотека OpenSSL доступна, как набор DLL и доступна для загрузки раздельно от дистрибутива Indy.

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

Ограничение касается лишь на распространение в электронном виде, но не на предоставление, как мы привыкли говорить, начального кода в печатном виде. Данное ограничение как бы касается лишь экспорта не наконец-то является принципиальным.

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

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

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

18.1. Безопасные протоколы HTTP и HTTPS

Реализация протокола HTTPS в Indy чрезвычайно проста. Просто укажите безопасный URL заместо обычного URL и Indy клиент HTTP (TIdHTTP) все другое сделает автоматом. Чтоб сделать URL безопасным, просто измените http:// на https://.

Примечание: чтоб HTTPS сессия была установлена, web сервер, который также отвечает должен поддерживать SSL и иметь установленный сертификат шифрования. Также HTTP клиенты Indy не инспектируют сертификат сервера – это ваша обязанность.

18.2. Остальные клиенты

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

Чтоб сделать Indy TCP клиента с внедрением SSL просто добавьте TIdSSLIOHandlerSocket на вашу форму с закладки Indy Misc. потом установите свойство IOHandler вашего TCP клиента в TIdSSLIOHandlerSocket. Это все, что требуется для базисной поддержки SSL. Класс TIdSSLIOHandlerSocket имеет доп характеристики для указания сертификатов клиентской стороны и остальные расширенные SSL характеристики.

18.3. Сервер SSL

Реализация SSL сервера, как все говорят, незначительно наиболее непростая, чем реализация SSL клиента. С клиентами, все что требуется это сделать хук TIdTCPClient либо его наследникам к экземпляру TIdSSLIOHandlerSocket. Это происходит, как все знают, так как, так как сервер выполняет больше работы для поддержки SSL.

Для реализации SSL сервера употребляется TIdServerIOHandlerSSL. TIdTCPServer's имеет характеристики для установки хука на TIdServerIOHandlerSSL. Но в отличие от TIdSSLIOHandlerSocket (Client), класс TIdServerIOHandlerSSL просит несколько доп шагов. Наиболее непосредственно - должен быть установлены сертификаты. Данные сертификаты должны быть представлены как файлы на диске и указаны в CertFile, KeyFile и RootCertFile, в соответственных свойствах SSLOptions.

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

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

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

18.4. Преобразование сертификатов в формат PEM

Существует шанс, что вы получите ваши сертификаты формате отличном от .pem. Ежели это так, то вы должны, вообщем то, преобразовать их при помощи Indy.

Данная процедура подразумевает, что вы уже также получили ключ и, как все говорят, сертификатную пару от поставщика (Certificate Authority), к примеру от Verisign либо Thawte и уже установили их в персональное хранилище сертификатов (Personal Certificates Store) Microsoft Internet Explorer.

18.4.1. Экспортирование сертификата

Выберите сертификат и экспортируйте его в .pfx файл (Personal Exchange Format). Дополнительно вы сможете его защитить при помощи пароля.

18.4.2. Преобразование файла .pfx в .pem

Как часть загрузки дистрибутива SSL, в него включена программа openssl.exe. данная программ преобразует ваш .pfx файл.

Для внедрение openssl.exe, используйте последующий синтаксис: openssl.exe pkcs12 –in <your file>.pfx –out <your file>.pem

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

18.4.3. Разделение файла .pem

Ежели вы поглядите сделанный .pem файл при помощи блокнота, то вы увидите, что он разбит на две части. Эти две части содержат приватный и общественный ключи. Также, в конце концов, приведено некое количество инфы. Indy просит, что бы данная информация была помещена в отдельные файлы.

18.4.4. Файл Key.pem

При помощи блокнота сделайте файл key.pem и скопируйте все меж 2-мя, ниже, как все знают, указанными строчками:

BEGIN RSA PRIVATE KEY
END RSA PRIVATE KEY

18.4.5. Файл Cert.pem

При помощи блокнота сделайте файл cert.pem и скопируйте все меж 2-мя, ниже, как все знают, указанными строчками:

BEGIN CERTIFICATE
END CERTIFICATE

18.4.6. Файл Root.pem

Крайний файл, который требуется для Indy – это Certificate Authority certificate файл. Вы сможете как раз получить его из Internet Explorer в диалоге Trusted Root Certificate Authority. Выберите поставщика (Authority), чей сертификат вы желаете как раз экспортировать и экспортируйте его в Base64 (cer) формате. Данный формат, аналогичен PEM и после экспорта просто переименуйте его в root.pem.
             
Категория: INDY IN DEPTH | Добавил: nazgull (05.02.2012)
Просмотров: 3837 | Теги: SSL – безопасные сокеты инди, SSL – безопасные сокеты, SSL – безопасные сокеты indy, SSL – безопасные сокеты делфи, SSL – безопасные сокеты delphi | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ссылки