Я создаю новый веб-сайт и хочу запустить 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: нет общих наборов шифров