С помощью APPCMD я обнаружил, что большая часть настройки IIS7 возможна через командную строку. Одна вещь, которую я еще не понял, как это сделать: в диспетчере IIS, Bindings -> Edit -> выбрать сертификат SSL.
"appcmd устанавливает сайт /site.name:foo /?" перечисляет 2 ключа, которые начинаются с "bindings" ("protocol", "bindingInformation"), но я не выяснил, что это такое.
В другом месте предполагалось, что «netsh» может это сделать, но «netsh http show sslcert» показывает, что мой сертификат привязан к «0.0.0.0:443», а не к конкретным сайтам IIS7.
Учитывая, что я знаю имя / идентификатор IIS7 сайта и хэш моего сертификата (который уже является сертификатом на других сайтах здесь), есть ли способ сделать его сертификатом SSL для другого сайта IIS7 из командной строки ?
ОБНОВИТЬ: Я сделал это в пользовательском интерфейсе, изменил реестр и увидел, что HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ HTTP \ Parameters \ SslBindingInfo \ 0.0.0.0: 443 (также в ControlSet0001) создается с моим SslCertHash, и AppId, который выглядит точно так же, как UUID, который выводит "netsh http show sslcert", но с перевернутыми разделами (81e1c34d4be121 ...). Кажется, я читал, что это в AppId для приложений IIS, но я не уверен. Он не изменяется в реестре, когда я удаляю сайт в диспетчере IIS и переключаюсь на другой сайт с этим сертификатом SSL. В любом случае, это похоже на тот же уровень детализации, что и netsh
предоставляет, поэтому я действительно не знаю, где IIS Manager получает свои привязки к каждому сайту, назначение сертификатов SSL.
Чтобы обозначить биты, это отличается от IIS6 и более ранних версий. В IIS 6 метабаза содержала сокет, хэш сертификата, связанный с сокетом, и так далее. В 7 конфигурация IIS просто содержит сокет (a.b.c.d: 443) и позволяет ОС беспокоиться об управлении сертификатами на этом сокете. (Через графический интерфейс он выглядит примерно так, как раньше). Правило таково: вы можете привязать только один сертификат к одному сокету.
IIS:
В IIS 7 IIS фактически не заботится о привязке сертификата. Я знаю, типа ах, да?
В IIS7 вся настройка IIS - это привязка IIS к определенному сокету (IP + порт). Вот и все. Делает конфигурацию намного более переносимой между блоками, когда вам не нужно унифицировать хэш сертификата на каждом из них.
Конфигурация IIS управляется с помощью APPCMD или {вставьте сюда любой инструмент управления IIS 7}, создав привязку сайта к сокету.
ОПЕРАЦИОННЫЕ СИСТЕМЫ:
Уровень ОС берет на себя управление частью SSL, поэтому вы используете NETSH для связывания сертификата с конкретным сокетом.
Это делается через NETSH.
Сукеш давно опубликовал руководство по обоим битам, и оно до сих пор актуально: https://stackoverflow.com/questions/591597/how-to-assign-a-ssl-certificate-to-iis7-site-from-command-prompt