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

삐뚜루빠뚜루빼뚜루

[보안] https 구현(SSL인증) 본문

보안

[보안] https 구현(SSL인증)

삐.빠.빼 2025. 3. 10. 08:39


▷ 웹 서버 취약점 실습 전 셋팅

-  아래 실습 이어서 진행

 

[보안] 웹 서버 취약점

▷ 웹 서버 취약점 실습 전 셋팅1) server : 192.168.10.10 (vmnet8) 2)  DNS, httpd 설치 3) DNS설정 : www.korea10.com  4) /var/www/html/index.html > korea10 test 웹페이지 출력 5) 방화벽 설정(DNS, HTTP(80)) 6) windows 확인◇

godory-it.tistory.com

- openssl 패키지 설치

dnf install openssl mod_ssl
// mod_ssl:SSL,TLS 암호화 프로토콜을 지원하는 모듈, SSL 인증서를 사용하여 암호화된 웹사이트 연결


◇ SSL인증 방법

: HTTPS를 사용하려면 SSL 인증서가 필요.

- 인증 방법 종류

    1. 자체 서명된 인증서 : 개발 환경에서 사용

    2. 공인 SSL 인증서: 상용 인증서를 발급받아서 사용

 

- SSL 인증서 구성 요소

   : cert(인증서), csr(인증서 신청서), key(암호화)

 

-  SSL 인증 생성 및 설정방법

1) 인증서 작업할 디렉토리 생성

 

2) 키 생성

openssl genrsa -out korea.key 2048 
//2048bit 길이의 RSA(genrsa) 비공개 키 생성 후 korea.key 파일에 저장

 

3) 신청서 작성

openssl req -new -key korea.key > korea.csr
// korea.key 비공개 키를 사용하여 CSR을 생성, 결과를 korea.csr 파일에 저장
// CSR : SSL 인증서를 발급받기 위해 인증 기관(CA)에 제출하는 파일

Country Name [xx] 		: KR  // 국가코드
state or province name 	: Seoul // 주 or 지역 이름.
locality Name	   	: Gangnam // 도시 이름
organization Name 	: Web // 조직 이름
organizational Unit Name	:  korea // 부서 이름 (선택 사항)
common Name(hostname)     : www.korea10.com // 도메인 이름
email address		: root@korea10.com // 이메일 주소 (선택 사항)

 

4) 최종인증서생성

openssl x509 -req -days 365 -in korea.csr -signkey korea.key -out korea.crt
// 자체 서명된 인증서(self-signed certificate)를 생성

위 명령 실행 시 수행되는 작업
1. CSR 파일 (korea.csr)을 사용하여 인증서 생성
2. 비공개 키 (korea.key)로 인증서에 서명하여 인증서를 발급
3. 인증서의 유효 기간을 365일로 설정
4. 생성된 인증서를 korea.crt 파일로 저장

 

5) 확인

- 비공개 키 확인 (korea.key): openssl rsa -in korea.key -check

- CSR 확인 (korea.csr): openssl req -text -noout -in korea.csr

- 인증서 확인 (korea.crt): openssl x509 -text -noout -in korea.crt

openssl rsa -in korea.key -check
openssl req -text -noout -in korea.csr
openssl x509 -text -noout -in korea.crt

kroea.crt 인증서 확인 시 나오는 창

 

6) /etc/httpd/conf.d/ssl.conf 파일 수정 : Apache HTTP 서버의 SSL 설정 파일 편집

#SSLCertificateFile /etc/pki/tls/certs/localhost.crt //기존 경로 주석처리
SSLCertificateFile /cert/key/korea.crt //SSL 인증서 파일 경로를 지정(/cert/key/korea.crt)


#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key //기존 경로 주석처리
SSLCertificateKeyFile /cert/key/korea.key // 비공개 키 파일 경로 지정(/cert/key/korea.key)

 

7) 데몬 전 hostname 변경

hostnamectl set-hostname www.korea10.com
// 재로그인 후 hostname 확인 및 데몬 실행(httpd)
service httpd restart

hostname root@www 로 변경 확인

8) 방화벽 설정

firewall-cmd --permanent --add-port 443/tcp
firewall-cmd --reload

 

9) 웹페이지 확인

위 URL 창 https 확인 및 연결 비공개 설정 페이지(고급) 클릭
안전하지 않음으로 이동 클릭
페이지 확인

- 와이어샤크 확인

클라이언트 요청 시 서버에서 443으로 연결함을 확인
해당 443 INFO에 따라가기(tcp) 확인 시
암호화 됨을 확인할수있음


※ 단, http도 연결이 가능함

http 연결됨


-  https 보안운용

: 위 실습 간 https와 http 둘다 접근이 가능한 것을 확인함. 이에 http(평문)접속 시 https로 리다이렉션을 설정

 

1) /etc/httpd/conf.d 파일 생성 : virtwalhost 생성

<VirtualHost 192.168.10.10:80> // 192.168.10.10:80으로 요청이 들어올경우 실행
	ServerName www.korea10.com // www.korea10.com 도메인에 대한 요청을 처리
    Redirect permanent / https://www.korea10.com/ 
    // http://www.korea10.com으로 들어오는 모든 요청을 HTTPS로 리다이렉트
</VirtualHost>

 

2) 방화벽 설정 해제

firewall-cmd --permanent --remove-port 80/tcp
firewall-cmd --reload

 

3) 확인

http://192.168.10.10 으로 접속 시
https://www.korea10.com으로 이동

- 와이어샤크 확인

: 클라이언트에서 서버로 192.168.10.10:80으로 요청한 것을 443으로 변환하여 실시한것을 확인

 

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

[보안] 웹 서버 취약점  (0) 2025.03.09
[보안] 패스워드 해시 크래킹  (0) 2025.02.12