CA 기관을 통하지 않고 직접 HTTPS 인증서를 만들어서 사용하려면 **자체 서명된 인증서(Self-Signed Certificate)**를 생성하여 HTTPS 설정에 적용할 수 있습니다. 자체 서명된 인증서는 테스트나 개발 환경에서 주로 사용되며, 운영 환경에서는 보안상의 이유로 권장되지 않습니다. 아래는 자체 서명된 인증서를 생성하고 Spring Boot에서 HTTPS로 설정하는 방법입니다.
1. 자체 서명된 인증서 생성하기
자체 서명된 인증서를 생성하기 위해 Java Keytool을 사용할 수 있습니다. 이 명령어는 keystore.p12라는 이름의 키스토어 파일을 생성하며, 인증서와 개인 키가 포함됩니다.
keytool -genkeypair -alias mycert -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 365
• alias: 인증서의 별칭으로, mycert라고 지정했습니다.
• keyalg: 키 알고리즘으로, RSA를 사용합니다.
• keysize: 키 크기를 설정합니다. 보통 2048을 사용합니다.
• storetype: 키스토어 형식으로 PKCS12를 사용합니다.
• keystore: 생성할 키스토어 파일 이름입니다. 여기서는 keystore.p12로 설정했습니다.
• validity: 인증서의 유효 기간을 일 수로 지정합니다. (예: 365일)
위 명령을 입력하면, 키스토어 파일이 생성되고 비밀번호와 인증서 정보(이름, 조직 등)를 입력하라는 프롬프트가 나타납니다. 정보를 입력하고 나면 keystore.p12 파일이 생성됩니다.
2. Spring Boot HTTPS 설정
생성된 keystore.p12 파일을 Spring Boot 프로젝트의 src/main/resources 폴더에 복사한 후, application.yml 또는 application.properties 파일에 HTTPS 설정을 추가합니다.
application.yml 예시
server:
port: 8443
ssl:
enabled: true
key-store: classpath:keystore.p12
key-store-password: [설정한 비밀번호]
key-store-type: PKCS12
key-alias: mycert
application.properties 예시
server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=[설정한 비밀번호]
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=mycert
• server.port: HTTPS를 위한 포트(보통 8443)로 설정합니다.
• server.ssl.enabled: SSL/TLS(HTTPS)를 활성화합니다.
• server.ssl.key-store: 키스토어 파일 경로를 지정합니다.
• server.ssl.key-store-password: 키스토어 파일 생성 시 입력한 비밀번호를 입력합니다.
• server.ssl.key-store-type: PKCS12 형식을 사용합니다.
• server.ssl.key-alias: keytool 명령어에서 지정한 별칭을 입력합니다.
3. HTTPS 접속 테스트
설정이 완료되면 Spring Boot 애플리케이션을 실행하고, https://localhost:8443로 접속합니다. 브라우저에 “보안 경고” 메시지가 표시될 수 있습니다. 이는 자체 서명된 인증서이기 때문에 발생하는 것으로, 운영 환경에서 사용하는 경우 CA 기관에 의해 인증된 SSL 인증서가 필요합니다.
개발 또는 테스트 환경에서는 브라우저에서 “위험을 감수하고 계속하기”를 선택하여 HTTPS 연결을 확인할 수 있습니다.
'Spring Security' 카테고리의 다른 글
UserDetailsService, PasswordEncoder, AuthenticationProvider (0) | 2024.10.29 |
---|---|
JSON Web Token (0) | 2024.10.28 |
SHA-256 (4) | 2024.10.28 |
Credential, Principal (1) | 2024.10.28 |
Spring Security (0) | 2024.10.28 |