2017-01-17 2 views
1

Я добавил сертификат в Bluemix, после этого поста: https://www.ibm.com/blogs/bluemix/2014/09/ssl-certificates-bluemix-custom-domains/SSL в Bluemix и Nginx конфигурации

я могу увидеть сертификат на вкладке домена, и это один я загрузил.

Теперь у меня есть контейнер с nginx, потому что мы используем его как обратный прокси. Раньше он обрабатывал конфигурацию SSL, но теперь, когда это делается непосредственно в Bluemix, мы просто хотим принять запрос https без настройки сертификата.

Что мы делали, это пересылка HTTP-запросов на https, как указано в сообщении (объяснение, как это сделать для node.js, хотя). Получается что-то вроде этого:

server { 
    listen  80; 
    server_name *hostname.domain*; 
    return 301 https://$http_host$request_uri; 
} 

И в 443 части, мы только слушать, без Ssl части:

server { 
    listen  443; 

    server_name *host.domain*; 

    *other stuff for reverse proxy* 
} 

Однако при попытке доступа к нему, я получаю общую ошибку в хроме : ERR_SSL_PROTOCOL_ERROR

Firefox дает немного больше информации:

An error occurred during a connection to *host.domain*. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG 

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

openssl s_client -connect *host.domain*:443 
CONNECTED(00000003) 
140250419918480:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:782: 
--- 
no peer certificate available 
--- 
No client certificate CA names sent 
--- 
SSL handshake has read 7 bytes and written 289 bytes 
--- 
New, (NONE), Cipher is (NONE) 
Secure Renegotiation IS NOT supported 
Compression: NONE 
Expansion: NONE 
SSL-Session: 
    Protocol : TLSv1.2 
    Cipher : 0000 
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg : None 
    PSK identity: None 
    PSK identity hint: None 
    SRP username: None 
    Start Time: 1484673167 
    Timeout : 300 (sec) 
    Verify return code: 0 (ok) 
--- 

Там нет ошибки в журналах Nginx, и я не могу управлять сказать, если проблема в на Bluemix стороне, или в конфигурации Nginx, или если Nginx позволяет такой конфигурации, в которой он должен обрабатывать https, без конфигурации сертификата ...

Есть ли у кого-то идеи?

Большое спасибо.

С уважением.

+0

Похож дубликатом HTTP : //stackoverflow.com/q/15394904/1072229. Если это не работает, вам действительно нужно включить раздел «Другие материалы для обратного прокси» в вашем конфиге. –

ответ

0

Если вы хотите, чтобы NGINX проходил через SSL, вы должны использовать модуль stream.

0

Спасибо за ваши ответы. Я не смог проверить ваши решения, но я говорил с техническим экспертом из IBM тем временем, и вот что я узнал.

О SSL pass-thru, нам нужно будет сконфигурировать каждый компонент (за nginx) для обработки SSL, так что с ним сложно справиться. Я не эксперт, поэтому, я просто сообщаю, что у меня был ответ на этот вопрос.

Во-первых, то, что мы хотим, должно быть выполнимо, удалив общедоступный IP-адрес нашего контейнера nginx. Затем, создав маршрут от балансира нагрузки BM до нашего контейнера nginx, мы должны решить проблему. Затем маршрут будет сконфигурирован для пересылки порта 443 в nginx на порт 80 (поскольку контейнер не является общедоступным, нет необходимости обрабатывать 80 И 443).

Однако Bluemix позволяет использовать только маршруты для групп контейнеров (на данный момент?). К сожалению, мы используем docker-compose, который не позволяет (на данный момент?) Создавать группы контейнеров в BlueMix.

Таким образом, лучшим решением было вернуть конфигурацию ssl в nginx. Сертификат находится как в домене BlueMix, так и в контейнере nginx.И это работает прекрасно, так что мы просто улучшить процедуру обновление сертификата, и ждать, пока есть необходимость, или новый способ сделать это ...

К.

Смежные вопросы