John 的个人资料Старый нудила日志列表SkyDrive 工具 帮助
12月16日

Про сертификаты и Win Server 2008

Как и обещал ранее, расскажу про сертификаты.
Задача :
Реализовать автоматическую постановку сертификата для сайта 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'
Вот так. Ну должна же быть какая-то замена?
Ищем и ... Не находим :-(
Что предлагают нам взамен? А ничего. Пользуйтесь утилитами.
Отсупление - очень напоминает ситуацию с File Server Resource Manager из 2003-го R2. Ребята создали механизм, но скриптовую обвязку к нему не дали. Пользуйтесь утилями (http://technet.microsoft.com/en-us/cc730417.aspx -
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
 
И тут ни слова про импорт. Что делать? На просторах MS сайта, в закоулках, находим - http://technet.microsoft.com/en-us/library/cc786245.aspx
который говорит - ЕСТЬ правильные ключи у 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
 
Зачем скрывать-то? Умеет ведь. Но не говорит, а надо выпытывать :-) Это ещё не вся правда. Оказывается у команды certutil -importpfx есть ещё ключи, которые она даже не говорит, но понимает. И написано это в одном "глухом месте" - http://blogs.technet.com/pki/archive/2007/07/29/marking-private-keys-as-non-exportable-with-certutil-importpfx.aspx
От так вот. Но это полдела. То что в IIS6 vs делали 4-мя строчками в скрипте, мы ещё не доделали. Т.е. сертификат импортировали, а к сайту его не привязали. Как? "Да легко!" говорят нам разработчики. Вот так, например. О скриптах даже речи не идёт. Программу писАть надоть. Да и certificate hash надо откуда-то взять. Тоже желательно "автоматически". Есть ещё программка. AppCmd, подумаете Вы? И ошибётесь. ApCmd (основная утилита для IIS7) не привязывает сертификаты к сайту. А кто? Не поверите! NETSH !!!! Убедитесь, набрав команду :
 
netsh -c "http" add sslcert ?
 
Т.е. Вместо удобного объекта для работы с сертификатами, мы получили связку из 3-х программ (которые ещё связать надо, что не особо тревиально):  certutil (c неописанными параметрами), appcmd (привязка https на сайт) и netsh (для привязки сертификата к IP адресу и порту).
 
С ПРОДОЛЖАЮЩИМСЯ, ВАС, БЕТАТЕСТИРОВАНИЕМ Windows Server 2008 !!!! :-))))))
 

评论 (6)

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

DoeJohn发表:
> То, что на классическом ASP работало под IIS 6, испытывает принципиальные сложности в
> портировании на IIS 7? Можно пример, хотя бы вкратце? АФАИК, ASP under IIS 6 крайне alike ASP
> under IIS 7.

Да. Масса интерфейсов - только в ASP.NET. ADSI умирает (а жаль) - соответсвенно массу вещей только через "утиля", т.к. трансляции в COM объекты VBS-а нет. PowerShell хорошая машинка, но ГРОМОЗДКАЯ!!! Вы видили сколько "оно ЖРЁТ"????
Сделайте "манагера домена" через класический ASP... Это навскидку.

>> с таким количесттвом "багов" и заплаток - Win Server 2008 = Beta. Оооочень торопились.
> Вообще-то, http://secunia.com/advisories/product/18255/ - меньше, чем в любой другой серверной
> ОС. Не бета ни разу. :)

Ой! Не количество багов белает бету бетой. Windows 7 вообще безглючная :-))))
Вместе с релизом не вышел Hyper-V, native FTP server, WEB DAV ... Список можно продолжать. А непродуманости я ещё опубликую. Напрмер со встроенным firewall. "Он хороший, но, почемуто, хромает" (с) Карлсон который живёт на крыше.
12 月 24 日
> Объясняю - много нароботок на классическом ASP. Переписывать = переделать "набело".
То, что на классическом ASP работало под IIS 6, испытывает принципиальные сложности в портировании на IIS 7? Можно пример, хотя бы вкратце? АФАИК, ASP under IIS 6 крайне alike ASP under IIS 7.

> с таким количесттвом "багов" и заплаток - Win Server 2008 = Beta. Оооочень торопились.
Вообще-то, http://secunia.com/advisories/product/18255/ - меньше, чем в любой другой серверной ОС. Не бета ни разу. :)
12 月 16 日
DoeJohn发表:
Виталь, с таким количесттвом "багов" и заплаток - Win Server 2008 = Beta. Оооочень торопились.
12 月 16 日
DoeJohn发表:
1)
> А зачем именно через это самое место делать (я про стартовую предпосылку
> использования режима совместимости с IIS6)?

Объясняю - много нароботок на классическом ASP. Переписывать = переделать "набело" . Не дадут.
Про "нативные методы" - показывайте и рассказывайте. Вот так-же. В 4-ре строки. Законченным циклом.

2)
"Хорошо известны" узкому кругу ограниченных людей. :-) Почему нет в документации? Родной. Изначально.
12 月 16 日
Пардон,

А зачем именно через это самое место делать (я про стартовую предпосылку использования режима совместимости с IIS6)? Нативные методы работы с сертификатами в IIS 7 чем-то принципиально не подходят?

ЗЫ. Все описанные ключи сертутила, АФАИК, крайне хорошо известны и опИсаны даже в учебных курсах (курс 2821). И баяном являются уже - т.е. были такими же и в NT 5.2.
12 月 16 日
Разве Win Server 2008 ещё в бете?
12 月 16 日

引用通告

此日志的引用通告 URL 是:
http://kgb-boss.spaces.live.com/blog/cns!8B2CF0F53CBBA8FF!431.trak
引用此项的网络日志