Установка SSL-сертификата Comodo WILDCARD.
В моем блоге очень содержится очень много информации о сертификатах, о том как ими манипулировать программно, о том, как создавать их по российским чудо-алгоритмам (заточенным на ускорение доступа к защищаемым данным со стороны ФСБ), о том как писать собственные самописныне реализации SSL - начните читать все это отсюда - Организация SSL транспортного уровня по программно загружаемому клиентскому сертификату.
В этом топике я расскажу как сделать самую тупую и простую операцию - создать узел, доступный по SSL.
Для начала надо выбрать продавца сертификата. Вообще идея торговать воздухом - не новая. Еще Иисус Христос мог взять две рыбки и накормить ими 5000 человек. Торговля сертификатами - это то же самое. Создание потока кеша из ничего, кормление страждущих пустотой. Как бы некто удостоверяет, что некая компания действительно является компанией VOTPUSK.RU - при этом заполнить формы запроса сертификата на сайте торговца сертификатами может даже хорошо обученная обезьяна. Ну и идея все-все-все в инете делать анонимно и бесплатно (или почти бесплатно) - начиная от хостинга и регистрации домена - а подписывание ключей сертификата делать за нехилые деньги - это стоящая идея конечно! Не хуже чем накормить двумя рыбками пять тысяч человек.
Исходя из сказанного - поставщик сертификата значения не имеет, имеет значения только цена (и каким способом его можно оплатить). В моем случае был выбран http://ssl.comodo.com/ (и его дилер https://www.reg.ru/ssl-certificate/ - тем более он подписывает сертификаты WILDCARD (на произвольноепроизвольное количество поддоментов основного домена).
Для начала создается запрос сертификата - его можно сделать прямо в IIS - он выглядит как куча буковок (кодировка BASE64) в обрамлении тегов -----BEGIN CERTIFICATE REQUEST----- и -----END CERTIFICATE REQUEST-----.
После оплаты почтовый робот присылает на мыльце требуемый сертификат и корневой сертификат организации, промышляющей торговлей воздухом (в данном конкретном случае COMODO.COM)
Все эти данные доступны не только в мыльце, но и на формах REG.RU:
Теперь, после получения сертификата - его надо загрузить в IIS. К сожалению, напрямую загрузить кнопкой Complete certificate request (там же где делали запрос) - не получится, ибо присланный сертификат не содержит закрытого ключа. А как же IIS должен шифровать без закрытого ключа?
Поэтому придется чуток напрячься. Для начала создадим себе оснастку СЕРТИФИКАТЫ (которая стандартно недоступна от кнопки ПУСК). Обратите внимание на ГЛАВНУЮ ФИШКУ - IIS работает с сертификатами локального кампутера, а не с сертификатами какого-нибудь юзера или какой-нибудь учетной записи кампутера. Строго говоря - это прихоть индусов Билла Гейтса, если бы я писал этот кусок кода - я сделал бы логичнее - IIS бы работал с сертификатами своей учетной записи, но... что сделано, то сделано. Итак, только учетка Local Computer.
Далее импортируем корневые сертификаты - и убеждаемся, что они оказались в нужном месте.
Теперь займемся главным сертификатом, ключи которого собственно и используются для шифрования сессионных ключей SSL. Для начала придется поставить Microsoft Visual C++ 2008 SP1 Redistributable Package (x86), а затем и OpenSSL.
И теперь собственно собираем нужный нам сертификат с открытым и закрытым ключем вместе.
Импортируем собранный сертификат в хранилище Personal для учетки локального кампутера (за этим громким абстрактным названием скрывается нужный ключ реестра) - именно здесь его увидит IIS.
И наконец, приступим к заключительному аккорду этой песни - загрузим этот сертификат на конкретный узел IIS. Остается напомнить только, что на одном айпишнике может быть только один SSL.
Ну вот собственно и вся песня с самым примитивным способом использования сертификатов (для организации SSL). Без программного манипулирования, с самым распространенным RSA-алгоритмом. Все сдеалано в пару тычков мышкой и одной строкой в OpenSSL.
Я опубликовал эту заметку именно в силу ее классической постановки и радикальной простоты задачки. О более интересных случаях почитайте тут - Организация SSL транспортного уровня по программно загружаемому клиентскому сертификату.
cd C:\Windows\System32\Inetsrv appcmd set site /site.name:"Default Web Site" /-bindings.[protocol='https',bindingInformation='*:443:votpusk.ru'] appcmd set site /site.name:"Default Web Site" /-bindings.[protocol='https',bindingInformation='*:443:www.votpusk.ru'] appcmd set site /site.name:"Arenda" /+bindings.[protocol='https',bindingInformation='*:443:arenda.votpusk.ru'] appcmd set site /site.name:"Adm" /+bindings.[protocol='https',bindingInformation='*:443:adm.votpusk.ru'] appcmd set site /site.name:"Img" /+bindings.[protocol='https',bindingInformation='*:443:Img.votpusk.ru'] appcmd set site /site.name:"Foto" /+bindings.[protocol='https',bindingInformation='*:443:Foto.votpusk.ru'] appcmd set site /site.name:"Poputi" /+bindings.[protocol='https',bindingInformation='*:443:Poputi.votpusk.ru'] appcmd set site /site.name:"User" /+bindings.[protocol='https',bindingInformation='*:443:User.votpusk.ru'] appcmd set site /site.name:"Search" /+bindings.[protocol='https',bindingInformation='*:443:Search.votpusk.ru'] appcmd set site /site.name:"Story" /+bindings.[protocol='https',bindingInformation='*:443:Story.votpusk.ru'] appcmd set site /site.name:"Gate" /+bindings.[protocol='https',bindingInformation='*:443:Gate.votpusk.ru'] appcmd set site /site.name:"SSL" /+bindings.[protocol='https',bindingInformation='*:443:SSL.votpusk.ru'] appcmd set site /site.name:"Mention" /+bindings.[protocol='https',bindingInformation='*:Mention.443:votpusk.ru'] appcmd set site /site.name:"Debug" /+bindings.[protocol='https',bindingInformation='*:443:Debug.votpusk.ru'] cd C:\Windows\System32\Inetsrv appcmd set site /site.name:"Arenda" /+bindings.[protocol='https',bindingInformation='*:443:arenda.votpusk.ru'] appcmd set site /site.name:"Adm" /+bindings.[protocol='https',bindingInformation='*:443:adm.votpusk.ru'] appcmd set site /site.name:"Img" /+bindings.[protocol='https',bindingInformation='*:443:Img.votpusk.ru'] appcmd set site /site.name:"Foto" /+bindings.[protocol='https',bindingInformation='*:443:Foto.votpusk.ru'] appcmd set site /site.name:"Poputi" /+bindings.[protocol='https',bindingInformation='*:443:Poputi.votpusk.ru'] appcmd set site /site.name:"User" /+bindings.[protocol='https',bindingInformation='*:443:User.votpusk.ru'] appcmd set site /site.name:"Search" /+bindings.[protocol='https',bindingInformation='*:443:Search.votpusk.ru'] appcmd set site /site.name:"Story" /+bindings.[protocol='https',bindingInformation='*:443:Story.votpusk.ru'] appcmd set site /site.name:"Gate" /+bindings.[protocol='https',bindingInformation='*:443:Gate.votpusk.ru'] appcmd set site /site.name:"SSL" /+bindings.[protocol='https',bindingInformation='*:443:SSL.votpusk.ru'] appcmd set site /site.name:"SSL" /+bindings.[protocol='https',bindingInformation='*:443:Mention.votpusk.ru'] appcmd set site /site.name:"Debug" /+bindings.[protocol='https',bindingInformation='*:443:Debug.votpusk.ru'] cd C:\Windows\System32\Inetsrv %systemroot%\system32\inetsrv\AppCmd.exe set site /site.name:"avia" /+bindings.[protocol='https',bindingInformation='*:443:avia.votpusk.ru'] %systemroot%\system32\inetsrv\AppCmd.exe set site /site.name:"Default Web Site" /+bindings.[protocol='https',bindingInformation='*:443:www.votpusk.ru'] %systemroot%\system32\inetsrv\AppCmd.exe set site /site.name:"forum" /+bindings.[protocol='https',bindingInformation='*:443:forum.votpusk.ru'] %systemroot%\system32\inetsrv\AppCmd.exe set site /site.name:"hotelfoto" /+bindings.[protocol='https',bindingInformation='*:443:hotelfoto.votpusk.ru'] %systemroot%\system32\inetsrv\AppCmd.exe set site /site.name:"spb" /+bindings.[protocol='https',bindingInformation='*:443:spb.votpusk.ru'] %systemroot%\system32\inetsrv\AppCmd.exe set site /site.name:"test" /+bindings.[protocol='https',bindingInformation='*:443:tst.votpusk.ru'] %systemroot%\system32\inetsrv\AppCmd.exe set site /site.name:"test1" /+bindings.[protocol='https',bindingInformation='*:443:ts1.votpusk.ru'] %systemroot%\system32\inetsrv\AppCmd.exe set site /site.name:"tours" /+bindings.[protocol='https',bindingInformation='*:443:tours.votpusk.ru'] %systemroot%\system32\inetsrv\AppCmd.exe set site /site.name:"train" /+bindings.[protocol='https',bindingInformation='*:443:train.votpusk.ru'] %systemroot%\system32\inetsrv\AppCmd.exe set site /site.name:"routes" /+bindings.[protocol='https',bindingInformation='*:443:routes.votpusk.ru']
|