Единый реестр запрещённых сайтов - это просто даже в UNIX

Публикация: 14 Декабрь 2012 - 08:47, редакция: 14.12.2012 12:44

В октябре текущего года правительство осчастливило всех операторов связи Постановлением №1101 от 26 октября 2012 года "О единой автоматизированной информационной системе "Единый реестр доменных имён, указателей страниц сайтов в информационно-телекоммуникационной сети "Интернет" и сетевых адресов, позволяющих идентифицировать сайты в информационно-телекоммуникационной сети "Интернет", содержащие информацию, распространение которой в Российской Федерации запрещено". В связи с этим постановлением, каждый провайдер обязан блокировать доступ к сайтам, находящимся в списке запрещенных. Чтобы получить доступ к реестру оператору требуется сформировать специальный запрос и подписать его квалифицированной подписью. Звучит страшно? На самом деле, всё просто.

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

Рассмотрим ситуацию с сервером на базе UNIX на площадке оператора связи. Далее делаем следующее:

Шаг 1: Получаем квалифицированный сертификат ключа проверки электронной подписи (ЭП) в одном из аккредитованных Минкомсвязи УЦ. Кстати, это можно сделать и у нас. Ключ электронной подписи просим разместить, например, на флешке.

Шаг 2: В этом же УЦ удобно сразу приобрести лицензию на право использования СКЗИ "КриптоПро CSP" версии 3.6 на рабочем месте UNIX и его дистрибутив.

Шаг 3: Устанавливаем на сервер КриптоПро CSP в соответствии с эксплуатационной документацией.

Шаг 4: Предполагая, что запросы к реестру будут формироваться и отправляться автоматически по расписанию, избавляемся от необходимости каждый раз вставлять флешку с ключом. Для этого копируем ключ на жёсткий диск сервера:

cp -r /media/flash/RaUser-x.000 /var/opt/cprocsp/keys/<username>/

При этом не забываем, что сам сервер становится ключевым носителем, и защищаем его должным образом.

Шаг 5: Устанавливаем сертификат из ключевого контейнера в хранилище:

/opt/cprocsp/bin/<arch>/certmgr -inst -cont '\\.\hdimage\<contname>' -store uMy

Здесь <contname> - имя контейнера, которое можно получить с помощью следующей команды:

/opt/cprocsp/bin/<arch>/csptest -keyset -enum_c -verifyc -fqcn

Шаг 6:  Готовим запрос.
Открываем  памятку оператора связи и видим, что нам надо сформировать очень простой файл XML вида:

<?xml version="1.0" encoding="windows-1251"?>
<request>
<requestTime>2012-01-01T01:01:01.000+04:00</requestTime>
<operatorName>Наименование оператора</operatorName>
<inn>1234567890</inn>
<ogrn>1234567890123</ogrn>
<email>email@email.ru</email>
</request>

Такой  запрос можно сформировать, например, средствами PHP:

$xmlstr = <<<XML
<?xml version="1.0" encoding="windows-1251"?>
<request></request>
XML;
$xml = new SimpleXMLElement($xmlstr);
$xml->addChild('requestTime', date('c'));
$xml->addChild('operatorName', "OOO \"CRYPTO-PRO\"");
$xml->addChild('inn', '007717107991');
$xml->addChild('ogrn', '1037700085444');
$xml->addChild('email', 'name@cryptopro.ru');
$file = fopen('Request.xml', "w");
fwrite($file, $xml->asXML());

Шаг 7. Создаём отсоединённую (detached) подпись в формате PKCS#7 с помощью утилиты командной строки cryptcp, которая входит в состав КриптоПро CSP.

$cmd="/opt/cprocsp/bin/amd64/cryptcp";
$flags=" -sign -uMy -dn <название_компании> -q1 -der -detached Request.xml Request.xml.sig";
$cmd .= $flags;
$output = shell_exec($cmd);

В итоге мы имеем два файла Request.xml и Request.xml.sig. Запрос можно проверить по ссылке. И требования законодательства соблюдены.

То же самое можно сделать с помощью КриптоПро JCP и следующего примера.

Афанасьев Евгений

Беляев Анатолий

Смирнов Павел