2.6. GnuTLS를 사용하여 개인 CA 생성
개인 인증 기관(CA)은 시나리오가 내부 네트워크 내의 엔티티를 확인해야 하는 경우에 유용합니다. 예를 들어, 컨트롤에서 서명된 인증서 또는 상용 CA를 구입하지 않으려면 개인 CA를 사용하여 인증으로 VPN 게이트웨이를 만들 때 사용합니다. 이러한 사용 사례의 인증서에 서명하기 위해 개인 CA는 자체 서명된 인증서를 사용합니다.
사전 요구 사항
-
sudo
를 사용하여 관리자 명령을 입력할 수 있는루트
권한 또는 권한이 있어야 합니다. 이러한 권한이 필요한 명령은#
으로 표시됩니다. 이미 시스템에 GnuTLS를 설치했습니다. 그렇지 않은 경우 다음 명령을 사용할 수 있습니다.
$ yum install gnutls-utils
절차
CA의 개인 키를 생성합니다. 예를 들어 다음 명령은 256비트 ECDSA(Elliptic Curve Digital Signature Algorithm) 키를 생성합니다.
$ certtool --generate-privkey --sec-param High --key-type=ecdsa --outfile <ca.key>
키 생성 프로세스의 시간은 호스트의 하드웨어 및 엔트로피, 선택한 알고리즘 및 키 길이에 따라 달라집니다.
인증서에 대한 템플릿 파일을 생성합니다.
선택한 텍스트 편집기로 파일을 생성합니다. 예를 들면 다음과 같습니다.
$ vi <ca.cfg>
필요한 인증 세부 정보를 포함하도록 파일을 편집합니다.
organization = "Example Inc." state = "Example" country = EX cn = "Example CA" serial = 007 expiration_days = 365 ca cert_signing_key crl_signing_key
1단계에서 생성된 개인 키를 사용하여 서명된 인증서를 생성합니다.
생성된 < ca.crt > 파일은 1년 동안 다른 인증서에 서명하는 데 사용할 수 있는 자체 서명된 CA 인증서입니다. < ca.crt > 파일은 공개 키(인증서)입니다. 로드된 파일 < ca.key& gt;는 개인 키입니다. 이 파일을 안전한 위치에 보관해야 합니다.
$ certtool --generate-self-signed --load-privkey <ca.key> --template <ca.cfg> --outfile <ca.crt>
CA의 개인 키에 대해 보안 권한을 설정합니다. 예를 들면 다음과 같습니다.
# chown <root>:<root> <ca.key> # chmod 600 <ca.key>
다음 단계
자체 서명된 CA 인증서를 클라이언트 시스템의 신뢰 앵커로 사용하려면 CA 인증서를 클라이언트에 복사하여 클라이언트의 시스템 전체 신뢰 저장소에
root
로 추가합니다.# trust anchor <ca.crt>
자세한 내용은 3장. 공유 시스템 인증서 사용를 참조하십시오.
검증
자체 서명된 CA에 대한 기본 정보를 표시합니다.
$ certtool --certificate-info --infile <ca.crt> Certificate: … X509v3 extensions: … X509v3 Basic Constraints: critical CA:TRUE X509v3 Key Usage: critical Certificate Sign, CRL Sign
CSR(인증서 서명 요청)을 생성하고 CA를 사용하여 요청에 서명합니다. CA는 CSR을 기반으로 인증서를 성공적으로 생성해야 합니다. 예를 들면 다음과 같습니다.
CA의 개인 키를 생성합니다.
$ certtool --generate-privkey --outfile <example-server.key>
선택한 텍스트 편집기에서 새 구성 파일을 엽니다. 예를 들면 다음과 같습니다.
$ vi <example-server.cfg>
필요한 인증 세부 정보를 포함하도록 파일을 편집합니다.
signing_key encryption_key key_agreement tls_www_server country = "US" organization = "Example Organization" cn = "server.example.com" dns_name = "example.com" dns_name = "server.example.com" ip_address = "192.168.0.1" ip_address = "::1" ip_address = "127.0.0.1"
이전에 생성된 개인 키를 사용하여 요청을 생성합니다.
$ certtool --generate-request --load-privkey <example-server.key> --template <example-server.cfg> --outfile <example-server.crq>
인증서를 생성하고 CA의 개인 키로 서명합니다.
$ certtool --generate-certificate --load-request <example-server.crq> --load-ca-certificate <ca.crt> --load-ca-privkey <ca.key> --outfile <example-server.crt>
추가 리소스
-
시스템의
certtool(1)
및trust(1)
도움말 페이지
-
시스템의