четверг, 13 января 2011 г.

Создание самоподписанного сертификата для подписи кода

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

Иногда хочется быть уверенным хоть в какой-то степени, что скрипт, или код, который Вы вот-вот запустите, является тем самым, который Вы написали черт знает когда. Одним из путей достижения этого состояния просветления является закрытие флешки с кодом в сейфе. Второй вариант – подписать код. Вторая возможность обычно считается, да и является более удобной, однако требует специального сертификата. Причем покупка такового в общем-то не самое дешевое удовольствие: минимум, который мне удалось найти это 99 долларов за год. С одной стороны, не такая уж огромная сумма, с другой, есть ли смысл платить, когда единственная цель – убедить себя, что это Ваш собственный код? Может быть да, может быть – нет (это тема отдельного далеко не однозначного разговора), и если Ваш ответ “нет”, то Вы можете без излишних трат создать Ваш собственный сертификат, который будет не хуже, чем у Verysign до тех пор, пока Вы не попытаетесь убедить кого-либо еще, что это именно Ваш сертификат и что ему можно верить =) 

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

1) Скачиваем Windows SDK (нам в любом случае нужно это сделать, даже по тем двум рецептам, поскольку именно там располагается makecert), устанавливаемего и следуем в его папку.

2) makecert.exe -cy end -pe -r -n "CN=Имя Вашего Супер-Сертификата" -sky Signature –sv path_to\key.pvk path_to\key.cer

3) pvk2pfx.exe -pvk path_to\key.pvk -spc path_to\key.cer -pfx path_to\key.pfx

4) Импортируем ключ key.pfx в Ваше хранилище сертификатов. Или на Вашу смарткарту .

Используете его там, где Вам необходимо. Заметьте, что выделенные части нужно на что-то заменить.

Надеюсь, для Вас это сработает как и для меня.

Описания для makecert и pvk2pfx здесь и здесь.

2 комментария:

Unknown комментирует...

А PGP? Причём даже, в общем-то, PGP-ключи более или менее признаны сообществом. Или я чего-то не понимаю?

Alexander Trofimov комментирует...

Может быть. Мысль про сообщение возникла при работе с VS. Оно умеет подписывать с помощью PGP?