일부 응용 프로그램은 공개/개인 키 쌍이 필요합니다. 이 절차에서 이러한 키 쌍을 만들어서 저장합니다.
다음 방법 중 하나를 사용합니다.
디스크의 파일에서 직접 키를 읽는 응용 프로그램의 경우 파일 기반 키가 생성됩니다. 일반적으로, OpenSSL 암호화 라이브러리를 직접 사용하는 응용 프로그램은 응용 프로그램의 키 및 인증서를 파일에 저장해야 합니다.
% pktool genkeypair keystore=file outkey=key-filename \ [format=der|pem] [keytype=rsa|dsa] [keylen=key-size]
file 값은 키에 대해 파일 유형의 저장소 위치를 지정합니다.
키 쌍이 저장된 파일의 이름을 지정합니다.
키 쌍의 인코딩 형식을 지정합니다. der 출력은 이진이고 pem 출력은 ASCII입니다.
키의 길이를 비트 단위로 지정합니다. 숫자는 8로 나눌 수 있어야 합니다. 가능한 키 크기를 결정하려면 cryptoadm list -vm 명령을 사용합니다.
이 방법을 사용하기 전에 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]
키 쌍의 레이블을 지정합니다. 키 쌍은 자체 레이블로 키 저장소에서 검색할 수 있습니다.
토큰 이름을 지정합니다. 기본적으로 토큰 이름은 Sun Software PKCS#11 softtoken입니다.
키 쌍 유형을 지정합니다. 타원 곡선(ec) 유형의 경우 선택적으로 곡선 이름을 지정합니다. 곡선 이름은 listcurves 옵션에 출력으로 나열됩니다.
키의 길이를 비트 단위로 지정합니다. 숫자는 8로 나눌 수 있어야 합니다.
ec 키 유형에 대한 curve= 옵션에 값으로 사용할 수 있는 타원 곡선 이름을 나열합니다.
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]
nss 값은 키에 대해 NSS 유형의 저장소 위치를 사용합니다.
키 쌍의 레이블을 지정합니다. 키 쌍은 자체 레이블로 키 저장소에서 검색할 수 있습니다.
토큰 이름을 지정합니다. 기본적으로 토큰은 Sun Software PKCS#11 softtoken입니다.
NSS 데이터베이스에 대한 디렉토리 경로를 지정합니다. 기본적으로 directory가 현재 디렉토리입니다.
NSS 데이터베이스에 대한 접두어를 지정합니다. 기본값은 접두어 없음입니다.
키 쌍 유형을 지정합니다. 타원 곡선 유형의 경우 선택적으로 곡선 이름을 지정합니다. 곡선 이름은 listcurves 옵션에 출력으로 나열됩니다.
키의 길이를 비트 단위로 지정합니다. 숫자는 8로 나눌 수 있어야 합니다.
ec 키 유형에 대한 curve= 옵션에 값으로 사용할 수 있는 타원 곡선 이름을 나열합니다.
키를 저장한 위치에 따라 다음 명령 중 하나를 사용합니다.
% pktool list keystore=file objtype=key infile=key-filename Found n keys. Key #1 - keytype:location (keylen)
$ pktool list objtype=key Enter PIN for keystore: Found n keys. Key #1 - keytype:location (keylen)
% pktool list keystore=nss dir=directory objtype=key
다음 예에서 사용자가 처음으로 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