Включил принудительное использование https на стороне nginx. Интеграция упала с ошибкой:
Код
Авторизация не выполнена.
Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль.
Загрузка заказов не выполнена.
Предполагаю, что 1С не умеет обращаться с переадресацией и нужно сразу в параметрах узла указать https. Все равно ошибка.
Хорошо, тестирую конфигурацию сайта. Получаю на тесте "HTTP авторизация" успех. Но есть проблема с тестом "Внутреннее перенаправление (функция LocalRedirect)":
Код
2015-Dec-18 10:36:32 Внутреннее перенаправление (функция LocalRedirect) (check_localredirect): Ok
50% done
Connection to ssl://www.example.com:443 Success
2015-Dec-18 10:36:33 Внутреннее перенаправление (функция LocalRedirect) (check_localredirect): Fail
Connection to www.example.com:80 Success
== Request ==
GET /bitrix/admin/site_checker.php?test_type=redirect_test&unique_id=b3c83f2b444454696c505c30e01caeb4&SERVER_PORT=80&HTTPS=&FCGI_ROLE=&HTTP_HOST=www.example.com&SERVER_PROTOCOL=HTTP%2F1.0&done=Y HTTP/1.1
Host: www.example.com
== Response ==
HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.0
Date: Fri, 18 Dec 2015 07:36:33 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Location: https://www.example.com:443/bitrix/admin/site_checker.php?test_type=redirect_test&unique_id=b3c83f2b444454696c505c30e01caeb4&SERVER_PORT=80&HTTPS=&FCGI_ROLE=&HTTP_HOST=www.example.com&SERVER_PROTOCOL=HTTP%2F1.0&done=Y
== Body ==
<ht ml>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.6.0</center>
</body>
</html>
==========
Ошибка! Не работает
Т.е. тест в курсе, что я зашел в админку по https, но упорно тестирует на 80 порту и нарывается на переадресацию. Потому и не проходит. Это вопрос отдельный, скорее всего. Сюда написал на всякий случай, для полноты картины.
Вопрос в теме. Нужно ли копать 1С, сайт, чтобы заставить работать интеграцию
С ошибкой в тесте конфигурации я разобрался. Нужно было обеспечить серверной переменной HTTPS верное значение. Используется двухуровневая архитектура (nginx+Apache+php_mod). Проблемы с авторизацией из 1С сохранились.
Денис Диденко написал: до какой то из версий платформы 8.3 1с не умела https
Посмотрел анонсы платформы. Есть анонс по пачке версий (8.3.1, 8.3.2, 8.3.3). Там сказано, что SSL теперь поддерживается "во всех механизмах платформы, использующих Интернет".
У меня (я не программист 1С) платформа 8.3.5.1383. Значит поддержка сертификатов и SSL со стороны платформы есть.
Документации по платформе я не нашел. Имеются ли другие способы работы с https до способа с явной работой с сертификатами - тоже не знаю. Что будет, если в объект содениения не передать объект с OpenSSL и все равно лезть по https - не представляю.
Было бы интересно знать как это сделано в обмене 5. И может ли это в принципе работать с сайтами по https.
Анатолий Кирсанов написал: Документации по платформе я не нашел. Имеются ли другие способы работы с https до способа с явной работой с сертификатами - тоже не знаю. Что будет, если в объект содениения не передать объект с OpenSSL и все равно лезть по https - не представляю.
Было бы интересно знать как это сделано в обмене 5. И может ли это в принципе работать с сайтами по https.
У нас сертификат не подставляется. Если нужен конкретный сертификат - нужно дорабатывать модуль обмена со стороны 1С.
Нужно как в браузере в простешем случае. Выбрал адрес с https, зашел. Подставлять сертификат нужно в тех случаях, когда сайт умеет авторизовывать по нему. Это не тот случай.
Анатолий Кирсанов написал: Нужно как в браузере в простешем случае. Выбрал адрес с https, зашел. Подставлять сертификат нужно в тех случаях, когда сайт умеет авторизовывать по нему. Это не тот случай.
Для корректной совместной работы редиректа http -> https на nginx и теста LocalRedirect в проверке системы Битрикса необходимо установить переменную окружения HTTPS=on в случае, когда запрос выполняется по https. Переменная продублируется в $_SERVER['HTTPS'], и Битрикс сможет определять текущий протокол корректно.