본문 바로가기
DEV/Spring

CAFE24 인증서(SSL) + SPRINGBOOT + docker 배포하기

by 어쩌다개발 2023. 5. 5.
반응형

1. cafe24 로그인 > 인증서 관리 > 인증서 받기에서 개인키와 인증서를 다운로드 받는다.

2. 다운로드 받은 ssl.crt와 ssl.key를 resources 아래 넣어준 뒤, 터미널에서 resources 폴더로 이동 후 아래 명령어를 실행한다.
명령어를 실행하면 패스워드를 입력하라고 나온다.
그리고 패스워드를 입력한 뒤 몇 초 뒤에 ssl.p12 파일이 생성된다.(생성되기까지 조금 걸린다.)

openssl pkcs12 -export -in ssl.crt -inkey ssl.key -out ssl.p12 -name myapp

3. application.properties 파일에 아래 내용을 입력해준다.

server.port=443
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:ssl.p12
server.ssl.key-store-password= ssl.p12 생성시 입력한 비밀번호

4. https://devmango.tistory.com/101 를 참고하여 빌드해준다.
5. https://devmango.tistory.com/180 를 참고하여 도커를 실행시켜주는데 마지막 실행 시 아래와 같이 입력해준다.

docker run -d -t -p 443:443 [docker계정]/[docker repository명]:[tag] sleep infinity




!문제발생!

https를 설정해주니 http로는 접속이 안 되는 문제가 발생했다.
devmango1128.com 만 쓰고 접속했을때 http://www.devmango1128.com 으로 나오다보니 직접 https를 붙여주지 않으면 접속이 안 됐다.
(참고: https://subbak2.com/111)
1) application.properties에 아래 내용들을 추가한다.

server.port=443
server.port.http=80
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:ssl.p12
server.ssl.key-store-password=비밀번호
server.tomcat.redirect-port=443

2) ConnectiorConfig 클래스 파일을 생성한 뒤 아래와 같이 입력해준다.

package com.pomodoro.www.config;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ConnectorConfig {

    @Bean
    public ServletWebServerFactory servletContainer() {

        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(){
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(createSslConnector());
        return tomcat;
    }

    private Connector createSslConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setSecure(false);
        connector.setPort(80);
        connector.setRedirectPort(443);
        return connector;
    }
}

3) 도커 pull, push는 위 url에서 참고 후 아래와 같이 실행시켜준다.

5) http://www.devmango1128.com 으로 접속하면 https://www.devmango1128.com 으로 리디렉션 되는걸 확인할 수 있다.


조상님LOTTO - Google Play 앱

무료로 로또 당첨 확률을 높일 수 있습니다.

play.google.com

뽀모도로 타이머(Pomodoro Timer) - Google Play 앱

뽀모도로(Pomodoro)공부법은 단시간 집중력 향상을 위한 자기주도 학습법입니다.

play.google.com

반응형

댓글