저번 포스팅은 RootCA와 하위 CA를 연결하는 실습을 해보았다.

오늘은 WEB서버가 스스로 인증서를 만든 상황과 RootCA에 인증서 요청을 보내서 인증서를 받은 상황을 실습하여https 통신이 가능하게 만들어 볼 것이다.

ftp통신을 이용하여 인증서를 주고 받을 것이다. ftp통신도 실습한다.




Web Server

인증서를 사용하기 위해서는 웹서버에 openssl과 mod_ssl을 다운받아야한다.

저번 포스팅과 같이 인터넷에서 다운을 받지 않고 centos 시디자체에 있는 packages로 다운받자.

cdrom에 centos 설치 cd를 넣고 저번에 만든 /media/abc 폴더에 마운트하자

mount /dev/cdrom /media/abc

마운트가 잘 됐는지 확인하려면 df -h를 해보면 된다.

rpm -qa openssl 명령어로 openssl이 깔려있는지 확인 할 수 있다. centos6.4버전 이상은 기본으로 깔려있다고 함

그다음은 modssl을 다운받아야한다.



rpm -ivh mod_ssl-2[tap][tap] 을 하여 다운받자.



그 다음은 csr을 생성하는 방법이다. 

csr은 Certificate Signing Request의 약자로 개인키 생성 및 인증요청서이다.

나중에 루트에 보내서 인증서를 받아오는 목적이다. 만들어보자.


먼저 packages 폴더에서 빠져나오자.

cd /

openssl req -nodes -newkey rsa:2048 -keyout web.key -out web.csr

win2012로 된 RootCA는 클릭 몇번으로 되었지만 리눅스는 위와 같은 명령어를 사용한다

RSA:2048은 암호화 종류이다. 

명령어를 입력하면 나라,지역,도시,회사이름, 회사유닛이름,도메인이름, 이메일주소 를 입력하라고 나온다.

입력하자.

이 명령어로 web.key와 web.csr이 생성된다.



그 다음은 개인 인증서를 생성하는 것이다. 방금만든 csr를 이용하여 내가 스스로 인증서를 만들어주는 것이다.

openssl x509 -req -days 365 -in web.csr -signkey web.key -out web.crt

1년 유효기간에 web.csr 와 web.key를 이용하여 web.crt를 만드는 명령어이다.


원래는 이 인증서와 키들을 잘 보관해야 한다. 지금은 바로 / 디렉토리에 방치된 상태이다.

따라서 원래는 옮겨줘야 하지만 다른곳에 보관한다.


cp web.csr /etc/pki/tls/certs/web.csr

cp web.key /etc/pki/tls/certs/web.key

cp web.crt /etc/pki/tls/private/web.crt


꼭 저 폴더가 아니여도 다른곳에 보관해도 된다.



SSL 통신을위해 설정을 해주어야 한다.

vi /etc/httpd/conf.d/ssl.conf에 들어간다.



vi편집기이다. esc를 눌러주고 /SSLCertificateFile 을 타이핑 하면 해당 문자가 있는곳을 찾아준다.

아까 crt와 key file의 위치를 입력해주자.


HTTPS통신을위해도 설정이 필요하다.

vi /etc/httpd/conf/httpd.conf 로 들어간다.



따로 설정이 되어있지 않는 상태라서 esc를 누르고 :9999 하면 9999번째 줄로 이동한다.

사실상 맨 마지막 줄이다. 마지막줄에 네모박스 안에있는 것을 타이핑하자.


NameVirtualHost *:443

<VirtualHost *:443>

SSLEngine on

SSLCertificateFile /etc/pki/tls/private/web.crt

SSLCertificateKeyFile /etc/pki/tls/certs/web.key

ServerAdmin [어드민서버]

DocumentRoot /var/www/html

ServerName [서버이름]

ErrorLog logs/ssl_error_log

CustomLog logs/ssl_access_log common

</VirtualHost>


esc를 누르고 :wq! 입력 후 빠져나오자.



service httpd restart로 한번 다시 시작하자. 맨아래에 OK가 아닌 FALED가 나올경 우 인증서의 저장 위치가 맞는지 다시한번 확인하자. 이제 사용자pc에서 웹서버에 한번 접속해보자.



사용자PC

처음에 (1)번 포스팅에서는 그냥 들어가졌는데 이제 보안 인증서문제가 있다는 글이 뜬다.

저번에 올린 글처럼 인증서를 조작하여서 정보를 빼는 해킹이 요즘에는 기본적으로 보안이 되어있다.

일단 우리는 그냥 진행한다.




인증서가 유효하지 않음. 이 뜨고 인증서를 보면 발급자가 나인것을 알 수 있다.

이런식으로 개인이 인증서를 혼자 서명하고 발급할 수 있다.

이번에는 RootCA에 나의 인증서를 보내서 서명을 해주는 것을 해보자.




Web Server

일단 인증서를 밖으로 빼기위해서 ftp 서버를 이용해보자.

useradd ftpman

passwd ftpman

ftp를 접속하기 위한 사용자를 한명 생성한다.

setenforce 0 을 하여 Permissive 상태를 만들고

service vsftpd start를 하여 ftp 포트를 열어주자



csr (요청인증서)를 RootCA로 보내기위해서 방금 만든 유저의 폴더로 보내주자

cp web.csr /home/ftpman


사용자pc

사용자 pc로 이동하여 c드라이브에 ftpdir이라는 폴더를 생성해주자

cd명령어를 이용하여 ftpdir에 들어간 상태에서 ftp연결을 한다.

ftp [웹서버의 ip]

사용자에는 방금만든 ftpman 을 입력하고 비밀번호를 입력하면 접속이 된다.

ls를 하면 web.csr이 있는것을 확인할 수 있다.

get web.csr로 해당파일을 가져온다.




FTPdir에 web.csr이 get 된 것을 확인할 수 있다.



그 다음에 이 csr 파일을  RootCA에 인증을 하기위해 http://[ROOTCA의 IP]/certsrv 에 웹으로 접속한다.

밑줄 클릭



CA와 RootCA을 연결할 때도 이렇게 하였다. 밑줄을 클릭하자.



똑같다.



그 다음 아까 받은 파일을 워드패드로 열어서 암호화된 내용을 넣고 제출한다.




RootCA

rootCA에서 (1)포스팅과 똑같이 발급을 해준다.



사용자pc

방금보낸 요청이 발급이 되었으므로 요청한 인증서를 확인한다.



체인으로 말고 그냥 인증서로 다운로드 받는다. 클릭



FTPdir에다가 다운로드 해주자.



다시 FTPdir에서 ftp[웹서버 ip]로 ftp에 접속한다.

!dir을 하면 현재 FTPdir에 certnew.cer가 있는것을 확인 할 수 있다.

이것을 put certnew.cer 로 웹서버로 보내준다.



WebServer

웹서버로 돌아와서 cd /home/ftpman 

ls를 하면 방금 보낸 certnew.cer이 있는것을 확인 할 수 있다.

cp certnew.cer /etc/pki/tls/private/web.crt

기존에 있던 web.crt를 바꿔주자.


사용자PC

다시 접속해보면

'이 웹 사이트에서 제시한 보안 인증서는 다른 웹 사이트 주소에 대해 발급되었습니다.' 라는 것이 뜬다.

내가만든 RootCA에서 발급해줬기 때문이다. 이 처럼 세계에서 허가된 CA에서 인증서를 받아오면

보안 인증서 문제가 없이 https로 통신이 가능하다.



발급자를 보면  ROOTCA로 된 것을 확인할 수 있다.

이로써 https와 SSL통신에 대해 포스팅을 마무리 한다.



+ Recent posts