Ошибка авторизации SSL ColdFusion

У меня есть простой запрос cfhttp (логин), выходящий на сервер SSL:

<cfhttp url="https://www2.[domain].com/api/user/login" method="POST" port="443" >
    <cfhttpparam type="formfield" name="username" value="[username]" >
    <cfhttpparam type="formfield" name="password" value="[password]" >
</cfhttp>

Запрос завершается ошибкой до его начала, и сервер ColdFusion сообщает:

Исключение ввода-вывода: партнер не аутентифицирован

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

После того, как я потратил день, пытаясь получить правильный сертификат в хранилищах ColdFusion, мне пришла в голову блестящая идея сравнить их с рабочими средами разработки. Я посмотрел на них (keytool -list), и они идентичны.

Теперь, когда очевидное снято, у меня остались два вопроса:

  1. Есть ли какой-то другой репозиторий сертификатов, который мне нужно проверить, или, в качестве альтернативы, есть ли место, где я могу попросить ColdFusion сообщить мне, какой репозиторий сертификатов ему нужен, чтобы найти сертификат IN (на случай, если он может и был изменен ) или если это вообще возможно.
  2. Выявите и устраните другие причины, которые могут быть причиной этого.

person OhkaBaka    schedule 10.08.2011    source источник
comment
Похоже, вы все сделали правильно, но я бы проверил шаги на stackoverflow.com/questions/1613038/ и talkingtree.com/blog/index.cfm/2004/7/1/keytool просто для уверенности. Убедитесь, что у вас есть полная цепочка сертификатов на обоих серверах.   -  person Dan Short    schedule 10.08.2011
comment
Отредактированный оригинал, чтобы выделить соответствующий вопрос.   -  person OhkaBaka    schedule 10.08.2011


Ответы (2)


Среды разработки и производства одинаковы? Все ли они, например, ColdFusion 9 Standard или ColdFusion 8 Enterprise?

По моему опыту, эта ошибка обычно вызвана одной из двух причин:

  1. Администратору не удалось установить сертификат в репозиторий cacarts, либо он установил его не в тот.

  2. В выпусках ColdFusion Enterprise и ColdFusion Developer (как я полагаю, для ColdFusion 8 и ColdFusion 9) есть проблема с установленной встроенной библиотекой BSafe CryptoJ и некоторыми типами сертификатов (мне еще не удалось определить шаблон), которые вызывает эту ошибку. Есть некоторые обходные пути, если это так.

Во-первых, я бы исследовал возможность того, что вы импортируете не тот репозиторий сертификатов. Может быть трудно сказать, какой репозиторий используется. В вашем администраторе CF в разделе «Сводка настроек» вы сможете найти местоположение используемой JRE. Он указан в разделе «Java Home». Возьмите этот каталог и добавьте lib/security в его конец, и это должно быть расположением используемого файла cacaerts. Я говорю следует, потому что видел как минимум одну странную ситуацию, в которой этого не было.

person Jason Dean    schedule 10.08.2011
comment
Чрезвычайно полезно. Создатель сайта, по-видимому, переключил движок на другую версию Java, поэтому никакие изменения, написанные для стандартного развертывания, работать не будут. Нашел правильный Java Home, и теперь все работает отлично. - person OhkaBaka; 10.08.2011
comment
Джейсон, не могли бы вы предоставить более подробную информацию о библиотеке BSafe CryptoJ? В настоящее время у нас возникают проблемы с импортом сертификата Twitter. Мы пытались добавить его в cacerts и trustSource, но он все еще не работает. - person Lucas; 11.08.2011
comment
Лукас, объяснил здесь: coldfusionjedi.com/index.cfm/2011/1/12/ Читайте также комментарии - person Jason Dean; 11.08.2011

У меня БЫЛА такая же проблема, я все перепробовал и не могу исправить. Странно, что все работало нормально, а потом вдруг перестало работать. Это может быть обновление Java на сервере, вызывающее проблему, или изменение сертификата на веб-сайте, к которому пытается получить доступ CFHTTP.

Во всяком случае, вот ссылка, которую я установил для «демонстрации» этой проблемы:

http://www.viaromania.eu/https.cfm

Как видите, я пытаюсь получить доступ к службе HTTPS, используя тег CFHTTP. И это не работает. Я удалил сертификат из C:\ColdFusion9\runtime\jre\lib\security\cacerts, сгенерировал новый из URL-адреса веб-сайта, импортировал обратно, установил «certman» под CFID/administrator, проверил сертификат, он там... и он указан на моей тестовой странице.

Если вы прокрутите вниз мою тестовую страницу, вы увидите CFHTTP, аналогичный https://www.google.com и это прекрасно работает, даже если на сервере не установлен сертификат.

Важно отметить, что запрос работает просто идеально на моей машине разработки, и здесь у меня также нет установленного сертификата...

И ВОТ КАК Я ЭТО ИСПРАВИЛ

<сильный>1. Обновление ColdFusion 9.0.2: https://helpx.adobe.com/coldfusion/kb/cumulative-hotfix-1-coldfusion-902.html

<сильный>2. Установил Java JDK 1.7.0_79 отсюда http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

<сильный>3. Домашняя страница Java в Администраторе ColdFusion/Настройки сервера → Java и JVM изменена с «C:\ColdFusion9\runtime\lib\jre» на «C:\Program Files\Java\jdk1.7.0_79\jre».

Вот и все. Я не знаю, использует ли он какой-либо сертификат или нет. Они были установлены в «C:\ColdFusion9\runtime\lib\jre\lib\security\cacerts» и не перемещались оттуда или что-то еще.

person Adrian Ciocălău    schedule 17.02.2016