Вот мои сценарии для этого:
Создать центр сертификации
Создайте самоподписанный сертификат (-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 в их хранилища сертификатов (в хранилище Trusted Root Authorities). Если вы находитесь в домене, вы можете использовать групповую политику Windows, чтобы сделать это глобально. Если нет, вы можете использовать оснастку MMC certmgr.msc или утилиту командной строки certutil :
certutil -user -addstore Root CA.cer
Чтобы программно установить сертификат в IIS 6.0, посмотрите в этой статье Microsoft KB . Для IIS 7.0 я не знаю.