반응형

작성일자 : 2020.01.24

환경 : CentOS 7, Apache 2.2 ,Tomcat 7, OpenSSL 1.0.2

시나리오 : 서비스 서버를 인증서버로 활용하여 Apache Web Server, Tomcat WAS 에 각각 SSL 적용

 

 

1. 인증서 만들기 (OpenSSL 활용)

 

OpenSSL 설치

> yum install openssl -y

 

OpenSSL 설치 확인

> openssl version

  

 

인증기관(CA) 개인 키 발급

> openssl genrsa -des3 -out server.key 1024

  

발급 과정 중 개인키 패스워드 지정 필요.

자가 서명이기에 내 자신이 인증기관이며, 개인 키 생성이 인증기관 개인 키 발급하는 과정이 된다

 

 

csr (Certivicate Sinning Request - 인증요청서) 생성

> openssl req -new -days 365 -key server.key -out ssl.csr

 

앞에서 지정한 패스워드 입력 필요

정보 입력 부분은 전부 Default 로 진행

 

 

인증서 (crt : Cretificate) 생성

> openssl x509 -req -days 365 -in ssl.csr -signkey server.key -out ssl.crt

  

 

 

2.1) Case1 : Apache SSL 적용

 

mod_ssl.c 모듈 확인

%APACHE_HOME%/bin/ > ./apachectl -l 

  

 

mod_ssl.c 가 없다면 apache 설치 과정에서 추가하거나, 동적으로 적용해야함

apache 설치 중 ./configure --enable-ssl 명령어를 통해 해당 모듈 사용 설정 가능

 

* ssl 모듈 추가 설정 후 설치 진행 과정에서 아래와 같은 에러 발생 시, openssl-devel 추가 설치

  

 

> yum install openssl-devel -y

 

 

Apache 설정

 

SSLCertificateFile 인증서 파일 설정

SSLCertificateKeyFile 키 파일 설정

SSLCACertificateFile 는 설정하지 않아도 동작한다. 진행하는 테스트 환경은 자가 서명이라 체이닝이 필요 없기 때문일듯(추측..)

 

%APACHE_HOME%/conf/extra/httpd-ssl.conf

SSLCertificateFile "path"
SSLCertificateKeyFile "path"
# SSLCACertificateFile "path" // 체이닝이 필요할 경우 설정

  

 

 

%APACHE_HOME%/conf/httpd.conf

Include conf/extra/httpd-ssl.conf

  

SSL 설정파일을 포함하는 설정

 

 

Apache 시작

 

시작 시 앞에서 설정했던 키 패스워드 입력

 

 

HTTPS(SSL) 적용 확인

 

http 접근 시

 

https 접근 시

신뢰할 수 없는 인증서이기에 처음엔 위 처럼 뜬다

무시하고 접근 가능

 

 

 

2.2 Case 2 : Tomcat SSL 적용

 

인증서를 tomcat 용으로 변환

> openssl pkcs12 -export -in ssl.crt inkey server.key -out .keystore -name tomcat

   

변환 과정에서 key 패스워드 입력 및 keystore 패스워드 지정 필요

 

 

tomcat 설정

 

%TOMCAT_HOME%/conf/server.xml

server.xml 에 아래 설정 기본 옵션이 주석처리되어 적혀있음

<Connector port="%PORT_NUMBER%" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystorePass="%PASSWORD%" keystoreFile="%KEYSTORE_FILE_PATH%"/>

  

 

HTTPS(SSL) 적용 확인

http 8080 접근 시

https 8443 접근 시

 

 

 

3. 인증서 정보

 

 

반응형

'보안' 카테고리의 다른 글

[보안] SSL  (0) 2021.01.24
[보안] 암호화  (0) 2021.01.17
반응형

 

작성일자 : 2021.01.24

 

 

1. SSL (Secure Socket Layer) 이란?

서버와 클라이언트 간 데이터 전송 시 응용 계층과 전송 계층 사이에 안전한 보안 채널을 형성해 주는 보안용 프로토콜

 

동작 위치를 표현하기가 조금 애매한데, OSI 계층 모델로는 해당 프로토콜을 정의할 수 없다는 의견도 있고, 세션 계층에서 동작한다는 의견도 있음.

응용 계층(HTTP)과 전송 계층(TCP) 사이에서 동작한다 라는게 정확한 표현

 

 

* TLS (Transaport Layer Security)?

Netscape 에 의해 개발된 SSL 이 IETF 표준화 기구가 관리하게 되면서 TLS 로 이름이 변경되었으나 아직까지 SSL 이라는 이름을 더 많이 사용함. TLS 1.0 은 SSL 3.0 을 계승

 

 

2. SSL 인증서

 

클라이언트 서버간의 통신을 공인된 CA 업체가 보증해주는 전자화된 문서

 

인증서에 포함된 내용 (외에도 더 있다)

  1. 소유자 이름
  2. 소유자의 공개 키
  3. 유효 기간
  4. 고유한 UID
  5. 인증서의 모든정보의 해시값
  6. 발급 기관

 

* CA (Certificate Authority)?

SSL 인증서를 제공하는 공인된 기업

ex) Symantec, Comode etc..

 

 

3. 전자 서명

 

정보의 유효함을 증명하기 위해 데이터에 전자적인 서명을 첨부하는 것

 

서버에서 비공개키를 이용해서 정보를 암호화하고, 암호화된 정보를 공개키를 활용하여 클라이언트에서 복호화한다. 이 때 공개키를 가지고 복호화할 수 있다는 건 암호화할 때 공개키의 쌍인 비공개키로 암호화되었다고 판단하며 전자 서명의 승인이 이루어짐. 비대칭키 알고리즘인 RSA 를 많이 사용.

 

SSL 인증서의 전자 서명(서비스 보증) 방법

  1.  클라이언트가 서버에 접속하면 서버는 공개키와 발급한 CA 가 포함된 인증서를 우선 제공
  2.  클라이언트는 인증서가 신뢰할수 있는지를 판단.
     - 발급 기관이 자신의 CA 리스트에 있는지, Root CA 인지, Root CA 에 체이닝된 Intermediate CA 인지 확인
  3.  인증서의 공개키를 이용하여 인증서 정보를 복호화
  4.  복호화가 완료 되면(성공하면) 인증서를 제공한 서비스가 신뢰할수 있다고 판단 

 

 

4. SSL 동작 방식

 

  1. 클라이언트와 서버 간 전자 서명에 의해서 안전한 채널을 수립(비대칭키 암호화 사용)
  2. 해당 채널을 통해 임의의 대칭키를 생성 및 교환
  3. 대칭키를 사용하여 암/복호화 및 정보 교환 실행

* 대칭키 암호화가 비대칭키 암호화보다 빠르기 때문에 첫 인증에만 비대칭키 알고리즘을 사용

 

 

 

 


* https(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure)?

SSL 위에서 동작하는 http 를 의미, 즉 http 에 보안 프로토콜이 적용되있는 것

 

 

반응형

'보안' 카테고리의 다른 글

[SSL] Apache, Tomcat SSL 적용  (0) 2021.01.24
[보안] 암호화  (0) 2021.01.17
반응형

작성일자 : 2021.01.17

 

1. 암호화란?

개발에서의 암호화란 어떠한 정보를 특정 알고리즘을 이용하여 의미 없는 데이터로 변경하는 것 (복호화는 그 반대)

 

 

2. 암호화 키

암호화, 복호화 알고리즘 연산에 사용되는 값

ex) 공개 키 ,개인 키 etc..

 

 

3. 암호화 종류

 

1) 단방향 암호화(Hashing)

암호화는 가능하나 복호화가 불가능하여 원래의 데이터로 변환이 불가능하다.

저장된 암호화된 비밀번호와, 입력 받은 사용자의 비밀번호를 암호화하여 그 값이 동일한지를 비교하여 인증을 하는 방식으로 비밀번호 암호화에 주로 사용.

 

ex) MD5 (Message-Digest), SHA (Secure Hash Algorithm)

 

 

2) 대칭키(비공개키) 암호화(Symmetric)

암호화, 복호화 시 동일한 키를 사용함

 

ex) DES (Data Encryption Standard), AES (Advanced Encrypting Standard)

 

 

3) 비대칭키(공개키) 암호화(Asymmetric)

암호화, 복호화 시 서로 다른 키를 사용함, 

공개키로 암호화하고, 개인키로 복호화. 대칭형 암호에 비해 느리다.

 

ex) RSA(Rivest, Shamir, Adleman - 제작자 이름)

 

* 개인키와 공개키의 위치를 바꿔 실행하면 '전자 서명' 이 된다.

 

 

반응형

'보안' 카테고리의 다른 글

[SSL] Apache, Tomcat SSL 적용  (0) 2021.01.24
[보안] SSL  (0) 2021.01.24

+ Recent posts