Защита информации
Инфо-Сервер 2.0 поддерживает защиту соединения с клиентом средствами протоколов SSL (Secure Sockets Layer) и TLS (Transport Layer Security). Используется свободная реализация OpenSSL. Защита соединения подразумевает шифрование передаваемых данных и возможность подтвеждения подлинности клиента и сервера с помощью сертификатов.
Возможна, как и прежде, работа без защиты соединения. В этом случае данные передаются по сети в открытом виде и могут быть перехвачены с помощью специальных программ - снифферов. В таком перехвате существует две опасности. Во первых, злоумышленник или любопытствующий получает возможность видеть коды счетов, суммы и другую информацию, передаваемую в SQL-запросах. Во вторых, сетевой пакет может быть изменен злоумышленником, в т. ч. так, что сервер примет его за пакет от легального клиента. Защита соединения обеспечивает как конфиденциальность информации, так и аутентификацию обменивающихся сторон, и целостность данных.
Инфо-Сервер 2.0 допускает настройку уровня защиты соединения (SecurityLevel) в файле infosrv2.ini. Соответствующий уровень защиты должен быть указан для каждого клиента в файле infs2cln.ini. В следующей таблице представлено описание поддерживаемых уровней защиты.
Уровень
|
Название
|
Описание
|
0
|
нет защиты
|
Соединение не защищено. Данные не шифруются. Используется протокол TCP/IP без каких-либо дополнительных надстроек. |
1
|
средний
|
Данные шифруются. Сервер имеет набор сертификатов, подтверждающих его подлинность. Клиенты не имеют собственных сертификатов. |
2
|
высокий
|
Данные шифруются. Сервер и клиенты используют наборы сертификатов, подтверждающих их подлинность. |
3
|
максимальный
|
Данные шифруются. Сервер и клиенты используют наборы сертификатов, подтверждающих их подлинность. Происходит многократный обмен сертификатами в процессе работы. |
Чем выше уровень защиты соединения, тем сложнее процедура обмена данными. Это может приводить к незначительному снижению скорости обмена с увеличением уровня защиты. Запросы к Инфо-Серверу очень короткие, ответы клиенту еще короче, поэтому, в случае Инфо-Сервера 2.0, уровень защиты на скорость работы практически не влияет.
Для выбора используемых криптографических алгоритмов в файле настроек сервера infosrv2.ini можно указать их список (параметр Ciphers). Использование тех или иных криптографических алгоритмов может быть законодательно ограничено в некоторых государствах. Если параметр Ciphers на задан, то реализация OpenSSL выбирает алгоритм на свое усмотрение. Для получения диагностической информации уровня SSL можно в файле infosrv2.ini указать параметры SSLLog = <имя файла> и SSLLogLevel = 255. В файл протокола SSL, в частности, выводится информация об используемом для соединения криптографическом алгоритме.
Для применения защиты соединения необходимо создать сертификаты по крайней мере для сервера. Для создания сертификатов можно воспользоваться программой openssl.exe. Сертификаты имеют ограниченный срок действия и требуют периодического обновления. Имена файлов сертификатов и пароль шифрования ключа задаются в файлах infosrv2.ini и infs2cln.ini для сервера и клиента соответственно.
Программа установки Инфо-Сервера 2.0 позволяет поставить примеры файлов сертификатов. Они предназначены только для демонстрации работы, но не для использования в реальных условиях. Для создания рабочих, уникальных сертификатов установите программу openssl.exe (поставляется с Инфо-Сервером 2.0) и воспользуйтесть прилагаемыми bat-файлами. Ниже описывается этот процесс создания сертификатов для сервера и клиентов.
Для генерации сертификатов необходимо выполнить:
1. cert_root.bat - для генерации корневого сертификата root.pem, который
будет подписывать сертификаты сервера и клиента. При генерации будет запрашиваться
пароль для шифрования файла ключа root_key.pem и его подтверждение. Его нужно
указать для генерации корневого сертификата и для генерации остальных сертификатов.
После генерации всех сертификатов файл root_key.pem следует удалить, а пароль
забыть. root.pem - указывается в файлах infosrv2.ini
и infs2cln.ini (CAFile = root.pem). Вместо генерации
корневого сертификата, Вы можете воспользоваться собственным сертификатом, подписанным
доверенной стороной.
2. cert_srv.bat - для генерации серверного сертификата. При генерации сначала будет запрашиваться пароль для шифрования файла ключа (его нужно запомнить и указать в файле infosrv2.ini KeyPswd = ...) и его подтверждение, а затем пароль файла ключа корневого сертификата. В результате будет сгенерировано два файла: server.pem - сертификат и server_key.pem - файл ключа. Эти файлы указываются в файле infosrv2.ini CertFile = server.pem и KeyFile = server_key.pem.
3. cert_cln.bat - для генерации клиентского сертификата. При генерации сначала будет запрашиваться пароль для шифрования файла ключа (его нужно запомнить и указать в файле infs2cln.ini KeyPswd = ...) и его подтверждение, а затем пароль файла ключа корневого сертификата. В результате будет сгенерировано два файла: client.pem - сертификат и client_key.pem - файл ключа. Эти файлы указываются в файле infs2cln.ini CertFile = client.pem и KeyFile = client_key.pem.
Шаг 3 повторить для каждого клиента, желательно с разными паролями, после чего root_key.pem - удалить, а его пароль забыть, чтобы невозможно было больше генерировать сертификаты.
Если планируется использовать уровень защиты 1, то шаг 3 можно не выполнять.
Замечание. Файлы сертификатов могут иметь произвольные имена.
В описанном выше порядке генерации сертификатов для определенности используются
имена, укзананные в поставляемых bat-файлах. Вы, при желании, можете легко изменить
имена файлов сертификатов в bat-файлах. Например, для клиента masha на masha.pem
и masha_key.pem и назвать измененный bat-файл cert_masha.bat.