I.K.Picture & IT Info.

SSL 테스트를 위한 사설 CA 인증 및 SSL 인증서 발급 본문

Development/Web

SSL 테스트를 위한 사설 CA 인증 및 SSL 인증서 발급

helpful-intruder 2020. 4. 19. 15:36

실제 SSL 서비스를 위해서는 공인 CA 인증을 받아서 편리(?)하게 작업하면 되지만 

테스트를 위해서는 돈주고 받기 애매하죠...

 

그래서 내 서버 자체가 인증서 기관으로되서 사설 CA 인증 및 SSL 인증서를 발급하는 방법에 대해 

제가 수행한 방법을 정리하고자 합니다.

 

최종 테스트를 위해 apache 웹서버에 ssl 적용까지 해보았습니다. 

 

순서는 총 3단계로 나눠지는데요

1. ROOT CA 인증서 생성

2. SSL 인증서 생성 (ROOT CA 인증서 기반..)

3. Apache 웹 서버 SSL 적용

 

환경은 CentOS 7 기반으로했어요 

1, 2번은 사실 환경 상관없을꺼같구요. 3번 정도가 리눅스 환경에 영향을 받을꺼같습니다. 

 

 

1. ROOT CA 인증서 생성

  1.1 인증서 보관할 폴더 생성

$mkdir ssl
$cd ssl

 

  1.2 개인키 생성

$openssl genrsa -out rootCA.key

    ※개인키 생성시 전 패스워드를 입력하지 않기 때문에 옵션을 주지 않았습니다. 비밀번호 필요사 -aes256 옵션 추가

        몇 가지 입력해야되는 사항이 있는데 적절하게 작성하시면됩니다. 

       

  1.3 CSR(Certificate Signed Request: 인증요청서) 생성

$openssl req -new -key rootCA.key -out rootCA.csr -config /etc/pki/tls/openssl.cnf

    ※ 뒤에 -config는 따로 하지 않아도 상관은 없습니다. centos 의 경우엔 저 위치에 기본 설정이 들어가 있어서 한거예요

 

  1.4 자체 서명(self signed) 인증서 생성

$openssl x509 -days 3650 -req -set_serial 01 -in rootCA.csr -signkey rootCA.key -out rootCA.crt -extfile /etc/pki/tls/openssl.cnf -extensions v3_ca

    ※ 마찬가지 뒤에 extfile과 extensions 또한 centos의 경우엔 제가 위치를 알아서 넣었지만 다른 운영체제의 경우 삽입 안하셔도 됩니다. 

 

 

 

2. SSL 인증서 생성

  2.1 개인키 생성

$openssl genrsa -out private.key

  2.2 CSR 생성

$openssl req -new -key private.key -out ssl.csr -config /etc/pki/tls/openssl.cnf

  ※ 뒤에 -config는 따로 하지 않아도 상관은 없습니다. centos 의 경우엔 저 위치에 기본 설정이 들어가 있어서 한거예요

 

  2.3 인증서 생성

$cp /etc/pki/tls/openssl.cnf ./openssl.cnf

  ※ openssl.cnf 위치가 다른 경우 그냥 새로 만드셔서 적절히 아래 내용을 그대로 작성하시면됩니다.
      DNS는 원하는데로 추가하시면됩니다. 

[usr_cert]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
subjectAltName=@alt_names

[alt_names]

DNS.1 = *.domain.com
DNS.2= *.sys.domain.com

 

$openssl x509 -req -days 730 -in ssl.csr -CA rootCA.crt -CAcreateserial -CAkey rootCA.key -out server.crt -extfile ./openssl.cnf -extensions usr_cert

 

 

 

3. 웹 서버 적용

 

#yum install mod_ssl
#vi /etc/httpd/conf.d/ssl.conf

 

--------------아래 내용에 대해 찾은 후 저장된 위치로 변경

SSLCertificateFile ....../ssl.crt

SSLCertificateKeyFile   ....../private.key   (private.pem)

SSLCACertificateFile  ....../rootCA.crt

    ※ private.key를 그대로 사용할 경우 웹 서버 재시작마다 비밀번호를 설정했을 경우 써줘야되므로 

        openssl rsa -in private.key -out private.pem 으로  생성하여 비밀번호 없앤 후 사용 가능

    ※ httpd 재시작 시 파일에 대한 permission defined 오류가 보여질 경우 아래 명령어로 권한 변경

Permission denied: Init: Can't open server certificate file .....

$chcon unconfined_u:object_r:httpd_config_t:s0 파일명 (총 세개 파일 모두 변경)

 

이렇게 하면 SSL이 적용된 웹 사이트를 확인할 수 있습니다.

그런데, 사설 인증이기 때문에 기본적으로 확인되지 않은 인증서라고 보여지길 할꺼예요~

 

이렇게 테스트를 해보고 실제 서비스를 위해서는 공인 CA를 받아야되는데요

 

무료로 인증서를 받을 수 있는 곳들이 있기 때문에!!!!

 

해당 부분도 조만간 정리를 해볼 예정입니다. 

 

0 Comments
댓글쓰기 폼