Создайте самоподписанный сертификат в IIS Express - PullRequest
2 голосов
/ 13 декабря 2011

Насколько я понимаю, фактически возможно создать сертификат, выданный на IP-адрес. Возможно ли это сделать в IIS Express?

Обратите внимание, что это только для тестирования.

Редактировать

Мне кажется, что людям не хватает настоящего мяса и картошки в моем вопросе, поэтому я удалил лишние детали.

Ответы [ 5 ]

6 голосов
/ 14 декабря 2011

Спасибо @Bruno за все ваши предложения !! Использование отдельного инструмента для создания SSL-сертификата заставило меня двигаться в правильном направлении.

Сначала я попробовал инструмент командной строки IIS 6 selfssl, который, вероятно, сработал бы и для первого шага, чтобы заставить это работать (но я не проверял его после нахождения моего текущего решения). Первый шаг - это создание сертификата, а второй - привязка этого сертификата к моему IP / порту.

  1. Я использовал makecert из командной строки Visual Studio для создания моего сертификата (именно здесь я думаю, что инструмент IIS 6 selfssl из IIS 6 Resource Kit должен работать так же). После создания сертификата я нашел его в разделе «Личные / Сертификаты» с помощью оснастки mmc и добавил оснастку «Сертификаты».

    makecert -r -pe -n "CN=0.0.0.0" -b 01/01/2011 -e 01/01/2025 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12

  2. Чтобы связать сертификат с моим IP / портом, я использовал netsh . ipport должен быть изменен на ваш IP / порт. appid - это GUID, и я не верю, что это имеет значение для того, что вы его установили. certhash вы можете получить из поля Thumbnail самого сертификата, но вы должны удалить пробелы в хэше.

    netsh http add sslcert ipport=0.0.0.0:44300 appid={AnyGuid} certhash=YourCertificateThumbprint

5 голосов
/ 14 декабря 2011

Как я уже говорил в этом ответе :

Для обеспечения безопасности SSL / TLS необходимо как минимум 3 балла:

  • Подходящий шифркомплект и успешное рукопожатие.
  • Проверка того, что клиент доверяет сертификату сервера (обычно через известный центр сертификации в модели PKI).
  • Проверка того, что сертификат принадлежит серверу клиентапредназначен для связи (проверка имени хоста).

Второй и третий пункты выполняются вашим сертификатом.Вы столкнулись с проблемой, связанной с третьим пунктом: проверка имени хоста.

Использование самозаверяющего сертификата является заменой использования сертификата, выданного ЦС (частью PKI).Это говорит вам, можете ли вы доверять содержанию сертификата как подлинному (как заявлено эмитентом).Выпуская и используя самоподписанный сертификат, вы утверждаете его содержание самостоятельно.Ваши клиенты должны будут четко доверять тому, что вы говорите.Это хорошо для небольших развертываний, где вы можете убедить клиентов установить самоподписанный сертификат в качестве доверенного сертификата.

Проверка имени хоста - обязательный шаг после этого.Если вы проверяете личность кого-либо с помощью его паспорта, недостаточно проверить, является ли это подлинным паспортом из страны, которую вы узнаете: вам также необходимо убедиться, что фотография соответствует человеку перед вами.То же самое применимо и здесь: то, к чему вы хотите подключиться, дается моим именем хоста (или IP-адресом), и оно должно совпадать с именем хоста (или IP-адресом) в сертификате, с которым вы представлены.

Конечно, localhost доступен только с самого локального компьютера, как сказать «я». Как сервер, вам нужно, чтобы имя в сертификате совпадало с тем, что ваши клиенты будут называть. Обычно лучше сделать это, используя имя хоста, а не IP-адрес.Обратите внимание, что согласно RFC 2818 , если вы используете IP-адрес, он также должен быть в расширении Subject Alternative Name (хотя некоторые браузеры будут гибкими в этом требовании).

(Возможно, вас также заинтересует этот ответ . Хотя речь идет о Java-сервере, принципы все те же, поскольку проверка сертификата зависит от клиента, который может быть на любом языке.)

РЕДАКТИРОВАТЬ: (Вы удалили большую часть вашего первоначального вопроса, поэтому мой ответ выше может не иметь смысла ...)

Короче говоря, да, вы можетесоздать сертификат, который идентифицирует машину по IP-адресу.

Теоретически ( RFC 2818 ), IP-адрес должен быть в расширении Subject Alternative Names (SAN) вашего сертификата (это будетбыть SAN типа «IP», а не «DNS»).Однако на практике этот конкретный раздел спецификации соблюдается слабо, поэтому вы, вероятно, захотите указать свой IP-адрес в общем имени (CN) вашего DN субъекта.Если браузеры не в состоянии реализовать RFC 2818 в достаточной степени, вы даже можете обойтись без использования только CN=your.ip.address в Subject DN без необходимости записи в SAN.( Java-клиенты, похоже, строго относятся к этому , но это может быть необязательным для вашего контрольного примера.)

Я не уверен, с чем вы генерируете свой сертификат.makecert.exe, к сожалению, не может генерировать сертификаты с SAN.

В этом случае вы можете сгенерировать самоподписанный сертификат, например, с помощью OpenSSL (см. Примечания надно это ответ ).При необходимости создайте файл PKCS # 12 (с расширением .pfx или .p12 из своего личного ключа и сгенерированного сертификата (openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out store.pfx). После этого изучите настройку сертификата из файла .pfx в IIS Express.Вам нужно будет импортировать сертификат и закрытый ключ в ваше хранилище сертификатов (скорее всего, двойной щелчок должен вызвать правильное диалоговое окно). Затем используйте его (как если бы он пришел из ЦС), в зависимости от того, как вы конфигурируетеIIS, возможно, потребуется задействовать netsh. Кажется, здесь есть учебник: http://blogs.blackmarble.co.uk/blogs/rfennell/post/2011/03/22/how-to-expose-iis-express-to-external-network-connections-and-use-a-non-self-signed-certificate.aspx(Команды netsh также перечислены в этом вопросе , упомянутом @MrZombie: вам нужно найти хэш самозаверяющего сертификата, просмотрев установленные сертификаты, и адаптировать номер порта в соответствии с вашимустановка.)

0 голосов
/ 16 апреля 2014

IIS и независимость от платформы, все, что вам нужно, это веб-браузер:

http://www.selfsignedcertificate.com/

0 голосов
/ 09 марта 2013

Да, в IIS выберите узел имени сервера слева, перейдите в раздел Сертификаты сервера.На правой панели «Действие» выберите «Создать самоподписанный сертификат» ... Назовите сертификат и все!Очень просто ...

0 голосов
/ 13 декабря 2011

Насколько я понимаю, проблема заключается в том, что, если ваш сертификат не выдан центром сертификации с реальной достоверностью, вы продолжите получать сообщение об ошибке.

(Под "заслуживающим доверия центром сертификации" я имею в виду "места, где вы покупаете сертификаты ")

http://www.gerv.net/security/self-signed-certs/ <- интересно читать по этому вопросу. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...