Pull to refresh

Где мои ключи???!!!

Reading time2 min
Views1.1K
Сугубо технический кросс-пост с моего основного блога:
— Нет, правда. Взяли вы полученный откуда-то сертификат, установили в localmachine store, и вдруг ваша программа его не видит!!! Это что? Это как? Что за безобразие? Караул! Грабят! Вирус! Ну, не совсем…

Для начала, как все это дело устанавливается? Сертификат записывается в registry, так и положено, в нем же находится и публичный-общественный-открытый ключ. А вот приватный ключ в сертификате, равно как и в registry, не хранится. Если честно, не знаю с чем конкретно связана сия конспирация… ну, понятное дело, хранили бы они его где-то в секретном месте, ан, нет, место публичное – дальше некуда. Или почти некуда, о чем чуть пониже. Называется оно “%system drive%\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys”, ну или что там в локализованной верссии.

Фолдер этот (или там директория – называйте как нравится) – особенный. Во-первых, нормальной пользовательской версии Windows там хранить практически нечего, поэтому он нередко пустой. Или по крайней мере, иногда бывает пустым. Что, увы, очень важно для нашей истории, о чем я опять же скажу чуть попозже.

Так вот, устанавливаете это вы сертификат. Свеженький, только что спеченный, от самой что ни на есть Certificate Authority. Сертификат, понятное дело идет в registry, а ключ? Ключ – в тот самый фолдер (см. выше). Причем ACL на него ставится тот же самый, что и на фолдер. Что тоже логично, ведь права наследуются, верно? А дальше происходит очень умная, ну просто немного слишком умная вещь – у файла с приватным ключом удаляется доступ для Everyone (или, там, WD). Логично, правда? Нечего кому попало иметь доступ к приватному ключу! Но, как всегда, не обходится без проблем. А именно, если на самом фолдере права только этому самому Everyone и даны, то после этой вполне логичной операции к приватному ключу доступа нет вообще никому. Ни админу, ни даже SYSTEM, выше которой в Windows только ядреный режим… В общем, видит око, да зуб неймет.

Вы можете сказать, подумаешь… ну, нечего кривые права на этом фолдере иметь. И правда, нечего. Но тут начинается самое смешное. Дело в том, что иногда криптографический слой ОС просто удаляет этот фолдер, когда в нем не остается ключей. А ключей там мало, так что такое случается сплошь и рядом. В качестве следущего шага, он создает его когда нужно создать новый и первый ключ. И тут – держитесь за стулья – он, конечно, их создает под текущим пользователем. Понимаете, что это означает? Это означает, что вы заранее понятия не имеете какой доступ будет на этом фолдере и, соответственно, на ваших новых ключах. Чтоб не слушать замечания насчет MS софта, добавлю, что удаление фолдера вроде бы находится в коде партнера MS, который поставляется в составе Windows и с которым MS ничего особо сделать не может.

В общем, если соберетесь импортировать сертификаты, обратите внимание, чтобы на этом фолдере были права для встроенных администраторов и SYSTEM. Мы в это вляпались как мордой в салат, и до сих пор наталкиваемся на случаи, когда права на этот фолдер ломают что не надо.
Tags:
Hubs:
0
Comments5

Articles