티스토리 뷰

IT/OS

openssl 설정하기

NineKY 2007. 7. 6. 16:54
 openssl 설정하기

redhat 계열에서 openssl을 rpm으로 설치한 경우 관련파일들이 /usr/share/ssl에 설치된다.
/usr/share/ssl/openssl.conf 를 먼저 설정한다.
(** 참고로 freebsd에 기본 들어있는 설정 예제 파일도 아래와 디렉토리는 비슷하다. freebsd에서는 apache 패키지와는 별도로 포트에 apache 1.3 + mod_ssl 패키지가 별도로 존재하므로 이를 이용하면 될 것이다)


[ CA_default ]

dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
new_certs_dir = $dir/newcerts # default place for new certs.

certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE = $dir/private/.rand # private random number file

위에서는 관련파일을 ssl/demoCA 로 설정하고 있다. 디렉토리를 생성해주어야한다.
이 디렉토리밑에 certs, crl, newcerts, private 디렉토리를 생성한다.
그리고 필요한 파일을 아래와 같이 생성한다.

echo '01' > serial
touch index.txt

private key 는 해당 서버에 대한 비밀키이다.
certificate 는 해당 서버에 대한 공개키이다.

위에서 설정한 내용은 자체적으로 CA 서버를 운영하기 위해서 필요하며 apache에서 사용을 하기 위해서 반드시 거쳐야 하는 내용은 아니다. apache와 mod_ssl에서는 openssl을 이용하여 서버인증을 위한 자체 키를 생성하면 된다. 그러나 자체 CA를 이용하여 사인을 하려고 한다면 필요하다.

apache 에서 ssl사용을 위해서 비밀키와 공개키를 생성해 주어야 한다.
이는 나중에 apache에서 사용을 하게 된다.

# openssl genrsa -des3 -out test.co.kr.key 1024
(여기서 -des3 옵션을 쓰고 apache에서 활용하는 경우 비밀번호를 입력해야 한다. -des3 옵션을 사용하지 않으면 보안상 더 위험해지기는 하지만 이런 불편은 없다)

이제 인증요청서(CSR)를 생성한다.
# openssl req -new -key test.co.kr.key -out test.co.kr.csr

Common Name (eg, your name or your server's hostname) []:test.co.kr

여기에 정확한 호스트명(FQDN)을 입력해야한다.

여기서 생성한 CSR을 이용하여 공인 인증기관(CA)에서 사인을 받아 실제 인증서를 사용할 수 있다.

그렇지만 CA를 이용하지 않고 자체적으로 CA 서버를 운영할 수 있다. 물론 사람들이 이에 대한 신뢰성을 떨어지겠지만.

자체적으로 CA 서버를 운영하기 위해서는 비밀키를 생성하고 여기에 자가 서멍하며 인증서를 만들면 된다. 그러고나서 앞에서 자신의 웹사이트에 사용할 목적으로 만든 CSR을 사인하면 된다.

비밀키 생성
# openssl genrsa -des3 -out ca.key 1024

자가서명된 인증서 생성
# openssl req -new -x509 -days 365 -key ca.key -out ca.crt


이제 자체적으로 만든 CA의 인증서를 이용하여 CSR에 사인을 하자.
앞에서 openssl.conf가 적절하게 설정되어 있어야 한다.
ca.crt와 ca.key을 해당 디렉토리로 옮기고 conf 파일을 수정한다.

certificate = $dir/certs/ca.crt # The CA certificate
private_key = $dir/private/ca.key # The private key


인증서에 사인을 하고 확인을 한다.

# openssl ca -policy policy_anything -out test.co.kr.crt -infiles test.co.kr.csr
# openssl verify -CAfile /usr/share/ssl/demoCA/certs/ca.crt test.co.kr.crt
test.co.kr.crt: OK

자체 CA를 이용하지 않는 경우에는 위에서 생성한 test.co.kr.csr을 공인인증기관에 보내서 그곳에서 test.co.kr.crt 파일을 받게 될 것이다.

위에서 생성한 test.co.kr.key 와 test.co.kr.crt 파일도 적절하게 옮겨준다.

이것을 apache의 httpd.conf 파일에 등록하여 주면 된다. 이 부분은 나중에 설명.

SSLCertificateFile /usr/share/ssl/demoCA/certs/test.co.kr.crt
SSLCertificateKeyFile /usr/share/ssl/demoCA/private/test.co.kr.key

csr 파일은 지워도 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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 31
글 보관함