栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Docker映像的Keycloak SSL设置

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Docker映像的Keycloak SSL设置

我还遇到了

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 --standaloneSaving debug log to /var/log/letsencrypt/letsencrypt.logPlugins selected: Authenticator standalone, Installer NonePlease enter in your domain name(s) (comma and/or space separated)  (Enter 'c' to cancel): sub.example.comObtaining a new certificatePerforming the following challenges:http-01 challenge for sub.example.comWaiting for verification...Cleaning up challengesimportANT 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: hostservices:  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: <user>      KEYCLOAK_PASSWORD: <pw>      KEYCLOAK_HTTP_PORT: 8080      KEYCLOAK_HTTPS_PORT: 8443      KEYCLOAK_HOSTNAME: sub.example.ocm      DB_VENDOR: mariadb      DB_ADDR: localhost      DB_USER: keycloak      DB_PASSWORD: <pw>    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: <pw>      MYSQL_DATAbase: keycloak      MYSQL_USER: keycloak      MYSQL_PASSWORD: <pw>    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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号