Ситуация:
Задача: разорвать существующую связь между закрытым ключом и сертификатом. И связать этот закрытый ключ с новым сертификатом.
Решение: решение как это не удивительно оказалось очень простым и основано на особенности 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. Это полезный момент, но стоит серьезно подумать о дополнительных мероприятиях по зачистке ключей, при необходимости.
Сотрудник создал ключевую пару и запрос на сертификат для веб-сервера 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. Это полезный момент, но стоит серьезно подумать о дополнительных мероприятиях по зачистке ключей, при необходимости.