如何以编程方式在 IIS 6 上配置虚拟目录以从本地证书存储中已有合适证书的起点开始要求 SSL 和客户端证书,但是当前网站(例如默认网站)尚未设置为使用证书?
我知道如何使用 inetmgr GUI 执行此操作,但是,我希望能够以编程方式执行这些操作,最好是从批处理脚本或 C# 程序。
我从 IIS 6.0 Resource Kit 中发现了 IISCertDeploy.vbs,但是,我认为它不能满足我的需要。如果可以使用它,那么我将欣赏一个比它提供的更有用的示例来说明如何使用它。
更新:我设法找到了一个解决方案,只要默认网站安装了 SSL 证书就可以工作。这是我为遇到类似问题的任何人的解决方案的解释。
我编写了一个使用Microsoft 的 adsutil.vbs的批处理脚本(包括在下面) 。我还没有设法以编程方式针对默认网站安装证书,但是,目前可以接受将其作为手动一次性步骤。
@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