Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker和Letsencrypt证书的KeyClope错误_Docker_Ssl_Keycloak - Fatal编程技术网

Docker和Letsencrypt证书的KeyClope错误

Docker和Letsencrypt证书的KeyClope错误,docker,ssl,keycloak,Docker,Ssl,Keycloak,我在这里使用标准Docker图像: 然后,我运行以下命令来构建它: docker run \ -v /etc/letsencrypt/live/ds-gym.de/fullchain.pem:/etc/x509/https/fullchain.pem \ -v /etc/letsencrypt/live/ds-gym.de/privatekey.pem:/etc/x509/https/privatekey.pem \ -e KEYCLOAK_USER=myadmin \ -e KEYCL

我在这里使用标准Docker图像:

然后,我运行以下命令来构建它:

docker run \
 -v /etc/letsencrypt/live/ds-gym.de/fullchain.pem:/etc/x509/https/fullchain.pem \
 -v /etc/letsencrypt/live/ds-gym.de/privatekey.pem:/etc/x509/https/privatekey.pem \
 -e KEYCLOAK_USER=myadmin \
 -e KEYCLOAK_PASSWORD=mypassword \
 -p 8443:8443 jboss/keycloak
不幸的是,我得到了以下错误:

错误[io.undertow.request](默认I/O-1)关闭SSLConduit后 握手异常:javax.net.ssl.SSLHandshakeException:无密码 共同套房


我是否必须将文件转换为
.crt
.key?
我认为这无关紧要。如何解决此问题?

似乎KeyClope没有使用您提供的私钥和证书。它们应作为
tls.key
tls.crt
因此,相应地更换坐骑就足够了:

-v /etc/letsencrypt/live/ds-gym.de/fullchain.pem:/etc/x509/https/tls.crt \
-v /etc/letsencrypt/live/ds-gym.de/privatekey.pem:/etc/x509/https/tls.key \
我的keydove实例也在使用最新的keydove版本和LetsEncrypt运行,没有任何问题

编辑:

我的docker compose设置,可能有助于您调试

$ ls -l
-rw-r--r-- 1 user 197121  904 Dez 22 13:28 docker-compose.yml
-rw-r--r-- 1 user 197121 3566 Dez 22 13:28 fullchain.pem
-rw-r--r-- 1 user 197121 1708 Dez 22 13:28 privatekey.pem
docker-compose.yml

version: "3.7"

services:
  mysql:
    image: mysql:5.7
    volumes:
       - mysql_data:/var/lib/mysql
    ports:
       - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: keycloak
      MYSQL_USER: keycloak
      MYSQL_PASSWORD: password

  keycloak:
    image: jboss/keycloak
    ports:
       - 8443:8443
    environment:
      PROXY_ADDRESS_FORWARDING: "true"
      DB_VENDOR: MYSQL
      DB_ADDR: mysql
      DB_DATABASE: keycloak
      DB_USER: keycloak
      DB_PASSWORD: password
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: admin
      JDBC_PARAMS: "useSSL=false"
    volumes:
      - mysql_data:/opt/jboss/mysql_data
      - ./fullchain.pem:/etc/x509/https/tls.crt
      - ./privatekey.pem:/etc/x509/https/tls.key
    depends_on:
      - mysql
    links:
      - mysql

volumes:
  mysql_data:
    driver: local
启动keydepeat后,我可以通过SSL连接到它

$ curl -v 'https://localhost:8443'
0* Connected to localhost (127.0.0.1) port 8443 (#0)
...
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*        subject: CN=mydomain.com
*        start date: 2019-10-29 01:25:18 GMT
*        expire date: 2020-01-27 01:25:18 GMT
*        subjectAltName does not match localhost
* SSL: no alternative certificate subject name matches target host name 'localhost'
* Closing connection 0
} [5 bytes data]
* TLSv1.2 (OUT), TLS alert, Client hello (1):
} [2 bytes data]
curl: (51) SSL: no alternative certificate subject name matches target host name 'localhost'

SSL整体工作正常,只是失败了,因为LetsEnctypt证书对localhost:-)无效。

@DataMastery-您无法更改容器中的路径,除非您进行了更高级的配置谢谢,但不幸的是,仍然会出现此错误:-(.你对Jan Garaj的确切意思是什么?我的路径哪里错了?@DataMastery Keyclope默认配置为使用tls证书的
/etc/x509/https/tls.crt
容器路径,但是你将自己的证书放在不同的路径
/etc/x509/https/fullchain.pem
。因此,在这种情况下,默认证书当然仍然会被拾取。你可以使用自己的路径
/etc/x509/https/fullchain.pem
,但您需要配置keydape以某种方式使用新的自定义路径。啊,好的,我理解:-)。原始证书是否有.pem结尾有关系吗?是否需要转换?不,通常不需要转换。不清楚错误的来源和使用的KeyClope版本。