💡 크롬에서 인증서 확인하는 방법
(1) 공유된 대칭키를 사용하여 데이터 암호화
A ---- (2) B의 대칭키를 사용하여 암호화된 정보 전송 ----> B
(3) B는 자신의 대칭키로 암호화된 정보를 복호화
$ echo 'This is th plain text' > P1.txt
$ ls P1.txt
$ cat P1.txt
# openssl enc -e -암호화 알고리즘 -salt값 사용여부 -in 암호화할 파일명 -out P2.bin
$ openssl enc -e -des- salt -in P1.txt -out P2.bin
# $ openssl enc
$ openssl enc -d -des3 -in P2.bin -out P3.txt
A <----------- (1) B의 공개키를 얻는다 ------------ B
A ----(2) B의 공개키를 사용하여 암호화된 정보 전송 ----> B
(3) B는 자신의 개인키로 암호화된 정보를 복호화
- 공개키로 암호화 / 개인키로 복호화 ⇒ 기밀성
- 개인키로 암호화 / 공개키로 복호화 ⇒ 신뢰성(송신자 인증)
- 개인키로 암호화하는 것을
전자서명
라고 한다.
# RSA로 개인키 생성, 키의 길이는 2048bit (1024는 안전 X 주로 2048)
$ openssl genrsa -out private.pem 2048
개인키를 만들면 이 키를 수신자에게 메일이나 USB로 전달하면 된다.
비대칭키 암호화 방식에서는 개인키를 가진 인가자만이 데이터를 열람할 수 있다. == 기밀성 보장
개인키-공개키는 하나의 세트이다.
private 개인키에 대한 공개키이다.
$ openssl rsa -in private.pem -out public.pem -outfrom PEM -pubout
$ openssl rsautl -encrypt -inkey pulic.pem -pubin -in P1.txt -out P4.ssl
파일이 암호화 됐는지 확인
$ cat P5.txt
$ openssl rsautl -decrypt -inkey private.pem -in P4.ssl -out P5.txt
파일이 복호화 됐는지 확인
$ ls -l
$ cat P5.txt
하나의 문자열을 이를 상징하는 더 짧은 길이의 값이나 키로 변환하는 것
💡 오픈소스 파일들은 해시값을 공개하게 되어있다. 원본과 다운로드 받은 파일이 동일한지 비교해서 파일이 변조됐는지 확인 후 설치하도록 하기 위해서
(1) A는 전달할 원본 데이터의 해시값 + 개인키 암호 ⇒ 전자서명
(2) A --------- B에게 데이터 전송 ---------> B
(3) B는 A의 공용키로 전자서명을 복호화 ⇒ 원본의 Digest와 복호화한 Digest를 비교하여 원본 확인
💡 개인 대 개인인 경우 해시 알고리즘을 사용하게 되면 송신자와 수신자가 어떤 해시 알고리즘을 사용하고, 어떻게 전송할지 협의해야한다. 기업의 경우 네이버 같이 큰 사이트는 인증서로 공개키, 해시 알고리즘(전자서명)을 포함시킨다.
💡 원본파일을 해시로 만들면 용량이 줄어든다. 왜? 일정한 패턴의 문자열로 바뀌기 때문에
⇒ 자체 발급 인증서를 사용하려면 신뢰할 수 있는 루트 인증 기관에 인증서를 Import 해야한다.
오류가 발생하는 이유는 다음과 같다.
CA전자서명(개인키)는
Web서버의 공개키는
1. 인증기관(CA)에서 웹 브라우저에게 인증서(CA공개키)를 배포한다.
2. 사용자가 웹 브라우저를 설치하면 인증서(CA공개키)도 함께 설치된다.
3. 웹 서버에서 키(개인키, 공개키)를 생성한다.
4. 웹 서버가 인증기관에게 인증요청서(공개키)를 제출한다.
5. 인증기관에서 웹 서버가 제출한 인증요청을 심사한다.
6. 인증기관이 웹 서버가 도메인 이름으로 인증서(전자서명)를 발급해준다.
7. 웹 서버가 클라이언트에게 Web 서버 공개키와 CA 전자서명을 제출한다.
8. 클라이언트가 갖고 있는 CA 인증서로 Web서버가 제공한 공개키와 CA 전자서명의 신뢰를 확인한다.
9. 암호화된 데이터를 전송한다.
⇒ 이런 일련의 프로세스 절차 자체, 복합 보안 시스템 환경을 PKI 라고 한다.
SSL에서
대칭키 : 데이터 암호화
비대칭키 : 공개키(대칭키를 암호화 시키기 위함)
⇒ 대칭키를 안전하게 사용하기 위해 비대칭키를 사용한다.
HTTPS : 웹 클라이언트와 웹 서버 가이에 웹 문서를 암호화
# httpd 설치확인
$ rpm -qa | grep httpd
# httpd 버전확인
$ httpd -v
# 오픈소스 SSL 설치 확인
$ rpm -qa | grep openssl
# httpd에 모듈있는지 확인
$ ls /etc/httpd/modules/mod_ssl.so
# 모듈 없으면 설치
$ yum -y install mod_ssl
/etc/httpd/conf/httpd.conf
⇒ http 환경 설정 파일
/var/www/html/index.html
⇒ 홈페이지 파일
$ cd /etc/httpd/conf
$ ls httpd.conf
$ nano httpd.conf
$ cd /var/www/html
$ nano index.html
<html>
<head>
<title>Hello World</title>
<head>
<body>
<h1>Hello World!</h1>
</body>
</html>
# 80번 포트 개방 후 활성화
$ iptables –I INPUT –m state --state NEW,ESTABLISHED –p tcp --dport 80 -j ACCEPT
# iptables 설정 저장
$ service iptables save
# iptables 서비스 시작
$ service iptables start
# httpd 서비스 시작
$ service httpd start
192.168.10.30
또는 www.open.net
으로 접속
$ cd C:\\Windows\System32\drivers\etc
$ notepad hosts
$ cd /etc/pki/tls/certs
$ openssl genrsa -out www.open.net.key 2048
$ openssl req -new -key www.open.net.key -out www.open.net.csr
여기서 잘못되면 처음부터 다시 해야한다.
$ openssl x509 -in www.open.net.csr -out www.open.net.crt -req -signkey www.open.net.key -days 365
인증서 확인
/etc/pki/tls/certs/www.open.net.crt
/etc/pki/tls/certs/www.open.net.csr
/etc/pki/tls/certs/www.open.net.key
ssl.conf 파일 존재하는지 확인
$ nano ssl.conf
Server Certificate에 /etc/pki/tls/certs/www.open.net.crt
Server Private Key에 /etc/pki/tls/certs/www.open.net.key
$ iptables -I INPUT -m state --state NEW,ESTABLISHED -p tcp --dport 443 -j ACCEPT
$ service iptables restart
$ service httpd restart
자체 발급 인증서기 때문에 유효성 검사를 할 수 없어서 인증서 오류 화면이 나타났다.
엣지 브라우저에서 자체적으로 발급받은 인증서를 확인할 수 있다.
인증서 내보내기
인증서 설치
설치된 인증서 확인
인터넷 익스플로러로 확인하면 인증서 오류 없이 페이지가 뜨는 것을 확인할 수 있다.