我运行使用Docker构建的keycloak并遇到一个奇怪的错误。这是我用于Keycloak的Dockerfile。它使用LetsEncrypt证书将.pem文件更改为.crt和.key文件,因为Keycloak密钥库需要tls.crt和tls.key文件。
docker run -d \
-v /etc/letsencrypt/live/ds-gym.de/tls.crt:/etc/x509/https/tls.crt \
-v /etc/letsencrypt/live/ds-gym.de/tls.key:/etc/x509/https/tls.key \
-e KEYCLOAK_USER=myadmin \
-e KEYCLOAK_PASSWORD=mypassword \
-p 8443:8443 jboss/keycloak
我从以下文件运行另一个Docker容器:由于无法在Java Keystore中导入多个文件,因此将.crt和.key转换为.der文件,还尝试了.p12文件。两者都不起作用。
FROM openjdk:8-jre
COPY certificate.pfx $JAVA_HOME/jre/lib/security/certificate.pfx
RUN \
cd $JAVA_HOME/jre/lib/security \
keytool -importkeystore -srckeystore certificate.pfx -srcstorepass -changeit -srcstoretype pkcs12 -destkeystore cacerts -deststorepass changeit -deststoretype JKS
RUN mkdir -p /opt/shinyproxy/
RUN wget https://www.shinyproxy.io/downloads/shinyproxy-2.3.0.jar -O /opt/shinyproxy/shinyproxy.jar
COPY application.yml /opt/shinyproxy/application.yml
WORKDIR /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]
它通过以下命令启动:
sudo docker run -v /var/run/docker.sock:/var/run/docker.sock --net sp-example-net -p 5000:5000 shinyproxy-example
Nginx作为反向代理位于端点的前面:这是这样做的:
location / {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
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;
}
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;
}
我想Java Keystore可能存在问题,我将.der / .p12文件复制到其中,但是也许也与keycloak有关。这些是我的错误:
在浏览器上,我看到以下内容:
启动应用程序时显示。
谁能帮助我正确导入证书?
最佳答案
您的Keycloak证书/etc/letsencrypt/live/ds-gym.de/tls.crt
很可能不包含完整的证书链。对于LE证书,这是非常常见的问题。 ssllabs.com还报告ds-gym.de
域的链问题。请修复证书(使用全链pem证书格式),然后重新启动Keycloak。
至少这是您设置中的一个明显问题。
关于docker - 具有HTTPS的Keycloak keystore 和Java keystore ->重定向循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59446436/