2016-07-22 3 views
-2

Я разрабатываю серверное приложение, которое должно сначала попробовать использовать TLS/SSL для безопасной связи через сеть, но если какая-то проблема для его достижения, должен возвращаться к незашифрованному, а не зашифрованному сообщению.Обнаружение с серверной стороны, если пользователь не установил/не доверял моему частному CA на своем компьютере

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

Я хотел бы узнать от вас, если есть какой-то способ узнать с помощью OpenSSL (или простой в использовании альтернативной библиотеки реализации TLS/SSL) C API, если пользователь не установил/не доверял моему частному CA на его так что я могу отказаться от простой текстовой коммуникации даже до того, как клиентское приложение беспокоит ее с помощью предупреждающих сообщений. Я не могу полагаться на проверки на стороне клиента, так как мое приложение предназначено для совместимости с сторонними клиентами. Является ли это возможным?

EDIT: Я просто хочу знать, можно ли обнаружить с серверной стороны, если пользователь установил/доверился на моем частном СА на своем компьютере. Если возможно, что я должен проверить с помощью OpenSSL на моем серверном приложении?

+0

@jww Ваше изменение отклонено. Непостижимый. OpenSSL конкретно упоминается в вопросе, а HTTPS - нет. – EJP

+0

@EJP - Мне бы хотелось услышать, как это имеет отношение к OpenSSL (кроме OP, которое знает имя библиотеки), но сегодня у меня есть другие дела. Удачи вам. – jww

+0

@jww Это ваше редактирование. Вы это оправдываете. Сообщите нам, откуда у вас HTTPS, и как упоминание OP о OpenSSL не имеет значения. Я должен надеяться, что у вас есть чем заняться, чем сделать неправильные изменения. – EJP

ответ

-1

Я имею в виду тот случай, когда пользователь еще не установлен сертификат ЦС в его компьютере и так клиентское приложение подведет делает TLS/SSL рукопожатия

Там нет такой случай. Никакой сертификат от клиента в ответ на CertificateRequest не является ошибкой TLS и не вызывает сбоя квитирования.

Что действительно происходит, так это то, что рукопожатие преуспевает, и когда приложение отправляется на получение сертификатов однорангового узла, оно не получает никаких. Какая форма в OpenSSL я не знаю. Но для этого вам нужно написать код.

EDIT Как теперь кажется, вы говорите об отсутствии сервера сертификатов, ваш вопрос не имеет смысла. Один из шагов инициализации OpenSSL говорит, где найти секретный ключ и сертификат сервера, и на этом этапе вы можете точно сказать, присутствует ли он или нет. Между тем, что именно должен делать клиент? Попробуйте SSL-квитирование и продолжите с помощью открытого текста, если он не сработает? Начать в открытом тексте и каким-то волшебным образом сказать, чтобы использовать TLS?

+0

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

+0

@ Tiago.SR Это тоже не имеет для меня никакого смысла, и это не то, что я сказал. Читайте то, что я написал снова. Я специально сказал «Нет сертификата от * клиента *». Это также не похоже на то, о чем вы просите, хотя это не все так ясно. – EJP

+0

Я просто хочу знать, возможно ли это и как делать с серверной стороны, если пользователь установил/доверил мой самозанятый СА на своем компьютере. Если он не был установлен/доверен, поэтому я продолжу в открытом виде. –