Ця утиліта потрібна для створення сертифікатів, наприклад їх можна використовувати як тестові для перевірки роботи 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