본문으로 바로가기

목차

    1. 인증서 변환

    • 필자는 .pem파일을 보유 중이므로 pem 파일을 openssl을 이용해 .p12(PKCS12)파일로 변환하겠습니다.
    • 필자는 윈도우 환경에서 powershell을 활용했습니다.

    [변환 전 보유 중인 파일]

     

    [PEM -> PKCS12]

    openssl pkcs12 -inkey [privatekey] -in [certificate] -export -out [출력할 파일명]

    = openssl pkcs12 -inkey key.pem -in cert.pem -export -out spring_key.p12

     

    PS C:\Users\Desktop\cert_key> ls
    
    
        디렉터리: C:\Users\Desktop\cert_key
    
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    ------      2021-11-23   오후 3:12           5613 cert.pem
    ------      2021-11-23   오후 3:12           1679 key.pem
    
    
    PS C:\Users\Desktop\cert_key> openssl
    OpenSSL> pkcs12 -inkey key.pem -in cert.pem -export -out spring_key.p12
    Enter Export Password:
    Verifying - Enter Export Password:
    OpenSSL> exit
    PS C:\Users\guswn\Desktop\cert_key> ls
    
    
        디렉터리: C:\Users\Desktop\cert_key
    
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    ------      2021-11-23   오후 3:12           5613 cert.pem
    ------      2021-11-23   오후 3:12           1679 key.pem
    -a----      2021-11-23  오후 10:19           5709 spring_key.p12

    2. 추가

    • 변환으로 나온 PKCS12 파일을 스프링 부트 프로젝트에 포함시킵니다.
    • 프로젝트 내에 포함시킬 경우 따로 경로를 지정하지 않아도 됩니다.

    3. application.properties

    • SSL(TLS) 적용을 위해 Spring Boot application.properties 파일에 추가합니다.
    • 보안을 위해 TLS 1.2 프로토콜을 사용합니다.
    • SSL 권장 알고리즘을 적용했습니다.(ciphers)
    server.port=8443
    server.ssl.enabled=true
    server.ssl.key-store-type=PKCS12
    server.ssl.key-store-password=패스워드
    server.ssl.protocol=TLS
    server.ssl.enabled-protocols=TLSv1.2
    
    # [server.ssl.key-store] 스프링 부트 프로젝트 내에 파일을 포함시키지 않았을 경우 .p12 파일 경로를 지정합니다.
    # server.ssl.key-store=/root/spring_key.p12
    server.ssl.key-store=spring_key.p12
    
    server.ssl.ciphers=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHERSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384

    4. 적용 결과

    • Spring Boot 실행 시 https로 시작이 잘 되는 것을 확인할 수 있습니다.

     

    • 서버에 배포 후 브라우저를 통해 https 가 잘 적용된 것을 확인할 수 있습니다.

     

    • http:url로 접근 시 접근이 되질 않습니다. http로도 접근을 원한다면 다중 커넥터 설정을 해야 합니다.