Как и обещал ранее, расскажу про сертификаты.
Задача :
Реализовать автоматическую постановку сертификата для сайта IIS. Тоесть совсем автоматическую.
Реализация:
———————
Server 2003 и IIS6, соответственно. Да проще простого :
set iiscertobj = CreateObject("IIS.CertObj")
iiscertobj.InstanceName = "w3svc/2059934190"
iiscertobj.ServerName = "localhost"
iiscertobj.Import "Loshadka.pfx" , "bubu" , False , True
Далее прикрутить binding и ВСЁ. Проще простого.
———————
Server 2008 (ну всё же beta он… хорошая, но beta) и IIS7 соответственно. Даже при установленной совместимости с IIS6 ответом на :
set iiscertobj = CreateObject("IIS.CertObj")
будет :
Microsoft VBScript runtime error: ActiveX component can’t create object: ‘IIS.CertObj’
Вот так. Ну должна же быть какая-то замена?
Ищем и … Не находим 😦
Что предлагают нам взамен? А ничего. Пользуйтесь утилитами.
Q: Is there a public scriptable API for FSRM?
A: FSRM has command line tools — dirquota.exe , filescrn.exe and storrept.exe which you can use for scripting. One more thing — the APIs themselves are not public — we plan to publish them in a future Windows release.
)
Ну утилями тоже можно (но не совсем гибко и удобно). Так камими утилями-то? Куда ни кинь — везде рассказывают "какой менюшкой надо пользоваться, что бы импортировать сертификат". Это "автоматизация"????? Ррррррррр!!!!!!!
НО! Мы хитрые и знаем, что есть certutil. ОТЛИЧНО! Для начала импортнём сертификат. Ну ка расскажи нам как? (для уменьшения простыни пропустим через find):
>certutil -? | find /I "pfx"
-MergePFX — Merge PFX files
-ConvertEPF — Convert PFX files to EPF file
О как ! Что-то не видно слова import … Но есть более расширенная справка. Может чего скажет?
>certutil -v -? | find /I "pfx"
-MergePFX — Merge PFX files
-ConvertEPF — Convert PFX files to EPF file
BackupDirectory — directory to store backed up PFX file
CertUtil [Options] -restoreKey BackupDirectory | PFXFile
BackupDirectory — directory containing PFX file to be restored
PFXFile — PFX file to be restored
PFX file
CertUtil [Options] -RecoverKey RecoveryBlobInFile [PFXOutFile [RecipientIndex]]
CertUtil [Options] -MergePFX PFXInFileList PFXOutFile
Merge PFX files
PFXInFileList — Comma separated PFX input file list
PFXOutFile — PFX output file
CertUtil [Options] -ConvertEPF PFXInFileList EPFOutFile [cast | cast-] [V3CACertId][,Salt]
Convert PFX files to EPF file
PFXInFileList — Comma separated PFX input file list
который говорит — ЕСТЬ правильные ключи у certutil для импорта PFX сертификата. И правда :
>certutil -importpfx -?
Usage:
CertUtil [Options] -importPFX PFXFile
Import certificate and private key
PFXFile — PFX file to be imported
Defaults to personal machine store.
Options:
-f — Force overwrite
-user — Use HKEY_CURRENT_USER keys or certificate store
-gmt — Display times as GMT
-seconds — Display times with seconds and milliseconds
-v — Verbose operation
-privatekey —
-p Password — Password
-csp Provider — Provider
CertUtil -? — Display a verb list (command list)
CertUtil -importPFX -? — Display help text for the "importPFX" verb
CertUtil -v -? — Display all help text for all verbs
От так вот. Но это полдела. То что в IIS6 vs делали 4-мя строчками в скрипте, мы ещё не доделали. Т.е. сертификат импортировали, а к сайту его не привязали. Как? "Да легко!" говорят нам разработчики. Вот
так, например. О скриптах даже речи не идёт. Программу писАть надоть. Да и certificate hash надо откуда-то взять. Тоже желательно "автоматически". Есть ещё программка. AppCmd, подумаете Вы? И ошибётесь. ApCmd (основная утилита для IIS7) не привязывает сертификаты к сайту. А кто? Не поверите! NETSH !!!! Убедитесь, набрав команду :
netsh -c "http" add sslcert ?
Т.е. Вместо удобного объекта для работы с сертификатами, мы получили связку из 3-х программ (которые ещё связать надо, что не особо тревиально): certutil (c неописанными параметрами), appcmd (привязка https на сайт) и netsh (для привязки сертификата к IP адресу и порту).
С ПРОДОЛЖАЮЩИМСЯ, ВАС, БЕТАТЕСТИРОВАНИЕМ Windows Server 2008 !!!! :-))))))