Эта утилита нужна для создания сертификатов, например их можно использовать как тестовые для проверки работы SSL. Нужно запустить Developer Command Prompt (идет в комплекте с Visual Studio).

Пример:

Makecert –r –pe –n CN="www.example.com" –b 05/10/2010 –e 12/22/2011 –eku 1.3.6.1.5.5.7.3.1 –ss my –sr localmachine -sky exchange –sp "Microsoft RSA SChannel Cryptographic Provider" –sy 12 MyCertForExampleCom.cer

Эта команда создает само заверяющий сертификат, который может использоваться для тестирования веб-приложения, которое использует протокол SSL (Secure Sockets Layer) на веб-сервере, URL-адрес которого является www.example.com. OID, определяемый параметром –eku, идентифицирует этот сертификат как сертификат сервера SSL. Сертификат хранится в хранилище my и доступен на уровне компьютера (а не пользователя). Закрытый ключ сертификата можно экспортировать, сертификат действителен с 01.01.2013 до 01.01.2015 года и называется MyCertForExampleCom.cer.

Создаем сертификат

makecert -r -pe -n "CN=My Root Authority" -ss CA -sr CurrentUser   -a sha1 -sky signature -cy authority -sv CA.pvk CA.cer

Создаем серверный сертификат с экспортируемый закрытый ключ

makecert -pe -n "CN=my.server" -a sha1 -sky Exchange -eku 1.3.6.1.5.5.7.3.1 -ic CA.cer -iv CA.pvk -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -sv server.pvk server.cer
pvk2pfx -pvk server.pvk -spc server.cer -pfx server.pfx

pvk2pfx по умолчанию не задает пароль к PFX выходе. Вы должны использовать -po параметр для указания пароля.

Затем вы можете использовать. PFX файл на сервере приложения (или установить его в IIS Для того чтобы клиенты могли доверять вашему сертификату нужно на них установить сертификат CA.cer (немного выше)

certutil -user -addstore Root CA.cer

чтобы програмно установить сертификат в IIS нужно сделать следующее:

// Предположим, “Site”  уже установлен на вашем сайте через что-то вроде
// Site site = mgr.Sites.Add(siteName, directory, 443);
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
// \bin\certificate.pfx, где находиться файл сертификата.
// 1234 является паролем к CertFile (экспортируемых из IIS)
X509Certificate2 certificate = new X509Certificate2(directory + @"\bin\certificate.pfx", "1234");
store.Add(certificate);
var binding = site.Bindings.Add("*:443:", certificate.GetCertHash(), store.Name);
binding.Protocol = "https";
store.Close();

Скачать MakeCert: http://download.microsoft.com/download/platformsdk/update/5.131.3617.0/nt45xp/en-us/makecert.exe

Ссылки: http://msdn.microsoft.com/ru-ru/library/bfsktky3.aspx

http://stackoverflow.com/questions/496658/using-makecert-for-development-ssl

http://stackoverflow.com/questions/4498291/programatically-import-cert-into-iis

http://stackoverflow.com/questions/3770233/is-it-possible-to-programmatically-generate-an-x509-certificate-using-only-c