Springboot [스프링부트] Spring Sercurity Basic(4)
기존에 만들었던 Springboot 프로젝트에 SSL/HTTPS를 적용하겠습니다.
1. SSL certificate 만들기 ( cmd 창을 관리자 권한으로 실행해야 합니다.)
- java의 jdk가 있는 곳으로 이동합니다.
where java // 명령어를 입력하면 java의 디렉터리 위치가 나옵니다.
3번째 디렉터리로 이동합니다.
keytool -genkey -alias bootsecurity -storetype PKCS12 -keyalg RSA \
-keysize 2048 -keystore bootsecurity.p12 -validity 365
- 아래와 같이 값을 입력하고, 실행하시면 됩니다.
- java 디렉터리에서도 파일이 생성된 것을 확인할 수 있습니다.
- resources 밑에 위치합니다.
실제 운영할 서버라면 git에 올리지 않고, 배포할 인스턴스 내에서 외부 환경 설정을 해줘야 합니다. 하지만 개념을 익히기 위한 것이므로 파일을 올리겠습니다.
- application.yml을 수정합니다.
server:
port: 443
ssl:
enabled: true
key-store: src/main/resources/bootsecurity.p12
key-store-password: [password] #keystore을 실행할 때 입력한 password
key-store-type: PKCS12
key-alias: bootsecurity
2. Bean 등록
@Bean
public ServletWebServerFactory serverFactory(){
TomcatServletWebServerFactory tomcatServlet = 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);
}
};
tomcatServlet.addAdditionalTomcatConnectors(httpConnector());
return tomcatServlet;
}
- ServletWebServerFactory를 Bean으로 등록해서 SSL Traffic을 열어줍니다.
- addPattern을 통해서 어디에 적용할지 정합니다. "/*"이므로 모든 url에 적용합니다.
private Connector httpConnector(){
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(443);
return connector;
}
- ServletWebServerFactory가 사용할 Connector입니다.
- http and port=8080일 때 443으로 redirect를 해주는 설정입니다.
3. Https 확인하기
- localhost:8080으로 접속합니다.
https로 redirect된 것을 확인할 수 있습니다. 주의 요함이 뜨는 이유는 정식으로 만든 SSL이 아닌 저희가 임의로 만든 SSL이기 때문입니다.
지금까지 SSL/HTTPS를 적용하는 것을 알아봤습니다. 감사합니다.
모든 코드는 아래 링크에서 확인 가능합니다.
https://github.com/rlaehdals/secuitybasic
'SpringBoot > spring security' 카테고리의 다른 글
SpringBoot [스프링부트] Spring Security Oauth2 (6) Google Token 활용 (0) | 2022.05.25 |
---|---|
Springboot[스프링부트] Spring Security Basic(5) 동작 과정 (0) | 2022.05.13 |
SpringBoot [스프링부트] Spring Security Baisc (3) (0) | 2022.01.27 |
SpringBoot [스프링부트] Spring Security Basic(2) (0) | 2022.01.27 |
SpringBoot [스프링 부트] Spring Security Basic (1) 프로젝트 생성 (0) | 2022.01.25 |
댓글
이 글 공유하기
다른 글
-
SpringBoot [스프링부트] Spring Security Oauth2 (6) Google Token 활용
SpringBoot [스프링부트] Spring Security Oauth2 (6) Google Token 활용
2022.05.25 -
Springboot[스프링부트] Spring Security Basic(5) 동작 과정
Springboot[스프링부트] Spring Security Basic(5) 동작 과정
2022.05.13 -
SpringBoot [스프링부트] Spring Security Baisc (3)
SpringBoot [스프링부트] Spring Security Baisc (3)
2022.01.27 -
SpringBoot [스프링부트] Spring Security Basic(2)
SpringBoot [스프링부트] Spring Security Basic(2)
2022.01.27