Использование SSL при работе с web-сервисами

Одним из элементов безопасности современного предприятия является использование защищенных каналов связи. Защищенные каналы связи позволяют предотвратить несанкционированный просмотр и изменение данных. Одним из наиболее популярных протоколов, реализующих защищенный канал, является протокол SSL. Данная статья описывает, как можно использовать протокол SSL при работе с web-сервисами "1С:Предприятия".

 

SSL (Secure Socket Layer) - протокол, использующийся для обеспечения защищенного взаимодействия между клиентом и сервером. SSL базируется:

·        на взаимной аутентификации клиента и сервера для того, чтобы и клиент, и сервер были уверены в том, что они те, за кого себя выдают;

·        цифровых подписях, для обеспечения целостности данных (защиты данных от несанкционированного изменения);

·        шифровании, для обеспечения конфиденциальности данных (защиты данных от несанкционированного просмотра).

 

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

 

SSL-протокол использует SSL-сессию для установки защищенного соединения между клиентом и сервером. Сессия устанавливается путем обмена между клиентом и сервером последовательностью сообщений. При установке сессии могут выполняться такие действия, как:

·        установка алгоритмов шифрования, которые будут использоваться для шифрования и цифровой подписи передаваемых данных;

·        установка сессионного ключа;

·        аутентификация сервера на клиенте;

·        аутентификация клиента на сервере.

 

SSL-сессия может быть переиспользована между клиентом и сервером.

 

Для выполнения аутентификации клиента на сервере и сервера на клиенте SSL использует сертификаты. Сертификат является документом, в котором описывается набор параметров того, для кого выполняется аутентификация. Например, сертификат может содержать имя пользователя или имя веб-сайта сервера. Сертификат также имеет цифровую подпись, которая используется для проверки его валидности. Для предотвращения возможности неконтролируемой выдачи сертификатов используются цепочки сертификатов. Началом цепочки сертификатов выступает Центр Сертификации - организация, занимающаяся выдачей сертификатов. Если определенному пользователю требуется сертификат, он посылает запрос в Центр Сертификации на выдачу сертификата. Центр Сертификации выдает готовый сертификат путем подписывания запроса собственным закрытым ключом. Пользователь, которому выдан сертификат, может, в свою очередь, выступать в качестве Центра Сертификации для других пользователей. Т. е. образуется цепочка сертификатов, корнем которой является корневой Центр Сертификации, как правило, общеизвестная организация. Чтобы клиент принял данный сертификат, он должен быть в списке сертификатов, которым доверяет этот клиент. В списке может быть как сам сертификат, так и любой сертификат из цепочки сертификатов данного сертификата. Как правило, это сертификат корневого Центра Сертификации.

 

Одним из наиболее общеупотребимых применений протокола SSL является его использование для передачи HTTP-запросов (HTTPS-протокол). В этом случае URL-схема адресации для таких ресурсов - https, а порт по умолчанию – 443.

 

Механизм web-сервисов "1С:Предприятия" позволяет как использовать, так и реализовывать https web-сервисы.

 

Клиентская часть механизма web-сервисов автоматически по URL-схеме (https) расположения web-сервиса определяет, что взаимодействие с таким web-сервисом должно вестись по защищенному каналу связи. Клиентская часть также требует, чтобы с сервером был связан валидный сертификат, выданный известным клиенту Центром Сертификации.

 

Сертификат сервера является валидным, если его цифровая подпись соответствует содержимому сертификата, его дата действия не просрочена и веб-сайт, на который выдан данный сертификат, соответствует веб-сайту сервера. Если сертификат не является валидным, например, веб-сайт сертификата не соответствует веб-сайту сервера, то клиент не сможет взаимодействовать по протоколу SSL с web-сервисами этого сайта.

 

Чтобы сертификат сервера был принят клиентом, нужно поместить его или сертификат Центра Сертификации, выдавшего данный сертификат сервера, в файл cacert.pem, который находится в каталоге bin "1С:Предприятия". В этом файле перечислены все сертификаты, которым доверяет данный клиент. Файл имеет формат PEM (Privacy Enhanced Mail) - текстовый формат, в котором сертификаты закодированы в base64 последовательности.

 

https web-сервисы разрабатываются так же, как и обычные http web-сервисы, но требуют дополнительной настройки веб-сервера. Для IIS веб-сервера настройка заключается в привязке к веб-сайту серверного сертификата и настройке виртуальной директории web-сервиса. Серверный сертификат может быть получен от Центра Сертификации, в качестве которого может выступать любой Windows Server 2003 с установленным сервисом сертификатов. После того как сертификат связан с веб-сайтом, для виртуальной директории web-сервиса нужно указать, что доступ к ней осуществляется по защищенному каналу связи (см. документацию по IIS).

 

Для Apache web-сервера также нужно указать серверный сертификат и признак работы по защищенному каналу. Сертификат может быть получен при помощи утилиты openssl (см. документацию по mod_ssl).