반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
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
Tags
more
Archives
Today
Total
관리 메뉴

hann-blume

Linux - SSL/암호화 본문

Linux

Linux - SSL/암호화

hann-blume 2020. 3. 22. 23:50

 

 

 

( 이 작업은 초기설정으로 스냅샷을 돌리고 시작한다.

 

돌린후 사전 작업

 

# yum -y install httpd-*
# yum -y install bind-*
# firewall-cmd --permanent --add-service=http
# firewall-cmd --permanent --add-service=dns
# firewall-cmd --permanent --add-port=443/tcp
# firewall-cmd --reload )

 

 

 

암호화란?
사람이 인식할 수 있는 문자를 읽기 힘든 기호나 다른 뜻을 가진 

문자 형태로 변환하여 내용을 보호하는 것.

 


복호화란?
암호화된 내용을 다시 사람이 인식할 수 있는 문자로 돌려 놓는 것.

 

 

 


대칭키(비밀키) 알고리즘
암호화하는 키와 복호화하는 키가 동일한 것으로, 사전에 비밀키를 서로 공유하여 사용하는 방식.
장점 - 쌍방이 같은 비밀키를 사용하므로 리소스 소모량이 적다.
단점 - 키 교환 도중 노출의 위험이 있으므로 키 교환에 어려움이 많다. 
      다수와 통신을 하게 된다면 모두 같은 키를 사용하면 안되기 때문에 키가 많아져 관리가 어렵다.

 


비 대칭키(공개키) 알고리즘
수학적 알고리즘을 통해 암호화를 위한 키와 복호화를 위한 키를 따로가지는 암호 알고리즘이다.
장점 - 대칭키 알고리즘의 단점을 보완하고, 더 안전한 암호화가 가능하다.
단점 - 쌍방이 서로 다른 개인키를 사용하므로 리소스 소모량이 많아지고, 리소스가 쌓이면서 통신의 속도가 저하될 수 있다.

 

 


 [ RSA ] - 비 대칭키 통신에 이용
  - 매우 큰 수를 소인수분해 계산법을 사용해서 한 쌍의 키 값을 생성.
  - 공개키(public key)와 개인키(private key)로 구성

 

 

 

키 교환 알고리즘
안전하게 비밀키를 공유하기 위한 방법
Key Wrapping 와 Diffie-Hellman 알고리즘이 있다.

 


[ Key Wrapping ]

대칭키(비밀키)를 안전하게 전송하기 위해 비 대칭 암호화 알고리즘을 사용하는 방식.
데이터 암호화에 사용할 대칭키를 임의적으로 생성하여, 

서버의 공개키로 대칭키를 암호화한다.
즉 공개키,개인키,대칭키를 사용하게 된다.

이 개념을 확실히 이해해야한다.

공개키를 서로 알고있는 상태에서 
공개키로 대칭키를 암호화하여 전송하고,
전송 받은 암호화된(공개키로 암호화된) 데이터(대칭키)를 개인키로 복호화하여 대칭키를 흭득.

여기서 해커가 공개키를 알고있다면 공개키로 암호화된 대칭키를 뺏은 후 

공개키로 복호화하여 
대칭키를 흭득 할 수 있다고 착각할 수 있는데 
복호화는 공개키로 불가능하고, 개인키로만 가능하다.
즉, 개인키를 알지 못하면 공개키로 암호화된 대칭키를 뺏어도 

공개키로 복호화가 불가능하다.

 


[ Diffie-Hellman ]


대칭키를 안전하게 송/수신자들에게 분배하는 알고리즘
실제 Key값은 전송하지 않고 Key를 생성하는데 필요한 값믄 전송한다.
인증 및 전자서명과 같은 기능은 제공할 수 없고, 비밀키 교환용도로만 사용할 수 있다.

 

 

 

[ 해시(Hash) 알고리즘 ]


같은 데이터를 같은 해시알고리즘으로 돌리면 항상 같은 결과가 나온다.

 

 

보안 프로토콜

[ SSL ]
Secure Socket Layer
넷스케이프사에서 전자상거래 등의 보안을 위해 개발된 프로토콜.

[ TLS ]
Transport Layer Security
SSL 3.0버전을 기초로 IETF에서 표준화하였다.


SSL와TLS의 기능
사이트 인증 (Site Authentication)
데이터 보호 (Data Privacy)
무결성 체크 (Data Intergirty)

 

 

 

 

 

[ SSL 구축 절차 ]

 

1. 인증서 제품 선택 
2. WEB Server 구축 ( Apache ) 
3. WEB Server 개인키, CSR 요청서 생성 (회사정보,서버정보) 
4. CSR 요청서를 SSL 제공업체로 전달 + 결제 
5. Site 인증서 발급 - WEB Server 업로드 작업 진행 
6. WEB Server SSL 설정 진행 
7. SSL Site 구축 완료 및 테스트

 

SSL 구축을 실습해보기 위해

먼저 DNS서버와 Apache 설정을 해주자.

 

 

DNS 구축은 아래 조건으로 한다.

www.hann.com / 192.168.131.100

 

따로 사진설명없이 진행하겠다.

 

 

# vi /etc/resolv.conf
nameserver 192.168.131.100 -> 추가

# vi /etc/named.conf
13         llisten-on port 53 { 127.0.0.1; }; -> { any; };
21         aallow-query     { localhost; }; -> { any; };
33         recursion yes; -> no;


# vi /etc/named.rfc1912.zones 
13~17번째줄 
37~41번째줄
복사해서 맨 아래 줄에 붙여넣고 수정.

zone "hann.com" IN {
        type master;
        file "hann.zone";
        allow-update { 192.168.131.100; };
        allow-transfer { 192.168.131.100;};
};   
   
  
zone "131.168.192.in-addr.arpa" IN {
        type master;
        file "hann.rev";
        allow-update { 192.168.131.100; };
        allow-transfer { 192.168.131.100; };
};


영역파일 만들기
# cd /var/named/

# cp named.localhost hann.zone 
# cp named.localhost hann.rev 

영역파일은 기본적으로 named가 소유하므로 소유권을 변경해준다
# chown .named hann.*

---------------
영역파일 생성/레코드 정의
# vi hann.zone

$TTL 1D
@       IN SOA  ns1.hann.com.       root(
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1.hann.com.
ns1     IN      A       192.168.131.100
www     IN      A       192.168.131.100

--------------
역방향 파일 생성
# vi hann.rev

$TTL 1D
@       IN SOA  ns1.hann.com.               root(
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns1.hann.com.
100     IN      PTR     ns1.hann.com.
100     IN      PTR     www.hann.com.

-------------
# systemctl restart named
# systemctl enable named
# firewall-cmd --reload


결과
nslookup 해서
www.hann.com

192.168.131.100
잘나와야한다.

여기 까지 DNS 끝
----------------------------------------------------------------

Apache 설정



# vi /etc/httpd/conf/httpd.conf

66번째 줄
User nobody
Group nobody
-------------
95번째 줄
주석 풀고
ServerName www.hann.com:80
-------------
119번째 줄부터.
DocumentRott 경로 수정해주고 아래쪽에 다지우고 이것만 남김.

DocumentRoot "/apache/test"

<Directory "/apache/test">
    AllowOverride None
    Require all granted

</Directory>

-------------
맨 아래줄에 다음 내용 추가

<VirtualHost *:80>
ServerName www.hann.com
Redirect "/" "https://www.hann.com/"

</VirtualHost>

 

 

# mkdir /apache

# mkdir /apache/test

 

 

# systemctl restart httpd


Apache 설정 끝

 

 

------------------------------------

 

자 여기까지 서버 구축이 끝났다.

 

본격적으로 SSL 실습을 해보자

 

모듈 설치

# yum -y install mod_ssl
# rpm -qa | grep mod_ssl
# rpm -qa | grep openssl

 

 

<개인키 만들기>

# openssl genrsa -out /etc/pki/tls/private/hann.key 2046
rsa를 이용한 개인키를 만들고 
out옵션으로 저장할 위치는 /etc/pki/tls/private/
키의 이름은 hann.key
키의 길이는 2048bit

 

 

<인증요청서 만들기>

# openssl req -new -key /etc/pki/tls/private/hann.key -out /etc/pki/tls/private/hann.csr
새로운 인증요청서 만들기 req -new
인층요청서에 필요한 키의 위치 지정 -key /etc/pki/tls/private/hann.key
-out옵션으로 인증요청서 저장할 위치 -out /etc/pki/tls/private/hann.csr 

Country Name (2 letter code) [XX]:KR
국가코드 KR

State or Province Name (full name) []:Seoul
도시 Seoul

Locality Name (eg, city) [Default City]:Gangnam
구 Gangnam

Organization Name (eg, company) [Default Company Ltd]:HANN
회사이름 HANN

Organizational Unit Name (eg, section) []:Cloud Team
부서이름 Cloud Team

Common Name (eg, your name or your server's hostname) []:www.hann.com 
도메인 네임 www.hann.com 
여기에서는 http://를 입력하지 않는다.

Email Address []:hann@hanns.com
관리자 이메일주소 hann@hanns.com 

A challenge password []:
패스워드 입력은 하면안된다.
An optional company name []:
입력 안한다.

 


개인키를 잃어버리면 처음부터 다시해야하므로 백업작업
# mkdir /backup
# cp /etc/pki/tls/private/hann.* /backup
# ls -l /backup
합계 8
-rw-r--r-- 1 root root 1050  3월 22 22:47 hann.csr 

-rw-r--r-- 1 root root 1671  3월 22 22:47 hann.key



<인증서 만들기> 
# openssl x509 -req -days 365 -in /etc/pki/tls/private/hann.csr -signkey /etc/pki/tls/private/hann.key -out /etc/pki/tls/certs/hann.crt

사이트 인증서를 만들때 사용하는 값   x509
유효기간   -days 365
내가 가진 인증요청서로 만든다   -in /etc/pki/tls/private/hann.csr 
내가 가진 키로 인증한다  -signkey /etc/pki/tls/private/hann.key
만들어진 인증서 저장위치   -out /etc/pki/tls/certs/hann.crt



백업
# cp /etc/pki/tls/certs/hann.crt /backup  
# ls -l /etc/pki/tls/private
합계 12
-rw-r--r-- 1 root root 1050  3월 22 22:46 hann.csr

-rw-r--r-- 1 root root 1671  3월 22 22:45 hann.key

-rw------- 1 root root 1679  3월 22 22:40 localhost.key

 


# ls -l /etc/pki/tls/certs



★중요!!★
# vi /etc/httpd/conf.d/ssl.conf

56

<VirtualHost *:443>

443번을 모두 열어주겠다

으로 바꿔준다

59 DocumentRoot "/apache/test"
도큐먼트 경로
60 ServerName www.hann.com:443

100 SSLCertificateFile /etc/pki/tls/certs/hann.crt
인증서 위치명시

107 SSLCertificateKeyFile /etc/pki/tls/private/hann.key
개인키 위치명시



# mkdir -p /apache/test
# cat > /apache/test/index.html
Apache SSL WEB TEST!

 


# apachectl configtest
# systemctl start httpd
# systemctl enable httpd
# firewall-cmd --list-all

 


클라이언트(윈도우)

cmd - ping www.hann.com
했을때 통신 잘되야한다.



인터넷 주소창에
www.hann.com


"이 웹 사이트의 보안 인증서에 문제가 있습니다"
-> 정상적으로 인증서를 요청하여 만든 것이 아니기 때문에(우리 자체적으로 만들어서) 이렇게 나타난다.

이 웹 사이트를 계속 탐색합니다(권장하지 않음) 클릭

그리고 주소창에 https 로 되어있는거 확인.

 

 



///클라이언트 dns캐시삭제//
cmd - ipconfig /flushdns

 

 

 

 

 

 

 

 

여기까지 SSL/암호화 에 대한 설명이 끝났다.

반응형

'Linux' 카테고리의 다른 글

Linux - Apache / Web Server  (0) 2020.03.22
Linux - DNS (Domain Name Server)  (0) 2020.03.22
Linux - ShellScript  (0) 2020.03.22
Linux - Cron / CronTab  (0) 2020.03.22
Linux - Backup  (0) 2020.03.22