Сервер Nginx подключается к Java Spring с SSL - PullRequest
0 голосов
/ 31 января 2019

У меня есть 2 контейнера Docker, один с nginx с использованием SSL (443) и один с Java / Spring API, который также должен быть выставлен на HTTPS (8443).

Java-сертификат, который я преобразовал с фронтаконец сертификата, и я создал сертификат .p12, используемый следующим образом:

server:
    port: 8443
    ssl:
        key-store: certificate.p12
        key-store-password: 123456
        key-store-type: PKCS12

Это nginx.conf:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    server {
        listen 80;

        location /api {
            proxy_pass https://app.site.com:8443;
        }

        location /signin {
            proxy_pass https://app.site.com:8443;
        }

        location /social/signup {
            proxy_pass https://app.site.com:8443;
        }

        server_name app.competithor.com;
        return 301 https://$server_name$request_uri;
      }
    server {
        listen 443 ssl;

        ssl on;
        ssl_certificate /etc/ssl/app.site.com.crt;
        ssl_certificate_key /etc/ssl/app.site.com.key;

        ssl_session_timeout 5m;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        server_name  localhost;

        root   /usr/share/nginx/html;
        index  index.html index.htm;
        include /etc/nginx/mime.types;

        gzip on;
        gzip_min_length 1000;
        gzip_proxied expired no-cache no-store private auth;
        gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        location / {
            try_files $uri $uri/ /index.html;
        }

        location /api {
            proxy_pass https://app.site.com:8443;
            proxy_ssl_protocols TLSv1.2;
            proxy_ssl_name $host;
            proxy_ssl_server_name on;

            proxy_set_header  Host              $host;
            proxy_set_header  X-Real-IP         $remote_addr;
            proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header  X-Forwarded-Proto $scheme;
            proxy_pass_header Authorization;
        }

        location /signin {
            proxy_pass https://app.site.com:8443;
            proxy_ssl_protocols TLSv1.2;
            proxy_ssl_name $host;
            proxy_ssl_server_name on;

            proxy_set_header  Host              $host;
            proxy_set_header  X-Real-IP         $remote_addr;
            proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header  X-Forwarded-Proto $scheme;
            proxy_pass_header Authorization;
        }

        location /social/signup {
            proxy_pass https://app.site.com:8443;
           proxy_ssl_protocols TLSv1.2;
           proxy_ssl_name $host;
           proxy_ssl_server_name on;

           proxy_set_header  Host              $host;
           proxy_set_header  X-Real-IP         $remote_addr;
           proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
           proxy_set_header  X-Forwarded-Proto $scheme;
           proxy_pass_header Authorization;
        }
    }
}

У меня всегда есть эта ошибка: [ошибка] 6 #6: * 4 Ошибка SSL_do_handshake () (SSL: ошибка: 14077410: подпрограммы SSL: SSL23_GET_SERVER_HELLO: сбой квитирования оповещения sslv3) во время подтверждения связи SSL с восходящим потоком

Я перепробовал множество настроек в конфигурации nginx и java, нота же ошибка.Кто-нибудь знает, как может работать это рукопожатие / соединение?

ОБНОВЛЕНИЕ: Java-приложение Maven, я должен настроить хранилище ключей в файле mvnw?

ОБНОВЛЕНИЕ2: openssl s_client -connect localhost: 8443возвращает: CONNECTED (00000003)

140514309248664: ошибка: 14077410: подпрограммы SSL: SSL23_GET_SERVER_HELLO: ошибка квитирования оповещения sslv3: s23_clnt.c: 769:

нет сертификата однорангового узла

* 1020Сертификаты ЦС клиентов не отправлены

Рукопожатие SSL прочитало 7 байтов и записало 305 байтов

Новый, (НЕТ), Шифр ​​(НЕТ) Безопасное повторное согласование НЕ поддерживается Сжатие: НЕТ Расширение: НЕТНе согласовано ALPN. Сеанс SSL: протокол: TLSv1.2. Шифр: 0000 ID сеанса: ID сеанса: ctx: главный ключ: ключ-аргумент: нет. Идентификатор PSK: отсутствует. Подсказка идентификатора PSK: отсутствует. Имя пользователя SRP: нет. Время запуска:1549049020 Время ожидания: 300 (с). Проверить код возврата: 0 (нормально)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...