sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
extra_vars5 | |
extra_vars6 |
성공적인 SSL 적용후에 몇가지 체크 사항을 위해 기록으로 남긴다.
몇몇 레퍼런스들을 살펴보면서 내가 구축한 환경과의 차이점은
내가 keycloak 을 설치한 환경에서는 이미 80과 443 포트로 운영중인 웹서버가 있었다.
다만 인증서버를 별도의 장비로 분리해가면서 운영할 필요는 없다고 생각해서 같은 환경에서 구축하고 있었는데
대부분 예제들은 리버스 프록시를 위해 nginx 를 사용하는데 인증서를 nginx 에 적용하기 때문에 정작 keycloak 만 운영하고픈 나의 환경에서는 적용할 수가 없었다.
그런데 예제 하나가 정확하게 docker-compose 로 keycloak 에 인증서를 적용하여 실행하는 예제를 보여주었다. -> Deploy keycloak with ssl
다만 yml 내용에서 version 차이로 내용이 조금 달랐는데 살짝 수정해서 큰 문제없이 성공했다.
다음은 내가 성공한 docker-compose.yml 의 내용이다.
1. 환경정보
- windows 11 pro
- docker desktop 4.26.1
- docker compose version : 3.8
2. docker-compose.yml
version: '3.8'
services:
postgres:
image: bitnami/postgresql:14.7.0
volumes:
- postgres_data:/var/lib/postgres/data
environment:
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: password
POSTGRES_DB: keycloak
ports:
- 5433:5432
keycloak:
image: bitnami/keycloak:21.0.2
volumes:
- ./certs/fullchain.pem:/etc/x509/https/tls.crt
- ./certs/privkey.pem:/etc/x509/https/tls.key
environment:
DB_VENDOR: POSTGRES
DB_ADDR: postgres
DB_DATABASE: keycloak
DB_USER: keycloak
DB_PASSWORD: password
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: password
KC_HTTPS_CERTIFICATE_FILE: /etc/x509/https/tls.crt
KC_HTTPS_CERTIFICATE_KEY_FILE: /etc/x509/https/tls.key
ports:
- 8282:8080
- 8443:8443
depends_on:
- postgres
volumes:
postgres_data:
driver: local
driver_opts:
type: none
device: ./postgres_data
o: bind
대부분은 jboss/keycloak 을 많이 사용하던데 내가 bitnami 를 좋아해서 걍 bitnami 버전으로 선택했다.
그리고 db나 keycloak 의 admin password는 테스트니까 다른 예제들을 가져온거라 초기값 그대로인데 이젠 바꿔서 적용했다.
보면 인증서 파일의 확장자를 변경해서 적용했는데, 큰 문제없이 잘 적용되더라.
letsencrypt 에서는 인증서 파일들이 모두 pem 확장자인데 keycloak 에 적용할땐 crt 와 key 파일로 확장자를 변환해줘야 하나보다.
큰 의미는 없는거 같아서 걍 시키는대로 yml 내용을 작성해서 적용했고 이상없이 동작하고 있다.