Одним из элементов безопасности современного предприятия является использование защищенных каналов связи. Защищенные каналы связи позволяют предотвратить несанкционированный просмотр и изменение данных. Одним из наиболее популярных протоколов, реализующих защищенный канал, является протокол 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).