вторник, 2 декабря 2014 г.

Как привязать к сертификат к ключам, если к ним уже привязан другой сертификат

Ситуация:
Сотрудник создал ключевую пару и запрос на сертификат для веб-сервера IIS. Сертификат направили в во внешний удостоверяющий центр, заплатили деньги и стали ждать изготовления. Тем временем сотрудник засомневался в правильности запроса и никому не говоря, на внутреннем УЦ по этому запросу изготовил сертификат. Установил его на сервер и проверил что все корректно работает. И спокойно стал ждать прихода заказанного сертификата. Естественно, что когда пришел заказанный сертификат, установить его в систему стало невозможно. Потому что ключевая пара уже была связана с внутренним сертификатом и новый сертификат система просто устанавливала в хранилище, не связывая его ни с какими ключами. Ситуация хуже не придумаешь, деньги заплачены, сертификат есть, а результат совсем не тот что ожидали. Казалось бы все, надо повторять все по новой, но почему бы не попробовать?

Задача: разорвать существующую связь между закрытым ключом и сертификатом. И связать этот закрытый ключ с новым сертификатом.

Решение: решение как это не удивительно оказалось очень простым и основано на особенности Windows, сохранять закрытые ключи сертификатов. Если вы оказались в подобной ситуации, то алгоритм действий следующий:
1. Я сделали экспорт сертификата и закрытого ключа на сторонний сервер (только для того чтобы не повредить рабочую систему).
2. Установил на нем pfx контейнер с неправильным сертификатом в системе.
3. Удалил неправильный сертификат. Самый важный нюанс в том, что при этом закрытый ключ НЕ УДАЛЯЕТСЯ. Удаляется только сертификат.
4. Дальше установил правильный сертификат. Он естественно не получил связки с закрытым ключом. Скопировал серийный номер сертификата.
5. Дальше с помощью команды
certutil -repairstore My "серийный номер правильного сертификата без пробелов"

восстановил связь закрытого ключа  и сертификата.
6. Вуаля - наш новый сертификат и закрытый ключ связаны! И можно снова пользоваться.


Дополнительная информация, которая может пригодится в подобных ситуациях:
1. Machine Certificate Key File Artifacts

2. How to assign a private key to a new certificate after you use the Certificates snap-in to delete the original certificate in Internet Information Services


P.S. Это полезный момент, но стоит серьезно подумать о дополнительных мероприятиях по зачистке ключей, при необходимости.