삐뚜루빠뚜루빼뚜루
[보안] https 구현(SSL인증) 본문
▷ 웹 서버 취약점 실습 전 셋팅
- 아래 실습 이어서 진행
[보안] 웹 서버 취약점
▷ 웹 서버 취약점 실습 전 셋팅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
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
8) 방화벽 설정
firewall-cmd --permanent --add-port 443/tcp
firewall-cmd --reload
9) 웹페이지 확인
- 와이어샤크 확인
※ 단, 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) 확인
- 와이어샤크 확인
: 클라이언트에서 서버로 192.168.10.10:80으로 요청한 것을 443으로 변환하여 실시한것을 확인
'보안' 카테고리의 다른 글
[보안] 웹 서버 취약점 (0) | 2025.03.09 |
---|---|
[보안] 패스워드 해시 크래킹 (0) | 2025.02.12 |