
SSL(Secure Socket Layer)은 웹 서버와 브라우저 사이에서 전송되는 데이터를 암호화하여 보안을 유지하기 위한 표준 보안 기술이다.
SSL은 1995년에 Netscape사에서 개발하였다. 하지만 취약점이 발견되어서, 현재는 거의 사용하지 않는다.
현재는 TLS(Transport Layer Security)로 대체되었지만, 여전히 SSL라고 부른다.
TLS는 1999sus IETF에 의해 표준화되었다. 강력한 암호화 알고리즘을 사용하기 때문에 현재 표준으로 사용되고 있다.
TCP 443 포트를 사용한다.
Application layer : 사용자가 직접 접하는 서비스 프로토콜로 https://, ftps://를 사용한다. s가 뒤에 붙어서 암호화된 상태로 통신하는 것을 의미한다.
SSL은 응용 계층에서 내려온 평문 데이터를 TCP 계층으로 보내기전에 암호화한 후, https://의 경우 443 포트를 사용한다.
Transport layer :

CA 10.17.0.180
DNS 10.17.0.181
WEB 10.17.0.182
Window client 10.17.0.183
hostnamectl set-hostname rootCA
hostnamectl set-hostname dns
hostnamectl set-hostname web
# 패키지 설치
dnf install -y bind bind-chroot
# dns configuration
vi /etc/named.conf



# zone file
vi /etc/named.rfc1912.zones
>> yslee.ke 도메인을 추가한다.

# dns 파일 복사본
cd /var/named/
cp -p named.localhost yslee.ke.dns

# dns 파일
vi yslee.ke.dns
$TTL 1D
@ IN SOA ns1.yslee.ke. rocky.yslee.ke. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.yslee.ke.
IN A 10.17.0.182
ns1 IN A 10.17.0.181
www IN A 10.17.0.182

#named dns 파일 체크
named-checkzone yslee.ke /var/named/yslee.ke.dns
# name 파일을 적용
systemctl restart named

dnf install -y httpd
# 실행
systemctl enable --now httpd
# 정적 파일 생성
echo "www.yslee.ke" > /var/www/html/index.html
# localhost 도메인 확인
curl localhost


sysdm.cpl


dnf install -y openssl

openssl genrsa -des3 -out rootCA.key 2048
> 비밀번호 입력하여 생성
# 확인
ll

# 인증서를 놓을 폴더 생성
mkdir cert_dir
# 생성한 인증서 이동
mv rootCA.key cert_dir/
cd cert_dir/

# Key 생성
genrsa -des3 -out rootCA.key 2048
# 설정
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 365 -out rootCA.pem

# pem > crt
openssl x509 -outform der -in rootCA.pem -out rootCA.crt
# 웹서버용 Private key
openssl genrsa -out yslee.ke.key 2048
# Private Key(WebServer용)을 기반으로 신청서(csr : certified sign request) 생성
openssl req -new -key yslee.ke.key -out yslee.ke.csr

SAN(Subject Alternative Name)
SSL/TLS 인증서에 여러 도메인 이름(IP 주소)를 포함할 수 있게 해주는 필드이다.
대부분의 최신 브라우저에서는 Common Name(CN) 필드만 설정된 인증서는 신뢰하지 않고 SAN 필드가 설정된 인증서를 신뢰한다.
yslee.ke.ext 파일을 생성한다.
vi yslee.ke.ext
# 작성한 내용
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 =yslee.ke

#인증서 생성
openssl x509 -req -in yslee.ke.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out yslee.ke.crt -days 365 -sha256 -extfile yslee.ke.ext

# 인증서 정보 확인
openssl x509 -in yslee.ke.crt -text -noout


scp yslee.ke.crt root@10.17.0.182:/root
scp yslee.ke.key root@10.17.0.182:/root


dnf install -y mod_ssl
# 설치된 파일 확인
vi /etc/httpd/conf.d

cd /etc/httpd/conf.d/
ls
# 백업본
cp ssl.conf ssl.conf.bak
# ssl 파일 수정
ssl.conf
# 작성한 내용 (원래 있던것 모두 지우고 VirtualHost 사용)
1 Listen 443
2
3 <VirtualHost *:443>
4 ServerName yslee.ke
5 DocumentRoot /var/www/html
6 SSLEngine On
7 SSLCertificateFile /etc/pki/tls/certs/yslee.ke.crt
8 SSLCertificateKeyFile /etc/pki/tls/private/yslee.ke.key
9 Serveradmin yslee
10 ErrorLog logs/ssl_yslee_ke_errorlog
11 CustomLog logs/ssl_yslee_ke_log common
12 </VirtualHost>
~
# 복사 인증서(.crt), 사설키(.key)
cp ~/yslee.ke.crt /etc/pki/tls/certs/yslee.ke.crt
cp ~/yslee.ke.key /etc/pki/tls/private/yslee.ke.key
# 재시작
systemctl restart httpd



netstat -antp


Session Key로 통신
scp root@10.17.0.180:/root/cert_dir/rootCA.crt .






# 파일 생성
vi virtualhost.conf
# 작성한 내용
<VirtualHost *:80>
ServerName yslee.ke
Redirect / https://yslee.ke
</VirtualHost>
# httpd 재시작
systemctl restart httpd
http://yslee.ke



