Ошибка Keycloak с сертификатами Docker и Letsencrypt снова - PullRequest
1 голос
/ 25 января 2020

Я создаю новый веб-сайт и хочу запустить Keycloak в Docker Setup с помощью следующей команды:

docker run \
 -v /etc/letsencrypt/live/data-mastery.com/fullchain.pem:/etc/x509/https/tls.crt \
 -v /etc/letsencrypt/live/data-mastery.com/privkey.pem:/etc/x509/https/tls.key \
 -e KEYCLOAK_USER=myadmin \
 -e KEYCLOAK_PASSWORD=mypassword \
 -e PROXY_ADDRESS_FORWARDING=true \
 -p 8443:8443 jboss/keycloak

Это мой nginx:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

}

server {
  listen                443;
  server_name           data-mastery.com;


  ssl on;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  ssl_certificate /etc/letsencrypt/live/data-mastery.com/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/data-mastery.com/privkey.pem; # managed by Certbot

   location /auth/ {
       proxy_pass          https://127.0.0.1:8443;

       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       proxy_read_timeout 600s;

       proxy_redirect    off;
       proxy_set_header  Host             $http_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;
     }

}



server {
    if ($host = data-mastery.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80 ;
    listen [::]:80 ;
    server_name data-mastery.com;
    return 404; # managed by Certbot

}

Я получаю следующее сообщение об ошибке / предупреждение, которое на самом деле помогает мне увидеть, что существует корректная настройка SSL с помощью Keycloak:

ПРЕДУПРЕЖДЕНИЕ. Установка SSL-соединения без проверки подлинности сервера не рекомендуется
. В соответствии с требованиями MySQL 5.5.45+, 5.6.26+ и 5.7.6+ SSL-соединение должно быть установлено по умолчанию, если явная опция не установлена. Для соответствия существующим приложениям
t, использующим SSL, для свойства verifyServerCertificate установлено значение false. Вам нужно либо явно отключить SSL, установив useSSL = false, либо установить useSSL = true и предоставить хранилище доверенных сертификатов для проверки сертификата s
.

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

ОШИБКА [io.undertow.request] (по умолчанию I / O-1) Закрытие SSLConduit после исключения при рукопожатии: javax. net .ssl.SSLHandshakeException: нет общих наборов шифров

1 Ответ

1 голос
/ 25 января 2020

возможно вы можете добавить список шифров, принятый вашей конфигурацией. попробуйте это:

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;

, и вы также можете настроить требуемые протоколы

ssl_protocols TLSv1.2 TLSv1.3;

ОШИБКА [io.undertow.request ] (по умолчанию I / O-1) Закрытие SSLConduit после исключения при рукопожатии: javax. net .ssl.SSLHandshakeException: никаких общих наборов шифров

Эта ошибка говорит нам, что ваш клиент и ваш сервер не имеет общего шифра для общения. Проверьте шифр, используемый вашим клиентом, и шифр, используемый вашим сервером. Убедитесь, что есть хотя бы один общий

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