IIS 6 の仮想ディレクトリをプログラムで構成して、ローカル証明書ストアに適切な証明書が既にあるという出発点から SSL およびクライアント証明書を要求する方法はありますが、現在の Web サイト (たとえば、既定の Web サイト) は設定されていません。証明書を使用しますか?
inetmgr GUI を使用してこれを行う方法は知っていますが、これらのアクションをプログラムで、できればバッチ スクリプトまたは C# プログラムから実行できるようにしたいと考えています。
IIS 6.0 リソース キットから IISCertDeploy.vbs を見つけましたが、私のニーズには合わないと思います。これが使用できる場合は、それが提供するよりも使用方法のより役立つ例をいただければ幸いです。
更新: デフォルト Web サイトに SSL 証明書がインストールされている限り機能するソリューションを見つけることができました。これは、同様の問題を抱えている人のための私の解決策の説明です。
Microsoft の adsutil.vbsを使用するバッチ スクリプト (以下に含まれています) を作成しました。デフォルトの Web サイトに対して証明書をプログラムでインストールすることはまだできていませんが、手動の 1 回限りの手順としてこれを行うことは今のところ許容されます。
@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