HTTPS 서버 인증 적용 [ nginx, keycloak , letsencrypt , Certbot ] - kuyeol/Document GitHub Wiki
SSL 서버에 적용하기
[!note] 구성 요소 :
letsencrypt : 인증 패키지
Certbot : 인증키 발급 패키지
- Path : /etc/letsencrypt/live/{도메인명}/
- ssl_certificate CA_키 : 키파일 *.pem
- 예 )
fullchain.pem
- ssl_certificate_key Private_키 : 키파일 *.pem
- 예 )
privkey.pem
Nginx : http 서버
- Path :
/etc/nginx/sites-available/default
- Nginx 서버 구성 파일
: default
[!tip]
발급 받은 인증서 키를 공유하여 인증허가
Keycloak
services:
keycloak:
image: quay.io/keycloak/keycloak:26.2
environment:
- KC_BOOTSTRAP_ADMIN_USERNAME=admin
- KC_BOOTSTRAP_ADMIN_PASSWORD=admin
- KC_HOSTNAME=ung.ddns.net
- KC_METRICS_ENABLED=true
- KC_HEALTH_ENABLED=true
- KC_HTTP_ENABLED=true
- KEYCLOAK_ENABLE_HTTPS=true
- KEYCLOAK_HTTPS_USE_PEM=true
# - KC_HOSTNAME_STRICT=false
- KC_HTTPS_CERTIFICATE_FILE=/etc/fullchain.pem
- KC_HTTPS_CERTIFICATE_KEY_FILE=/etc/privkey.pem
ports:
- "5080:8080"
- "5443:8443"
volumes:
- ./etc/fullchain.pem:/etc/fullchain.pem
- ./etc/privkey.pem:/etc/privkey.pem
command: start --hostname-strict=false
1. 인증서 카피
- 발급 된 인증서를 컴포즈 디렉토리 하위 폴더에 카피
2. 컴포즈 파일 정의
볼륨 매핑 컴포즈디렉토리:컨테이너디렉토리
- 컨테이너 생성 시 컴포즈디렉토리 위치를 기준 내부 디렉토리 매핑
.
기준 상대 경로volumes : - ./etc/fullchain.pem:/etc/fullchain.pem - ./etc/privkey.pem:/etc/privkey.pem
Key 파일 환경 변수 전달
environment: - KEYCLOAK_HTTPS_USE_PEM=true - KC_HTTPS_CERTIFICATE_FILE=/etc/fullchain.pem - KC_HTTPS_CERTIFICATE_KEY_FILE=/etc/privkey.pem
[!Note] todo : 인증키를 서버에 적용 방법 정리 하기
Nginx
- 구성 파일 정의 참조 링크 :
port를 경로로 전달
자바 백엔드에서 키클록 인증
- 링크 : https://testcontainers.com/guides/securing-spring-boot-microservice-using-keycloak-and-testcontainers/#_export_keycloak_realm_configuration
- https://github.com/summu1985/camel-with-quarkus/tree/selfsigned-cert
- https://developer.auth0.com/resources/guides/api/quarkus/basic-authorization
- https://developer.auth0.com/resources/guides/web-app/quarkus/basic-authentication#create-a-quarkus-app