2016-09-23 4 views
0

Я создал инструмент, который предоставляет веб-интерфейс для локального хоста. Теперь я требую, чтобы этот веб-интерфейс зарегистрировал префикс https для страницы. Для этого я использую BouncyCastle для создания корневого сертификата и сертификата ssl. Все это хорошо работает (генерирование, подпись и привязка к порту). IE отображает страницу по https без предупреждений о сертификатах и ​​т. Д.Сертификат, привязанный к порту, не принимается

Однако, когда стороннее приложение пытается отобразить веб-страницу, оно не работает (невозможно загрузить и отобразить 'about: blank'). Поскольку это встроенный веб-браузер, я не уверен, что такое точная проблема. Таким образом, наряду с другими вещами, я пытался использовать скрипача, чтобы определить проблему - только для того, чтобы найти ее. Принимает скрипт сертификата.

Итак, что я сделал, это экспорт сертификатов скрипача и удаление всех специализированных сертификатов из магазинов. Затем я импортировал сертификаты fiddler в те же самые магазины, где мои сгенерированные сертификаты. Я также убедился, что создание (все, что вы можете проверить, просмотрев свойства сертификата), точно такое же. Используя Windows MMC, щелкнув сертификаты, я вижу разницу NO, даже порядок одинаковый. Критические и такие - все совпадают. Единственное, что немного отличается: серийный номер из моих сертификатов короче, чем тот, который генерируется скрипачом.

Итак, у меня в итоге есть 4 сертификата (я удалил все оригиналы из скрипача): 1 ssl и 1 корень из скрипача и 1 ssl и 1 корень из BouncyCastle. Корни доверяют, а ssl - в личном, как на локальном компьютере. Теперь, когда я использую netsh для привязки сертификата fiddler к порту, он работает. Когда я привязываю свой собственный сертификат к порту, он терпит неудачу.

У меня нет идиот, потому что все свойства выглядят одинаково для меня.

Существует одна вещь (опять же, я не знаю, что происходит не так, так что это может быть неактуально): на SSL-сертификате (а не на корневом) SKI указывает на никуда (или, по крайней мере, я не вижу, где это указывает), но это, похоже, имеет место и в сертификате скрипача. Очевидно, что для обоих сертификатов идентификатор ключа Authority указывает на их соответствующие корни. SKI на SSL серт устанавливается

certificateGenerator.AddExtension(X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifierStructure(subjectKeyPair.Public)); 

BTW, я использую виртуальную машину для тестирования которым сбрасывается каждый раз, так что я не думаю, что я испортил CERT магазин где-нибудь по пути. Инструмент остается той же, единственное, что изменения является оценка сертификата, и регистрируются в «локальный»

   IE  thirdparty browser 
fiddler's  good   good 
Own's   good   fail (without message) 

Почему 2, казалось бы, одинаковые сертификаты имеют различное влияние? Есть ли что-то, что я скрываю в скрытых свойствах или чем-то еще? И если да, то что я должен искать?

ответ

0

Ahhhhhhhhhhhhhhh .... Через несколько минут после этого сообщения я увидел недостаток ... Это не было связано с сертификатом вообще, но так, как это было связано с портом .... Я использовал код от Mike Bouck до свяжите сертификат. Эта линия была причиной проблемы ...

configSslParam.DefaultFlags = (uint)NativeMethods.HTTP_SERVICE_CONFIG_SSL_FLAG.HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT; 

Изменение флагов 0 заставило его работать ....

Wasted часов .... :(