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를 경로로 전달

자바 백엔드에서 키클록 인증