1.1   OpenSSL

(1) 개요 (출처 : wiki)

OpenSSL은 네트워크를 통한 데이터 통신에 쓰이는 프로토콜인 TLS SSL의 오픈 소스 구현판이다. C 언어로 작성되어 있는 중심 라이브러리 안에는, 기본적인 암호화 기능 및 여러 유틸리티 함수들이 구현되어 있다.

거의 모든 버전의 유닉스 계열 운영 체제(솔라리스, OS X, 리눅스, BSD 포함) OpenVMS, 윈도우에서 OpenSSL을 이용할 수 있다.

 

(2) 알고리즘 (출처 : wiki)

OpenSSL은 각기 다른 다양한 암호화 알고리즘을 지원한다:

구분

내용

암호문(cipher)

AES, 블로피시, Camellia, CAST-128, DES, IDEA, RC2, RC4, RC5,

트리플 DES, GOST 28147-89

암호학의 해시 함수

MD5, MD2, SHA-1, SHA-2, MDC-2

공개 키 암호 방식

RSA, DSA, 디피-헬만 키 교환, 타원 암호, GOST R 34.10-2001

 

(3) 다운로드

https://sourceforge.net/projects/openssl/

1.2   SSL 인증서 생성

(1) openssl.exe 실행(관리자 권한으로 실행)

 

(2) openssl.exe 실행(관리자 권한으로 실행)

(3) 개인키(private) 발급

절차

내용

1

OpenSSL\bin 폴더에 인증서를 생성할 폴더를 미리 만든다.

) ssl

2

genrsa -aes3 -out [./경로/]파일명 bit

- 경로는 상대경로 또는 절대경로 입력

- bit수를 2048 SHA-1이고, 4096을 입력해야 SHA-2로 생성함

genrsa -aes256 -out ./ssl/private.pem 4096 

 

 

(3) 비밀번호 입력

절차

내용

3

비밀번호를 입력한다. 비밀번호는 두번 입력하게 된다.
ex) Password01*

Password01*

 

 

(4) “private.pem” 파일 생성 확인

절차

내용

4

opensssl/bin/ssl  폴더에 “private.pem” 생성되어 있는지 확인

 

 

 

(5) 패스워드가 없는 key 파일을 생성

절차

내용

5

genrsa –aes256 -out [./경로/]파일명 bit

- 경로는 상대경로 또는 절대경로 입력

- bit수를 2048 SHA-1이고, 4096을 입력해야 SHA-2로 생성함

genrsa -aes256 -out ./ssl/private.key 4096 

 

(6) “private.key” 파일 생성 확인

절차

내용

6

opensssl/bin/ssl  폴더에 “private.key” 생성되어 있는지 확인

 

 

 

(7) 공개키(public) 발급

절차

내용

7

개인키를 이용하여 공개키 생성(비밀번호 없는 공개키 생성)

rsa -in [./경로/]개인키 -pubot -out [./경로/]키이름

rsa -in ./ssl/private.key -pubout -out ./ssl/public.key

 

 

(8) CSR 생성

절차

내용

8

req -new -key [./경로/]Key이름 –config [./경로/]파일명.cnf -out [./경로/]파일명.csr

req -new -key ./ssl/private.key -config ./openssl.cnf -out ./ssl/private.csr

9

Country Name

KR

 ex) KR

State or Province Name

BUSAN

아무거나상관없음

Locality Name

BUSAN

아무거나상관없음

Organization Name

HWANGSANGGYU

아무거나상관없음

Organization Unit Name

HWANGSANGGYU

아무거나상관없음

Common Name

www.hwangsanggyu.co.kr

ip는 안됨. 도메인 입력후 PC의 hosts 파일에서 추가하여 사용가능

ex) hosts 파일에 아래 내용(샘플) 추가
123.233.212.11 www.hwangsanggyu.co.kr

Email Address

sghwang@hwangsanggyu.co.kr

아무거나상관없음

A challenge password

 

입력하지 않음

An optional company name

 

입력하지 않음

 

(9) “private.csr” 파일 생성 확인

절차

내용

9

opensssl/bin/ssl  폴더에 “private.csr” 생성되어 있는지 확인

 

 

(10) CRT 생성

절차

내용

10

명령어 : genrsa 암호화 알고리즘 -out [./경로/]파일이름 비트수

- private를 이용하여 만들 CRT 파일에 대한 보증을 해줄 최상위의 CRT 파일

ex) Password01*

genrsa -aes256 -out ./ssl/rootCA.key 4096

Enter pass phrase for ./ssl/rootCA.key

Password01*

 

 

(11) 최상위 CA키를 이용하여 CSR을 생성

절차

내용

11

req -x509 -new -nodes -key [./경로/]key이름 -days 유효기간 -config [./경로/]cnf파일명 -out [./경로/]pem파일명

req -x509 -new -nodes -key ./ssl/rootCA.key -days 3650 -config ./openssl.cnf -out ./ssl/rootCA.pem

12

Enter pass phrase for ./ssl/rootCA.key

ex)Password01*

Country Name

ex) KR

State or Province Name

ex) BUSAN

Locality Name

ex) ex) BUSAN

Organization Name

ex) HWANGSANGGYU

Organization Unit Name

ex) HWANGSANGGYU

Common Name

ex) www.hwangsanggyu.co.kr

Email Address

ex) sghwang@hwangsanggyu.co.kr

 

(12) 최상위 CA키를 이용하여 CRT 파일

절차

내용

13

x509 -req -in [./경로/]csr파일명 -CA [./경로/]pem파일명 -CAkey [./경로/]CAKey명칭 -CAcreateserial -out [./경로/]crt 파일명 -days 유효기간

x509 -req -in ./ssl/private.csr -CA ./ssl/rootCA.pem -CAkey ./ssl/rootCA.key -CAcreateserial -out ./ssl/private.crt -days 3650

14

Enter pass phrase for ./ssl/rootCA.key

ex) Password01*

 

(13) 인증서(private.crt) 생성 확인

절차

내용

15

opensssl/bin/ssl  폴더에 “private.crt” 생성되어 있는지 확인

Enter pass phrase for ./ssl/rootCA.key

ex) Password01*

 

 

 

(14) TOMCAT에 적용하기 위해 private.crt pkcs12라는 형식으로 변경

절차

내용

16

Tomcat에 적용할 keystore 파일 생성

pkcs12 -export -in ./ssl/private.crt -inkey ./ssl/private.key -out ./ssl/keystore -name tomcat

17

Enter Export Password

ex) Password01*

 

(15) keystore 파일 생성 확인

절차

내용

16

Tomcat에 적용할 keystore 파일 생성

 

 

 

(16) keystore 파일 을 Tomcat 서버에 복사

절차

내용

17

Tomcat에 적용할 keystore 복사

 D:\BIZ\apache-tomcat-8.5.37/ssl/keystore

 

(17) Tomcat conf 파일(server.xml) 수정

절차

내용

18

Tomcat server.xml 수정 
-  D:\BIZ\apache-tomcat-8.5.37\conf\server.xml

<Connector port="8080"
                         protocol="org.apache.coyote.http11.Http11Protocol"
                       
 maxThreads="150"
                         SSLEnabled="true"
                         schema="https"
                         
secure="true"
                       
 keystoreFile="D:/BIZ/apache-tomcat-8.5.37/ssl/keystore" 
                         keystorePass="Password01*"
                       
 clientAuth="false"
                       
 sslProtocol="TLS"
                       
 sslEnabledProtocols="TLSv1.2"
                       
 ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
                                      TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                                      TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
                                      TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
                                      TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
                                      TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,  
                                     
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
                                      TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
                                      TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
                                      TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
 
                                    TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
 
                                    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
                                      TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
                                      TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
                                      TLS_RSA_WITH_AES_256_GCM_SHA384,
                                      TLS_RSA_WITH_AES_256_CBC_SHA256,
                                      TLS_RSA_WITH_AES_256_CBC_SHA,
                                      TLS_RSA_WITH_AES_128_GCM_SHA256,
                                      TLS_RSA_WITH_AES_128_CBC_SHA256,
                                      TLS_RSA_WITH_AES_128_CBC_SHA,
                                      TLS_RSA_WITH_3DES_EDE_CBC_SHA"
                          />

 

 

 

 

 

 

Posted by 우라질레이터

urajilation@gmail.com
우라질레이터

달력

태그목록