Как я могу программно настроить виртуальный каталог для использования SSL с использованием IIS 6? - PullRequest
2 голосов
/ 23 марта 2009

Как я могу программно настроить виртуальный каталог в IIS 6 для запроса SSL и клиентских сертификатов с начальной точки, когда соответствующий сертификат уже находится в локальном хранилище сертификатов, но текущий веб-сайт (например, веб-сайт по умолчанию) не настроить для использования сертификатов?

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

Я столкнулся с IISCertDeploy.vbs из комплекта ресурсов IIS 6.0, но я не думаю, что он отвечает моим потребностям. Если это можно использовать, то я был бы признателен за более полезный пример того, как его использовать, чем он дает.

Обновление: мне удалось найти решение, которое работает, если на веб-сайте по умолчанию установлен сертификат SSL. Вот объяснение моего решения для тех, у кого есть подобная проблема.

Я написал пакетный скрипт (включен ниже), который использует adsutil.vbs от Microsoft . Мне пока не удалось программно установить сертификат на сайт по умолчанию, но пока это допустимо в качестве ручного одноразового шага.

@echo off

if [%1]==[] GOTO NOPARAM

echo Setting SSL requirements for virtual directory '%1' 

REM Setting: Require Secure Channel (SSL) = true
adsutil.vbs set w3svc/1/root/%1/AccessSSL true

REM Setting: Require client certificates = true
adsutil.vbs set w3svc/1/root/%1/AccessSSLNegotiateCert true

REM Set required SSL file permission flags
REM  (104 -> AccessSSL=8 | AccessSSLNegotiateCert=32 | AccessSSLRequireCert=64)
adsutil.vbs set w3svc/1/root/%1/AccessSSLFlags 104
GOTO END


:NOPARAM
REM Exit if no virtual directory was specified.
echo Error: Expected parameter specifying virtual directory was not defined.
GOTO END

:END
...