Ответ 1
Вот мои сценарии для этого:
Создать центр сертификации
Создайте самозаверяющий сертификат (-r) с помощью экспортируемого закрытого ключа (-pe), используя SHA1 (-r) для подписания (-sky подписи). Закрытый ключ записывается в файл (-sv).
makecert -r -pe -n "CN=My Root Authority" -ss CA -sr CurrentUser ^
-a sha1 -sky signature -cy authority -sv CA.pvk CA.cer
(^ = разрешить пакетную строку командной строки)
Создать сертификат сервера
Создайте сертификат сервера с помощью экспортируемого закрытого ключа (-pe), используя SHA1 (-a) для обмена ключами (-sky exchange). Его можно использовать в качестве сертификата сервера SSL (-eku 1.3.6.1.5.5.7.3.1). Сертификат выдачи находится в файле (-ic), как и ключ (-iv). Используйте конкретного поставщика криптографии (-sp, -sy).
makecert -pe -n "CN=fqdn.of.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
Затем вы используете файл .PFX в своем серверном приложении (или устанавливаете его в IIS). Обратите внимание, что по умолчанию pvk2pfx
не применяет пароль к выходному файлу PFX. Для этого вам нужно использовать переключатель -po
.
Чтобы доверять всем вашим клиентским машинам, установите CA.cer в свои хранилища сертификатов (в хранилище доверенных корневых серверов). Если вы находитесь в домене, вы можете использовать групповую политику Windows, чтобы сделать это глобально. Если нет, вы можете использовать snapin MMC certmgr.msc или служебную программу certutil:
certutil -user -addstore Root CA.cer
Чтобы программно установить сертификат в IIS 6.0, просмотрите эту статью Microsoft KB. Для IIS 7.0 я не знаю.