keycloak 配置 mysql_使用Docker映像的Keycloak SSL设置

本文档详细介绍了如何使用Docker和letencrypt证书为Keycloak设置SSL,以及如何配置Keycloak与MySQL数据库的连接。通过docker-compose配置文件,展示了证书的正确放置和权限设置,以确保Keycloak服务可以通过HTTPS访问。
摘要由CSDN通过智能技术生成

小编典典

我还遇到了ERR_SSL_VERSION_OR_CIPHER_MISMATCH使用jboss / keycloak

Docker映像和letsencrypt提供的免费证书时出错的问题。即使考虑了其他评论的建议。现在,我有了一个有效的(并且非常简单)的设置,它可能也对您有所帮助。

1)生成letencrypt证书

首先,我sub.example.com使用certbot

为域生成了letencrypt证书。你可以找到详细的说明和替代方法获得的证书https://certbot.eff.org/在和用户指南https://certbot.eff.org/docs/using.html。

$ sudo certbot certonly --standalone

Saving debug log to /var/log/letsencrypt/letsencrypt.log

Plugins selected: Authenticator standalone, Installer None

Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): sub.example.com

Obtaining a new certificate

Performing the following challenges:

http-01 challenge for sub.example.com

Waiting for verification...

Cleaning up challenges

IMPORTANT NOTES:

- Congratulations! Your certificate and chain have been saved at:

/etc/letsencrypt/live/sub.example.com/fullchain.pem

Your key file has been saved at:

/etc/letsencrypt/live/sub.example.com/privkey.pem

Your cert will expire on 2020-01-27. To obtain a new or tweaked

version of this certificate in the future, simply run certbot

again. To non-interactively renew *all* of your certificates, run

"certbot renew"

2)准备docker-compose环境

我docker-compose过去通过docker运行keycloak。配置和数据文件存储在path中/srv/docker/keycloak/。

文件夹config包含docker-compose.yml

文件夹data/certs包含我通过letencrypt生成的证书

文件夹data/keycloack_db被映射到数据库容器以使其数据持久化。

将证书文件放在正确的路径

当我最初使用原始的letcrypt证书进行密钥隐藏时遇到问题时,我尝试了将证书转换为另一种格式的变通方法,如先前答案的注释中所述,该方法也失败了。最终,我意识到我的问题是由对映射的证书文件设置的权限引起的。

因此,对我有用的是仅复制并重命名letencrypt提供的文件 ,然后将它们安装到容器中。

$ cp /etc/letsencrypt/live/sub.example.com/fullchain.pem /srv/docker/keycloak/data/certs/tls.crt

$ cp /etc/letsencrypt/live/sub.example.com/privkey.pem /srv/docker/keycloak/data/certs/tls.key

$ chmod 755 /srv/docker/keycloak/data/certs/

$ chmod 604 /srv/docker/keycloak/data/certs/*

docker-compose.yml

就我而言,我需要使用Docker主机的主机网络。这不是最佳做法,您的情况不应该这样做。请在hub.docker.com/r/jboss/keycloak/的文档中找到有关配置参数的信息。

version: '3.7'

networks:

default:

external:

name: host

services:

keycloak:

container_name: keycloak_app

image: jboss/keycloak

depends_on:

- mariadb

restart: always

ports:

- "8080:8080"

- "8443:8443"

volumes:

- "/srv/docker/keycloak/data/certs/:/etc/x509/https" # map certificates to container

environment:

KEYCLOAK_USER:

KEYCLOAK_PASSWORD:

KEYCLOAK_HTTP_PORT: 8080

KEYCLOAK_HTTPS_PORT: 8443

KEYCLOAK_HOSTNAME: sub.example.ocm

DB_VENDOR: mariadb

DB_ADDR: localhost

DB_USER: keycloak

DB_PASSWORD:

network_mode: host

mariadb:

container_name: keycloak_db

image: mariadb

volumes:

- "/srv/docker/keycloak/data/keycloak_db:/var/lib/mysql"

restart: always

environment:

MYSQL_ROOT_PASSWORD:

MYSQL_DATABASE: keycloak

MYSQL_USER: keycloak

MYSQL_PASSWORD:

network_mode: host

最终目录设置

这就是我最终文件和文件夹设置的样子。

$ cd /srv/docker/keycloak/

$ tree

.

├── config

│ └── docker-compose.yml

└── data

├── certs

│ ├── tls.crt

│ └── tls.key

└── keycloak_db

启动容器

最后,我能够使用启动我的软件docker-compose。

$ cd /srv/docker/keycloak/config/

$ sudo docker-compose up -d

我们可以在容器中看到已安装的证书。

$ cd /srv/docker/keycloak/config/

$ sudo docker-compose up -d

我们可以仔细检查容器中已安装的证书。

## open internal shell of keycloack container

$ sudo docker exec -it keycloak_app /bin/bash

## open directory of certificates

$ cd /etc/x509/https/

$ ll

-rw----r-- 1 root root 3586 Oct 30 14:21 tls.crt

-rw----r-- 1 root root 1708 Oct 30 14:20 tls.key

考虑从docker-

compose.yml进行的设置,现在可以在https://sub.example.com:8443上使用keycloak

2020-06-17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值