我建立了一个新网站,并希望使用以下命令在Docker安装程序中运行Keycloak:
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
}
我得到了以下错误/警告,实际上可以帮助我查看Keycloak进行的有效SSL设置:
WARN:在没有服务器身份的情况下建立SSL连接 不建议进行验证
。根据MySQL 5.5.45 +,5.6.26 +和5.7.6+要求SSL 如果没有显式选项,则默认情况下必须建立连接 组。为了与现有应用程序兼容
使用SSL将verifyServerCertificate属性设置为'false'。 您需要通过设置useSSL = false显式禁用SSL,或者 设置useSSL = true并为s提供信任库
erver证书验证。
我设置了所有密码,ssl协议,即使似乎存在有效的SSL连接,它仍然无法正常工作。但是,当我访问/ auth端点时,出现错误。我很无奈。
错误[io.undertow.request](默认I / O-1)在关闭SSLConduit之后 握手异常:javax.net.ssl.SSLHandshakeException:无密码 共同的套房
答案 0 :(得分:1)
也许您可以添加配置接受的密码列表。 尝试:
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:没有通用的密码套件
此错误告诉我们,您的客户端和服务器没有共同的密码来进行通信。 检查客户端使用的密码和服务器使用的密码。确保至少有一个共同点