Я раньше не работал с SSL. И когда в одном проекте возникла необходимость использовать SSL, я обнаружил, что нет простого объяснения того, как можно создать SSL сертификат. Результатом поиска стала эта статья. Она основана на англоязычном варианте и расширена информацией полученной из собственного опыта.
Создание кода
Ссылка на документацию по HttpListener: http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx (русский вариант: http://msdn.microsoft.com/ru-ru/library/system.net.httplistener.aspx).
Создание сертификата
Создать сертификат можно утилитой makecert.exe. Документация по утилите доступна здесь http://msdn.microsoft.com/en-us/library/bfsktky3.aspx (русский: http://msdn.microsoft.com/ru-ru/library/bfsktky3.aspx).
Если у Вас установлена Visual Studio 2008/2010, то утилиту можно вызвать из командной строки Visual Studio. Командная строка Visual Studio доступна через меню программ (Microsoft Visual Studio 2010 > Visual Studio Tools > Visual Studio Command Prompt (2010)). В Windows Vista, Windows 7 командная строка должна быть запущена от имени администратора.
Если у Вас не установлена Visual Studio, то можно попробовать установить .NET Framework 2/3.5 SDK.
Пример вызова команды:
makecert.exe -sr LocalMachine -ss MY -N "CN=XML Litener" -sky exchange -pe
В случае удачного выполнения команда вернет строку "Succeeded".
Из той же командной строки запустите MMC. В открывшемся окне выберите пункт меню File > Add/Remove snap-in. В открывшемся окне "Add of Remove Snap-ins" в списке "Available Snap-ins:" выделите Sertificates и нажмите клавишу "Add >". В окне "Certificates snap-in" выберите "Computer account", нажмите "Next >" и затем "Finish" и "OK". В результате дереве окна MMC должен появиться узел "Console Root" > "Cersificates (Local Computer)" > "Personal" > "Certificates". Узел должен содержать только что добавленный сертификат.
Для того, чтобы этот сертификат стал "проверенным", его нужно переместить в ветку "Console Root" > "Cersificates (Local Computer)" > "Trusted Root Certification Authorities" > "Certificates".
На названии сертификата (XML Listener) нажмите правую клавишу мыши и в контекстном меню выберите пункт "All tasks" > "Export...". Откроется окно мастера экспорта сертификатов "Certificate Export Wizard". В этом окне нужно несколько раз нажать клавишу "Next >" не изменяя параметров, указать имя файла для экспорта, например, "xmllistener.cer".
На узле дерева "Console Root" > "Cersificates (Local Computer)" > "Trusted Root Certification Authorities" > "Certificates" нажмите правую клавишу и в контекстном меню выберите пункт "All tasks" > "Import...". Откроется окно мастера "Certificate Import Wizard". Проимпортируйте файл "xmllistener.cer".
Двойным кликом откройте окно сертификата, перейдите на вкладку "Detail", скопируйте в буфер обмена значение поля Thumbprint. Это значение потребуется для следующего шага.
Привязка сертификата к порту
Документация по привязке сертификата к порту можно найти здесь: http://msdn.microsoft.com/en-us/library/ms733791.aspx (русский: http://msdn.microsoft.com/ru-ru/library/ms733791.aspx).
В Windows XP / Windows Server 2003 для привязки сертификата к порту нужно выполнить команду:
httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6 -f 2
где после ключа -i указан адрес и порт, после ключа -h указано значение поля Thumbprint.
Утилита httpcfg.exe входит в состав пакета Support Tools. Этот пакет можно загрузить для Windows XP здесь для Windows Server 2003 здесь.
В Windows 7 / Windows Server 2008:
netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable
где в качестве значения certhash указано значение поля Thumbprint.
Для удаления привязки сертификата к порту в Windows XP нужно воспользоваться командой:
httpcfg delete ssl -i 0.0.0.0:8005 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
В Windows 7:
netsh http delete sslcert ipport=0.0.0.0:8005
Комментариев нет:
Отправить комментарий