Oracle® Solaris 11.2의 암호화 및 인증서 관리

인쇄 보기 종료

업데이트 날짜: 2014년 9월
 
 

pktool genkeypair 명령을 사용하여 키 쌍을 생성하는 방법

일부 응용 프로그램은 공개/개인 키 쌍이 필요합니다. 이 절차에서 이러한 키 쌍을 만들어서 저장합니다.

  1. (옵션) 키 저장소를 사용하려면 키 저장소를 만듭니다.
  2. 키 쌍을 만듭니다.

    다음 방법 중 하나를 사용합니다.

    • 키 쌍을 만들어 파일에 저장합니다.

      디스크의 파일에서 직접 키를 읽는 응용 프로그램의 경우 파일 기반 키가 생성됩니다. 일반적으로, OpenSSL 암호화 라이브러리를 직접 사용하는 응용 프로그램은 응용 프로그램의 키 및 인증서를 파일에 저장해야 합니다.


      주 -  file 키 저장소는 타원 곡선(ec) 키 및 인증서를 지원하지 않습니다.
      % pktool genkeypair keystore=file outkey=key-filename \
      [format=der|pem] [keytype=rsa|dsa] [keylen=key-size]
      keystore=file

      file 값은 키에 대해 파일 유형의 저장소 위치를 지정합니다.

      outkey=key-filename

      키 쌍이 저장된 파일의 이름을 지정합니다.

      format=der|pem

      키 쌍의 인코딩 형식을 지정합니다. der 출력은 이진이고 pem 출력은 ASCII입니다.

      keytype=rsa|dsa

      file 키 저장소에 저장할 수 있는 키 쌍의 유형을 지정합니다. 정의는 DSARSA를 참조하십시오.

      keylen=key-size

      키의 길이를 비트 단위로 지정합니다. 숫자는 8로 나눌 수 있어야 합니다. 가능한 키 크기를 결정하려면 cryptoadm list -vm 명령을 사용합니다.

    • 키 쌍을 만들어 PKCS #11 키 저장소에 저장합니다.

      이 방법을 사용하기 전에 Step 1을 완료해야 합니다.

      PKCS #11 키 저장소는 하드웨어 장치에 객체를 저장하는 데 사용됩니다. 이 장치에는 암호화 프레임워크로 플러그인할 수 있는 Sun Crypto Accelerator 6000 카드, 신뢰된 플랫폼 모듈(TPM) 장치, 스마트 카드 등이 있습니다. 또한 PKCS #11을 사용하여 softtoken(디스크의 개인 하위 디렉토리에 객체를 저장하는 소프트웨어 기반 토큰)에 객체를 저장할 수 있습니다. 자세한 내용은 pkcs11_softtoken(5) 매뉴얼 페이지를 참조하십시오.

      지정한 레이블로 키 저장소에서 키 쌍을 검색할 수 있습니다.

      % pktool genkeypair label=key-label \
      [token=token[:manuf[:serial]]] \
      [keytype=rsa|dsa|ec]  [curve=ECC-Curve-Name]]\
      [keylen=key-size] [listcurves]
      label=key-label

      키 쌍의 레이블을 지정합니다. 키 쌍은 자체 레이블로 키 저장소에서 검색할 수 있습니다.

      token=token[:manuf[:serial]]

      토큰 이름을 지정합니다. 기본적으로 토큰 이름은 Sun Software PKCS#11 softtoken입니다.

      keytype=rsa|dsa|ec [curve=ECC-Curve-Name]

      키 쌍 유형을 지정합니다. 타원 곡선(ec) 유형의 경우 선택적으로 곡선 이름을 지정합니다. 곡선 이름은 listcurves 옵션에 출력으로 나열됩니다.

      keylen=key-size

      키의 길이를 비트 단위로 지정합니다. 숫자는 8로 나눌 수 있어야 합니다.

      listcurves

      ec 키 유형에 대한 curve= 옵션에 값으로 사용할 수 있는 타원 곡선 이름을 나열합니다.

    • 키 쌍을 만들어 NSS 키 저장소에 저장합니다.

      NSS 키 저장소는 주 암호화 인터페이스로 NSS를 이용하는 서버에서 사용됩니다.

      이 방법을 사용하기 전에 Step 1을 완료해야 합니다.

      % pktool keystore=nss genkeypair label=key-nickname \
      [token=token[:manuf[:serial]]] \
      [dir=directory-path] [prefix=database-prefix] \
      [keytype=rsa|dsa|ec] [curve=ECC-Curve-Name]] \
      [keylen=key-size] [listcurves]
      keystore=nss

      nss 값은 키에 대해 NSS 유형의 저장소 위치를 사용합니다.

      label=nickname

      키 쌍의 레이블을 지정합니다. 키 쌍은 자체 레이블로 키 저장소에서 검색할 수 있습니다.

      token=token[:manuf[:serial]]

      토큰 이름을 지정합니다. 기본적으로 토큰은 Sun Software PKCS#11 softtoken입니다.

      dir=directory

      NSS 데이터베이스에 대한 디렉토리 경로를 지정합니다. 기본적으로 directory가 현재 디렉토리입니다.

      prefix=database-prefix

      NSS 데이터베이스에 대한 접두어를 지정합니다. 기본값은 접두어 없음입니다.

      keytype=rsa|dsa|ec [curve=ECC-Curve-Name]

      키 쌍 유형을 지정합니다. 타원 곡선 유형의 경우 선택적으로 곡선 이름을 지정합니다. 곡선 이름은 listcurves 옵션에 출력으로 나열됩니다.

      keylen=key-size

      키의 길이를 비트 단위로 지정합니다. 숫자는 8로 나눌 수 있어야 합니다.

      listcurves

      ec 키 유형에 대한 curve= 옵션에 값으로 사용할 수 있는 타원 곡선 이름을 나열합니다.

  3. (옵션) 키가 존재하는지 확인합니다.

    키를 저장한 위치에 따라 다음 명령 중 하나를 사용합니다.

    • key-filename 파일에서 키를 확인합니다.
      % pktool list keystore=file objtype=key infile=key-filename
      Found n keys.
      Key #1 - keytype:location (keylen)
    • PKCS #11 키 저장소에서 키를 확인합니다.
      $ pktool list objtype=key
      Enter PIN for keystore:
      Found n keys.
      Key #1 - keytype:location (keylen)
    • NSS 키 저장소에서 키를 확인합니다.
      % pktool list keystore=nss dir=directory objtype=key
예 4-6  pktool 명령을 사용하여 키 쌍 만들기

다음 예에서 사용자가 처음으로 PKCS #11 키 저장소를 만듭니다. RSA 키 쌍에 대한 키 크기를 결정한 후에 응용 프로그램에 대한 키 쌍을 생성합니다. 마지막으로, 키 쌍이 키 저장소에 있는지 확인합니다. RSA 키 쌍의 두번째 인스턴스를 하드웨어에 저장할 수 있습니다. 사용자가 token 인수를 지정하지 않았으므로 키 쌍이 Sun Software PKCS#11 softtoken으로 저장됩니다.

# pktool setpin
Create new passphrase:
Re-enter new passphrase:Retype password
Passphrase changed.
% cryptoadm list -vm | grep PAIR
...
CKM_DSA_KEY_PAIR_GEN       512  3072 .  .  .  .  .  .  .  .  .  X  .  .  .  .
CKM_RSA_PKCS_KEY_PAIR_GEN  256  8192 .  .  .  .  .  .  .  .  .  X  .  .  .  .
...
CKM_RSA_PKCS_KEY_PAIR_GEN  256  2048 X  .  .  .  .  .  .  .  .  X  .  .  .  .
ecc: CKM_EC_KEY_PAIR_GEN,CKM_ECDH1_DERIVE,CKM_ECDSA,CKM_ECDSA_SHA1
% pktool genkeypair label=specialappkeypair keytype=rsa keylen=2048
Enter PIN for Sun Software PKCS#11 softtoken  :Type password

% pktool list
Enter PIN for Sun Software PKCS#11 softtoken  :Type password
No.      Key Type      Key Len.      Key Label
----------------------------------------------------
Asymmetric public keys:
1        RSA                         specialappkeypair
예 4-7  타원 곡선 알고리즘을 사용하는 키 쌍 만들기

다음 예에서는 사용자가 타원 곡선(ec) 키 쌍을 키 저장소에 추가하고, 곡선 이름을 지정하고, 키 쌍이 키 저장소에 존재하는지 확인합니다.

% pktool genkeypair listcurves
secp112r1, secp112r2, secp128r1, secp128r2, secp160k1
.
.
.
c2pnb304w1, c2tnb359v1, c2pnb368w1, c2tnb431r1, prime192v2
prime192v3
% pktool genkeypair label=eckeypair keytype=ec curves=c2tnb431r1
% pktool list
Enter PIN for Sun Software PKCS#11 softtoken  :Type password
No.  Key Type  Key Len.  Key Label
----------------------------------------------------
Asymmetric public keys:
1    ECDSA               eckeypair