Протокол SSL

SSL (Secure Socket Layer, Протокол (или уровень) защищенных сокетов) спроектирован для обеспечения конфиденциальности обмена между двумя прикладными процессами клиента и сервера. Он предоставляет возможность аутентификации сервера и, опционно, клиента. SSL и требует применения надежного транспортного протокола (например, TCP).

SSL – это коммуникационный протокол с шифрованием, применяемый для передачи защищенной информации по Internet. Преимуществом SSL является то, что он независим от прикладного протокола. Протоколы приложения, такие как HTTP, FTP, TELNET и т.д. могут работать поверх протокола SSL совершенно прозрачно.

Взаимодействие SSL с приложениями:

 
 

 

 


SSL действует как промежуточный протокол между TCP/IP и протоколами прикладных уровней и, когда клиент устанавливает защищенное соединение, невидимо осуществляет кодирование и декодирование информации.

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

Протокол SSL предоставляет "безопасный канал", который имеет три основные свойства:

  • Канал является частным. Шифрование используется для всех сообщений после простого диалога, который служит для определения секретного ключа.
  • Канал аутентифицирован. Серверная сторона диалога всегда аутентифицируется, в то время как клиентская – аутентифицируется опционно.
  • Канал надежен. Транспортировка сообщений включает в себя проверку целостности.

Сертификат представляет собой зашифрованную информацию, которая связывает открытый ключ шифрования с удостоверением подлинности личности, сервера или другой сущности, известной как субъект. Издателем сертификата является бюро сертификации (Certification Authority – CA). Сертификат содержит:

- имя объекта,

- название организации, с которой связан объект,

- отдел организации, с которой связан объект,

- название города или района, в котором находится объект,

- название штата или области, в котором находится объект,

- название страны, в которой находится объект,

- серийный номер сертификата,

- время действия сертификата.

Самые известные СА – это Verisign и Thawte. Они исследуют различные юридические документы организаций, которые хотят установить свою аутентичность в Internet и после независимой проверки подписывают (заверяют) сертификат собственным открытым ключом.

Сертификат обычно передается в бинарном или кодированном текстовом формате.

Пример транзакции SSL:


 

 

         
   
 
   
 
 
Клиент
 
   

 


Сервер возвращает
  1. Заверенный сертификат сервера
  2. Открытый текст с данными идентификации (ID)
  3. Контрольную сумму данных ID, зашифрованных с помощью секретного ключа сервера

 


 


 

Для того, чтобы web-сервер Apache реагировал на соединения SSL, нужно убедиться в том, что он прослушивает порт 443 – стандартный порт для SSL. Указать это можно в директиве

 

Listen 443

 

Для активизации SSL нужно указать Apache способ и время использования этого протокола, введя директивы SSL в конфигурацию сервера.

Включение механизма SSL:

 

SSLEngine On

 

Личный ключ сервера:

 

SSLCertificateKeyFile conf/ssl/www.server.com.key

 

Сертификат для личного ключа:

 

SSLCertificateFile conf/ssl/www.server.com.crt

 

При динамической загрузке SSL эти директивы нужно размещать после директив

 

LoadModule/AddModule

 

чтобы Apache их понимал. Если указать директивы на уровне сервера, SSL будет разрешен для всего сервера и обычные НТТР-соединения не будут работать ни по какому порту. Если же расположить их в виртуальном хосте на основе IP-адресов, SSL будет разрешен только для одного хоста, выделенного для порта 443.

 

<VirtualHost 192.168.1.1:443>

ServerName server.com

DocumentRoot /www/docs

SSLCertificateKeyFile conf/ssl/www.server.com.key

SSLCertificateFile conf/ssl/www.server.com.crt

</VirtualHost>

 

Реализация SSL в отдельной области:

 

<Directory /home/www/secure/>

SSLrequireSSL

</Directory>