Oracle® Solaris 11.2의 네트워크 보안

인쇄 보기 종료

업데이트 날짜: 2014년 8월
 
 

자체 서명된 공개 키 인증서로 IKEv1을 구성하는 방법

이 절차에서는 인증서 쌍이라고 하는 공개/개인 키와 인증서를 만듭니다. 개인 키는 로컬 인증서 데이터베이스의 디스크에 저장되며 ikecert certlocal 명령을 사용하여 참조할 수 있습니다. 공개 키와 인증서는 공개 인증서 데이터베이스에 저장됩니다. 이는 ikecert certdb 명령을 사용하여 참조할 수 있습니다. 피어 시스템과 공개 인증서를 교환합니다. 두 인증서는 IKEv1 전송을 인증하는 데 사용됩니다.

자체 서명된 인증서는 CA의 공개 인증서보다 오버헤드가 적지만 확장이 어렵습니다. CA에서 발행한 인증서와 달리 자체 서명된 인증서는 인증서를 교환한 두 관리자가 확인해야 합니다.

시작하기 전에

Network IPsec Management 권한 프로파일에 지정된 관리자여야 합니다. 자세한 내용은 Oracle Solaris 11.2의 사용자 및 프로세스 보안 의 지정된 관리 권한 사용을 참조하십시오.

원격으로 관리하는 경우 Example 7–1Oracle Solaris 11.2의 보안 셸 액세스 관리 의 보안 셸을 사용하여 ZFS를 원격으로 관리하는 방법에서 보안 원격 로그인 지침을 참조하십시오.

  1. 각 IKEv1 시스템에서 ike.privatekeys 데이터베이스에 자체 서명된 인증서를 만듭니다.

    ikecert certlocal 명령의 인수는 ikecert(1M) 매뉴얼 페이지를 참조하십시오.

    1. 예를 들어, partym 시스템의 명령은 다음과 유사하게 표시됩니다.
      # ikecert certlocal -ks -m 2048 -t rsa-sha512 \
      -D "O=exampleco, OU=IT, C=US, CN=partym" \
      -A IP=192.168.13.213
      Creating private key.
      Certificate added to database.
      -----BEGIN X509 CERTIFICATE-----
      MIIC1TCCAb2gAwIBAgIEfdZgKjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T
      a...+
      zBGi4QkNdI3f
      -----END X509 CERTIFICATE-----

      구문 설명

      –ks

      자체 서명된 인증서를 만듭니다.

      –m keysize

      키의 크기를 지정합니다.

      –t keytype

      사용할 알고리즘의 유형을 지정합니다.

      –D dname

      인증서 주체의 X.509 DN(고유 이름)을 지정합니다. 예는 IKE에서 공개 키 인증서 사용을 참조하십시오.

      –A altname

      인증서의 대체 이름 또는 별명을 지정합니다. altnametag=value 형식입니다. 유효한 태그는 IP, DNS, emailDN입니다.


      주 -  –D–A 옵션 값은 시스템이 아니라 인증서만 식별하는 이름입니다(예: 192.168.13.213). 실제로 이러한 값은 인증서 별칭이므로 피어 시스템에 올바른 인증서가 설치되어 있는지 아웃오브밴드로 확인해야 합니다.
    2. enigma 시스템의 명령은 다음과 유사하게 표시됩니다.
      # ikecert certlocal -ks -m 2048 -t rsa-sha512 \
      -D "O=exampleco, OU=IT, C=US, CN=enigma" \
      -A IP=192.168.116.16
      Creating private key.
      Certificate added to database.
      -----BEGIN X509 CERTIFICATE-----
      MIIC1TCCAb2gAwIBAgIEBl5JnjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T
      ...
      y85m6LHJYtC6
      -----END X509 CERTIFICATE-----
  2. 인증서를 저장하여 원격 시스템으로 보냅니다.

    출력은 인증서 공개 부분의 인코딩된 버전입니다. 이 인증서는 전자 메일 메시지에 붙여 넣어도 안전합니다. 수신자는 Step 4와 같이 올바른 인증서를 설치했는지 대역 외 연결에서 확인해야 합니다.

    1. 예를 들어, partym 인증서의 공개 부분을 enigma 관리자에게 보냅니다.
      To: admin@enigma.ja.example.com
      From: admin@party.us.example.com
      Message: -----BEGIN X509 CERTIFICATE-----
      MIIC1TCCAb2gAwIBAgIEfdZgKjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T
      a...+
      zBGi4QkNdI3f
      -----END X509 CERTIFICATE------
    2. enigma 관리자로부터 enigma 인증서의 공개 부분을 받습니다.
      To: admin@party.us.example.com
      From: admin@enigma.ja.example.com
      Message: ----BEGIN X509 CERTIFICATE-----
      MIIC1TCCAb2gAwIBAgIEBl5JnjANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9T
      ...
      y85m6LHJYtC6
      -----END X509 CERTIFICATE-----
  3. 각 시스템에서 공개 키 데이터베이스에 수신한 인증서를 추가합니다.
    1. root가 읽는 파일에 관리자의 전자 메일을 저장합니다.
    2. ikecert 명령에 파일을 재지정합니다.
      # ikecert certdb -a < /tmp/certificate.eml 

      이 명령은 BEGIN 태그와 END 태그 사이의 텍스트를 가져옵니다.

  4. 다른 관리자에게 인증서를 보냈는지 확인합니다.

    예를 들어, 다른 관리자와 전화 통화를 통해 수신한 공개 인증서의 해시가 해당 관리자만 가진 개인 인증서의 해시와 일치하는지 확인할 수 있습니다.

    1. partym에 저장된 인증서를 나열합니다.

      다음 예에서 Note 1은 슬롯 0에 있는 인증서의 distinguished name(DN, 고유 이름)을 나타냅니다. 슬롯 0에 있는 개인 인증서가 동일한 해시(주 3 참조)를 가지므로 이러한 인증서는 동일한 인증서 쌍입니다. 공개 인증서가 작동하려면 일치 쌍이 있어야 합니다. certdb 하위 명령은 공개 부분을 나열하며 certlocal 하위 명령은 개인 부분을 나열합니다.

      partym # ikecert certdb -l
      
      Certificate Slot Name: 0   Key Type: rsa
      	(Private key in certlocal slot 0)
      	Subject Name: <O=exampleco, OU=IT, C=US, CN=partym>Note 1
      	Key Size: 2048
      	Public key hash: 80829EC52FC5BA910F4764076C20FDCF
      
      Certificate Slot Name: 1   Key Type: rsa
      	(Private key in certlocal slot 1)
      	Subject Name: <O=exampleco, OU=IT, C=US, CN=Ada>
      	Key Size: 2048
      	Public key hash: FEA65C5387BBF3B2C8F16C019FEBC388
      partym # ikecert certlocal -l
      Local ID Slot Name: 0   Key Type: rsa
      	Key Size: 2048
      	Public key hash: 80829EC52FC5BA910F4764076C20FDCFNote 3
      
      Local ID Slot Name: 1   Key Type: rsa-sha512
              Key Size: 2048
              Public key hash: FEA65C5387BBF3B2C8F16C019FEBC388
      
      Local ID Slot Name: 2   Key Type: rsa
      	Key Size: 2048
      	Public key hash: 2239A6A127F88EE0CB40F7C24A65B818

      이 검사에서 partym 시스템에 유효한 인증서 쌍이 있는 것이 확인되었습니다.

    2. enigma 시스템에 partym의 공개 인증서가 있는지 확인합니다.

      전화를 통해 공개 키 해시를 확인할 수 있습니다.

      이전 단계에서 확인된 partym의 Note 3 해시를 enigma의 Note 4와 비교합니다.

      enigma # ikecert certdb -l
      
      Certificate Slot Name: 0   Key Type: rsa
              (Private key in certlocal slot 0)
              Subject Name: <O=exampleco, OU=IT, C=US, CN=Ada>
              Key Size: 2048
              Public key hash: 2239A6A127F88EE0CB40F7C24A65B818
      
      Certificate Slot Name: 1   Key Type: rsa
              (Private key in certlocal slot 1)
              Subject Name: <O=exampleco, OU=IT, C=US, CN=enigma>
              Key Size: 2048
              Public key hash: FEA65C5387BBF3B2C8F16C019FEBC388
      
      Certificate Slot Name: 2   Key Type: rsa
              (Private key in certlocal slot 2)
              Subject Name: <O=exampleco, OU=IT, C=US, CN=partym>
              Key Size: 2048
              Public key hash: 80829EC52FC5BA910F4764076C20FDCFNote 4

      enigma의 공개 인증서 데이터베이스에 저장된 마지막 인증서의 공개 키 해시 및 주체 이름이 이전 단계의 partym에 대한 개인 인증서와 일치합니다.

  5. 각 시스템에서 두 인증서를 모두 신뢰합니다.

    인증서가 인식되도록 /etc/inet/ike/config 파일을 편집합니다.

    원격 시스템의 관리자가 cert_trust, remote_addrremote_id 매개변수의 값을 제공합니다.

    1. 예를 들어, partym 시스템에서 ike/config 파일은 다음과 유사하게 표시됩니다.
      # Explicitly trust the self-signed certs
      # that we verified out of band. The local certificate
      # is implicitly trusted because we have access to the private key.
      
      cert_trust "O=exampleco, OU=IT, C=US, CN=enigma"
      # We could also use the Alternate name of the certificate,
      # if it was created with one.  In this example, the Alternate Name
      # is in the format of an IP address:
      # cert_trust "192.168.116.16"
      
      ## Parameters that may also show up in rules.
      
      p1_xform 
        { auth_method preshared oakley_group 5 auth_alg sha256 encr_alg 3des }
      p2_pfs 5
      
      {
       label "US-partym to JA-enigma"
       local_id_type dn
       local_id "O=exampleco, OU=IT, C=US, CN=partym"
       remote_id "O=exampleco, OU=IT, C=US, CN=enigma"
      
       local_addr  192.168.13.213
      # We could explicitly enter the peer's IP address here, but we don't need
      # to do this with certificates, so use a wildcard address. The wildcard
      # allows the remote device to be mobile or behind a NAT box
       remote_addr 0.0.0.0/0
      
      
       p1_xform
        {auth_method rsa_sig oakley_group 2 auth_alg sha256 encr_alg aes}
      }
    2. enigma 시스템의 ike/config 파일에서 로컬 매개변수에 대한 enigma 값을 추가합니다.

      원격 매개변수의 경우 partym 값을 사용합니다. label 키워드가 로컬 시스템에서 고유한지 확인합니다.

      …
      {
       label "JA-enigma to US-partym"
       local_id_type dn
       local_id "O=exampleco, OU=IT, C=US, CN=enigma"
       remote_id "O=exampleco, OU=IT, C=US, CN=partym"
      
       local_addr  192.168.116.16
       remote_addr 0.0.0.0/0
      
       p1_xform
        {auth_method rsa_sig oakley_group 2 auth_alg sha256 encr_alg aes}
      }
  6. 피어 시스템에서 IKEv1을 사용으로 설정합니다.
    partym # svcadm enable ipsec/ike:default
    enigma # svcadm enable ipsec/ike

다음 단계

IPsec 정책 설정을 완료하지 않았으면 IPsec 정책을 사용으로 설정하거나 새로 고치는 IPsec 절차로 돌아가십시오. VPN을 보호하는 IPsec 정책의 예는 IPsec를 사용하여 VPN 보호를 참조하십시오. 다른 IPsec 정책 예는 IPsec을 사용하여 두 서버 간의 네트워크 트래픽을 보호하는 방법을 참조하십시오.