일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬 동시성
- 그라파나
- Actor
- play 강좌
- 하이브리드앱
- 스칼라 강좌
- hyperledger fabric
- 안드로이드 웹뷰
- 스칼라 동시성
- 주키퍼
- play2 강좌
- 파이썬 머신러닝
- Akka
- Adapter 패턴
- 엔터프라이즈 블록체인
- CORDA
- 플레이프레임워크
- 블록체인
- 파이썬 데이터분석
- 스칼라
- Play2 로 웹 개발
- Golang
- 파이썬 강좌
- 하이퍼레저 패브릭
- akka 강좌
- Hyperledger fabric gossip protocol
- 파이썬
- 스위프트
- Play2
- 이더리움
- Today
- Total
HAMA 블로그
스프링 시큐리티 기초 따라가기 (3) - HTTPS 본문
이번 연재에서는 이전에 만들었던 소스에 아래와 같은 기능을 추가할것이다.
HTTPS 기능
https 는 http 에 SSL 기능을 추가한것인데 , HTTP 는 문자를 가지고 누가 엿보기가 쉽다. 따라서
통신하는데 해당 문자를 암호화해주며, 암호화 하기위한 키에 대해 안전성을 보장해주는 기술이 들어가있다.
SSL : https://wiki.kldp.org/HOWTO/html/SSL-Certificates-HOWTO/x70.html
1. security-context.xml 파일에 설정 추가
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd">
<http auto-config='true' use-expressions="true">
<intercept-url pattern="/login" access="permitAll" />
<intercept-url pattern="/resources/**" access="permitAll" />
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" requires-channel="https" />
<form-login login-page="/login"
default-target-url="/monitering"
username-parameter="username"
password-parameter="password"
authentication-failure-url="/login?error"
always-use-default-target='true'
/>
<logout invalidate-session="true"
delete-cookies="JSESSIONID,SPRING_SECURITY_REMEMBER_ME_COOKIE"
logout-success-url="/login?logout" />
<remember-me key="wmoskey" token-validity-seconds="2419200"/> <!-- 4 weeks -->
<!-- enable csrf protection -->
<csrf/>
</http>
<authentication-manager>
<authentication-provider user-service-ref="memberService"/>
</authentication-manager>
<beans:bean id="memberService" class="com.company.wmos.auth.MemberService">
</beans:bean>
</beans:beans>
설명)
requires-channel 를 추가하였다. (한줄이면됨)
설정은 위에 한줄이면 되며 , 톰캣에 HTTPS 설정을 하면되는데 아래 싸이트를 참고하자
keytool -import -alias Root -trustcscerts -file TrialRoot.pem -keystore testserver
keytool -import -alias Intermediate -trustcscerts -file TrialIntermediate.pem -keystore testserver
keytool -import -alias testserver -trustcscerts -file cert.pem -keystore testserver
HTTPS 설정을 위한 다른 방법 ( 번역글 )
http://www.javacodegeeks.com/2012/12/securing-your-tomcat-app-with-ssl-and-spring-security.html\
SSL 과 Spring Security 를 가지고 톰캣 웹어플리케이션을 보호해보자.
1.Key Store 만들기
처음으로 할것은 인증서를 포함한 사설 키스토어 를 만들것것이다. 그것을 생성할 가장 간단한 방법은
자바 keytool 유틸리티를 사용하는것이다. 자바SDK 설치했으면 /bin 디렉토리안에 있을것이다.
keytool -genkey -alias MyKeyAlias -keyalg RSA -keystore /Users/Roger/tmp/roger.keystore
위의 명령어에서
- -alias 키에 대한 유니크한 ID
- -keyalg 'RSA', 'DSA' , 'DES' 같은 키를 만들기위한 알고리즘 .
- -keystore 키스토어가 저장될 위치
Roger$ keytool -genkey -alias MyKeyAlias -keyalg RSA -keystore /Users/Roger/tmp/roger.keystore Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: localhost What is the name of your organizational unit? [Unknown]: MyDepartmentName What is the name of your organization? [Unknown]: MyCompanyName What is the name of your City or Locality? [Unknown]: Stafford What is the name of your State or Province? [Unknown]: NA What is the two-letter country code for this unit? [Unknown]: UK Is CN=localhost, OU=MyDepartmentName, O=MyCompanyName, L=Stafford, ST=UK, C=UK correct? [no]: Y Enter key password for(RETURN if same as keystore password):
2. Tomcat 설정 변경
톰캣이 SSL connector 를 가져야하는데 /conf 디렉토리에 보통 위치한 server.xml 파일에 아래를 추가한다.
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
…and making it look something like this:
<Connector SSLEnabled="true" keystoreFile="/Users/Roger/tmp/roger.keystore" keystorePass="password" port="8443" scheme="https" secure="true" sslProtocol="TLS"/>
3. security-context.xml 설정
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<http auto-config='true' >
<intercept-url pattern="/**" requires-channel="https" />
</http>
<authentication-manager>
</authentication-manager>
</beans:beans>
requires-channel="https" 를 추가하고 톰캣을 이용해서 시작하면 HTTPS 을 사용해서 접근할수있다.
http://localhost:8080/my-app 요렇게 입력하면 자동으로 https 로 바뀔것이다.
'Spring' 카테고리의 다른 글
스프링 시큐리티 기초 따라가기 (2) - Remember Me (0) | 2015.07.14 |
---|---|
스프링 시큐리티 기초 따라가기 (1) - 환경설정 및 기본 로그인 시스템 (1) | 2015.07.13 |
Angular JS and Spring Security 1 ~4 편 (번역) (0) | 2015.07.11 |
Mybatis-spring 버전별 의존성 요구사항 (0) | 2015.07.10 |
component-scan / annotation-config / annotation-driven 차이점 (2) | 2015.07.09 |