´ÙÀ½ ÀÌÀü Â÷·Ê

5. ClientÀÇ ÀÎÁõ

ÀÎÁõÀ» ¹Þ±âÀ§Çؼ­´Â DN(Distinguished Name)À» Æ÷ÇÔÇÏ°í ÀÖ´Â ÀÎÁõ¿ä±¸¼­(CSR)¸¦ »ý¼ºÇÏ¿© CA¿¡ ¼Û½ÅÇØ¾ß ÇÑ´Ù. DNÀº °³ÀÎÀ̳ª, ±â°ü, ¼­¹öµîÀ» ±¸ºÐÇϱâÀ§ÇÑ °ÍÀ¸·Î À̸§, ºÎ¼­, Á÷Àå, ÁÖ¼Ò, ³ª¶óµîÀÇ Çʵå·Î ÀÌ·ç¾îÁ® ÀÖ°í, CN, OU, O, L, ST, CµîÀÇ Çʵå·Î Ç¥ÇöµÈ´Ù. ÀÎÁõÀ» ¹Þ±âÀ§ÇÑ ClientµéÀÇ ÀÎÁõ¿ä±¸¼­(CSR)È­ÀÏÀÌ °¢°¢ ´Ù¸¥ÇüÅ·Π»ý¼ºÀÌ µÇ°í, ClientµéÀÌ ÀÎÁõ¼­¸¦ ¼ö·ÉÇÏ´Â ¹æ¹ýÀÌ Á¦°¢±â ´Ù¸§À¸·Î Clientº°·Î °¢°¢ÀÇ »ç¿ë¹æ¹ýÀ» ¼³¸íÇÑ´Ù.

ClientµéÀÌ ÀÚ½ÅÀÇ ÀÎÁõ¼­¸¦ ¼ö·ÉÇÒ ¶§³ª, ´Ù¸¥»ç¶÷ÀÌ »çÀÎÇÑ Äڵ带 ½ÇÇàÇÒ ¶§¿¡´Â rootCAÀÇ ÀÎÁõ¼­°¡ ¹Ì¸® ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. µû¶ó¼­ ¾Õ¿¡¼­ »ý¼ºÇÑ rootCAÀÇ Certificate¸¦ ¹Ì¸® ¼ö½ÅÇؼ­ ¼³Ä¡ÇØ¾ß ÇÑ´Ù. Netscape¿Í MS Explorer´Â application/x-x509-ca-cert MIMEÀ» ÀÌ¿ëÇؼ­ ¼­¹ö¿¡¼­ ¼­ºñ½ºÇϴ°÷¿¡ Á¢¼ÓÇÏ¸é ¼³Ä¡ÇÒ¼ö ÀÖ°í, JAVAÀÇ SDKÀÎ °æ¿ì¿¡´Â ¹Ì¸® ´Ù¿î·Îµå ÇÑ´ÙÀ½ "keytool -import"¸í·ÉÀ» ÀÌ¿ëÇؼ­ ¼³Ä¡ÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ ´ÙÀ½ÀÇ Netscape³ª MS Interne Explorer¿¡¼­ ÀÎÁõ¿ä±¸¼­(Certificate Signing Request:CSR)À» »ý¼ºÇÒ ¶§¿¡´Â °³ÀÎÀÇ Á¤º¸°¡ NetworkÀ» ÀÌ¿ëÇÏ¿© Àü¼ÛµÊÀ¸·Î ¹Ýµå½Ã https ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇϵµ·Ï ÇÑ´Ù.

5.1 Netscape »ç¿ëÀÚÀÎÁõ

Netscape¿¡¼­´Â CSRÈ­ÀÏÀ» À§Çؼ­ SPKACÇüÅÂÀÇ ÀڷḦ »ý¼ºÇÑ´Ù. CSRÈ­ÀÏÀ» »ý¼ºÇϱâ À§Çؼ­´Â Web Server¿¡¼­ KEYGEN TAG¸¦ »ç¿ëÇÑ FormÀ» »ý¼ºÇÏ¿©¾ß ÇÑ´Ù. ´ÙÀ½Àº KEYGEN TAG¸¦ »ç¿ëÇÑ FORMÀÇ ¿¹ÀÌ´Ù.


<FORM name="CSR_request" method="post" action="user_cert.cgi"> 
<table border=1>
<tr><td> ¼º¸í   </td><td><input name="CN" type=input></td>
<tr><td> E-mail </td><td><input name="Email" type=input></td>
<tr><td> ºÎ¼­   </td><td><input name="OU" type=input></td>
<tr><td> ȸ»ç   </td><td><input name="O" type=input></td>
<tr><td> ½Ã     </td><td><input name="L" type=input></td>
<tr><td> µµ     </td><td><input name="ST" type=input></td>
<tr><td> ±¹°¡   </td><td><input name="C" type=input></td>
<tr><td> Å°»ý¼º </td><td><keygen name="SPKAC" type="RSA"></td>
</table>
</FORM>

KEYGEN TAGÀÇ ±âº»¹®¹ýÀº ´ÙÀ½°ú °°´Ù.

<KEYGEN NAME="name" CHALENGE="challenge string" KEYTYPE="type" PQG="pqg-params" >

NAMEÇ׸ñÀº ÇʼöÀÌ°í(cgi¿¡¼­ ó¸®ÇÏ¿©¾ß ÇÔ) KEYTYPEÀº RSA¿Í DSAÁß¿¡ Çϳª¸¦ ¼±ÅÃÇÒ¼ö ÀÖ´Ù. PQG´Â DSA¿¡¼­¸¸ »ç¿ëÇÑ´Ù. keygen tag´Â form tag¾È¿¡¼­¸¸ À¯È¿Çϸç, ƯÁ¤ÇÑ ±æÀÌÀÇ keyÅ©±â¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¹Ì±¹³»¿¡¼­´Â 512, 768, 1024ºñÆ®ÀÇ Å°¸¦ »ç¿ëÇÒ ¼ö ÀÖ°í, ±×¿Ü ±¹°¡¿¡¼­´Â 512ºñÆ®ÀÇ Å°¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. FormÀ» Àü¼ÛÇϸé 512ºñÆ®ÀÇ º¸¾Èµµ¸¦ °¡Áö´Â Key Pair°¡ »ý¼ºµÇ¸é ºñ¹ÐÅ°´Â ·ÎÄÃDB¿¡ ¾Ïȣȭ µÇ¾î¼­ ÀúÀåµÇ°í °ø°³Å°¿Í challenge½ºÆ®¸µÀº DER encodeµÇ°í ºñ¹ÐÅ°·Î signµÈ´ÙÀ½ base64·Î encodeµÇ°í ¼­¹ö·Î Àü¼ÛµÈ´Ù. ¼­¹öÃø¿¡¼­´Â DN°ú SPKAC½ºÆ®¸µÀ» cgi¸¦ ÀÌ¿ëÇÏ¿© È­ÀÏ·Î ¸¸µé°í ´ÙÀ½°ú °°Àº ¸í·ÉÀ» ÀÌ¿ëÇÏ¿© SignÇÑ´Ù. (À̶§ SPKAC½ºÆ®¸µÀº 1ÁÙ·Î µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.)

openssl ca -spkac »ý¼ºÇÑÈ­ÀÏ -out ÀÎÁõ¼­.crt

»ý¼ºµÈ ÀÎÁõ¼­´Â application/x-x509-user-certÀÇ MIMEÇüÅ·ΠNetscape Browser·Î Àü¼ÛÇÏ¿© importÇÒ¼ö ÀÖµµ·Ï ÇÑ´Ù. À̶§ NetscapeÀÇ ·ÎÄÃDB¿¡ ÀÎÁõ¼­¿¡ ÇØ´çÇÏ´Â ºñ¹ÐÅ°°¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é importÇÒ¼ö ¾ø´Ù.

5.2 MS Internet Explorer »ç¿ëÀÚÀÎÁõ

MS Internet Explorer´Â PKCS#10ÇüÅÂÀÇ ÀÎÁõ¿ä±¸¼­¸¦ ¹ßÇàÇϸç, PKCS#7ÇüÅÂÀÇ ÀÎÁõ¼­¸¦ ¼ö·ÉÇÒ¼ö ÀÖ´Ù. µû¶ó¼­ ServerÃø ÀÔÀå¿¡¼­ º¼¶§¿¡´Â ¾à°£ ±ÍÂúÀº ÀÛ¾÷À» Çϳª´õ ÇØÁà¾ß ÇÑ´Ù. ±×¸®°í Explorer¿¡¼­´Â Netscapeó·³ KEYGEN TAG¸¦ »ç¿ëÇÏÁö ¾Ê°í Microsoft¿¡¼­ Á¤ÀÇÇÑ CryptoAPI(CAPI)¸¦ ÀÌ¿ëÇÑ´Ù.(Á»´õ À¯¿¬ÇÏ´Ù°í Çϴµ¥...Á¤¸»Àϱî¿ä?..^^;) CAPI´Â ±âº»ÀûÀÎ ¾Ïȣȭ ÀÛ¾÷À» À§ÇÑ ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù.(Å° »ý¼º, ÀÚ·áÀÇ ¾Ïȣȭ, ¹®¼­ÀÇ ¼­¸í, ÀÎÁõ¼­ÀÇ ¿ä±¸µî)

CAPI´Â ´ÙÀ½ÀÇ 4´Ü°è¸¦ ÀÌ¿ëÇÏ¿© ÀÎÁõ¿ä±¸¼­¸¦ ¹ßÇàÇÏ°í ÀÎÁõ¼­¸¦ ¼ö·ÉÇÑ´Ù.

  1. CAPIÇÔ¼ö°¡ ´ç½ÅÀ» À§ÇÑ Key Pair¸¦ »ý¼ºÇÏ°í ÀÎÁõ¼­ â°í¿¡ ÀúÀåÇÑ´Ù.
  2. DN(Distinguished Name)À» »ý¼ºÇÑ´Ù.(?)
  3. CA·Î Àü¼ÛÀ» ÇϱâÀ§ÇÑ PKCS#10ÇüÅÂÀÇ ÀڷḦ »ý¼ºÇÑ´Ù.
  4. CA¿¡¼­ ÀÎÁõÇÑ ÀڷḦ ÀÎÁõ¼­ â°í¿¡ ÀúÀåÇÑ´Ù.
ExplorerÀÇ ÀÎÁõ¼­´Â "HKEY_CURRENT_USER/Software/Microsoft/Cryptography/"¿¡ ÀúÀåµÈ´Ù. CAPIÇÔ¼ö´Â OBJECT TAG¸¦ ÀÌ¿ëÇÏ¿© ·ÎÄõð½ºÅ©¿¡ ÀÖ´Â DLLÀ» ÀоîµéÀÎÈÄ¿¡ »ç¿ë ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº CAPI¸¦ À§ÇÑ xenroll.dllÀ» ÀоîµéÀÌ´Â ¿¹ÀÌ´Ù. (¿¹Àü¿¡´Â certenr3.dllÀ̶ó´Â È­ÀÏ¿¡¼­ Áö¿øÇß¾ú´Âµ¥ Áö±ÝÀº »ç¿ëµÇÁö ¾Ê°í ÀÖ°í, »ç¿ëÇßÀ»°æ¿ì¿¡ OpenSSL¿¡¼­ »çÀιæ¹ýÀÌ Æ²·ÁÁø´Ù.)


<OBJECT classid="clsid:43F8F289-7A20-11D0-8F06-00C04FC295E1"
           codebase="xenroll.dll"
           id=Enroll>
</OBJECT>

Á¤»óÀûÀ¸·Î xenroll.dllÀÌ ºÒ·ÁÁ³À¸¸é DN½ºÆ®¸µÀ» ¸¸µé°í xenrollÀÇ createPKCS10ÇÔ¼ö¸¦ ºÒ·¯¼­ PKCS#10ÇüÅÂÀÇ ÀÎÁõ ¿ä±¸¼­¸¦ ¸¸µç´Ù. DN½ºÆ®¸µÀÇ ¹®ÀÚ¿­ÀÇ ±¸¼º°ú createPKCS10ÇÔ¼öÄÝÀº ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

$szStr="CN=SeungSu KUK; C=KR; ST=KyungBook; L=Kyungsan; O=Catholic University of DAEGU; OU=Computer Center";

$result=Enroll.createPKCS10(szStr, "1.3.6.1.4.1.311.2.1.21");

»ý¼ºµÈ $result¿¡´Â PKCS#10ÇüÅÂÀÇ ¹®ÀÚ¿­ÀÌ µé¾î ÀÖ°í ÀÌ°ÍÀ» CA·Î Àü¼ÛÇÑ´Ù. CAÃø¿¡¼­´Â ÀÌ°Í¿¡ »çÀÎÇÏ°í PKCS#7ÀÇ ÇüÅ·ΠÀÎÁõ¼­¸¦ µ¹·ÁÁØ´Ù.

OpenSSL¿¡¼­´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀ» ÀÌ¿ëÇÏ¿© »çÀÎÇÏ°í ÀÎÁõ¼­¸¦ »ý¼ºÇÑ´Ù. ¸ÕÀú $result¿¡¼­ µé¾î¿À´Â ÀÚ·á¿¡´Â "BEGIN CERTIFICATE REQUEST"¶ó´Â ¹®ÀÚ¿­ÀÌ ¾ø´Â »óÅÂÀÓÀ¸·Î $result¸¦ ÀÌ¿ëÇÏ¿© ´ÙÀ½°ú °°Àº ÇüÅÂÀÇ È­ÀÏÀ» »ý¼ºÇÑ´Ù.

-----BEGIN CERTIFICATE REQUEST-----

$result¿¡¼­ ^MÀ» »èÁ¦ÇÑ ³»¿ë

-----END CERTIFICATE REQUEST-----

»ý¼ºµÈ È­ÀÏÀº ´ÙÀ½°ú °°ÀÌ »çÀÎÇÏ°í PKCS#7ÇüÅÂÀÇ È­ÀÏÀ» »ý¼ºÇÑ´Ù.

openssl ca -in »ý¼ºµÈÈ­ÀÏ -out cert°á°úÈ­ÀÏ

openssl crl2pkcs7 -certfile cert°á°úÈ­ÀÏ -in /path/to/crl.pem -out pkcs7È­ÀÏ

(crl.pemÈ­ÀÏÀº ¹Ì¸® »ý¼ºµÇ¾î ÀÖ¾î¾ß Çϴµ¥ "openssl ca -gencrl"¸í·ÉÀ» ÀÌ¿ëÇÏ¿© »ý¼ºÇÑ´Ù.) pkcs7È­ÀÏÀ» Explorer·Î Àü¼ÛÇÒ ¶§¿¡´Â "BEGIN PKCS7"¿Í "END PKCS7"À̶ó´Â ¹®ÀÚ¿­(ùÁÙ°ú ³¡ÁÙ)À» Áö¿î»óÅ·ΠÀü¼ÛÇØ¾ß ÇÑ´Ù. (¾Ê±×·¯¸é ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.) Àü¼ÛµÈ PKCS7È­ÀÏ(VBScript³ª JavaScriptÀÇ º¯¼ö·Î Àü¼Û)Àº AcceptPKCS7ÇÔ¼ö¿¡ ÀÇÇؼ­ importµÇ¸ç ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

$szStr="Àü¼ÛµÈ PKCS7È­ÀÏÀÇ ³»¿ë"

$result=Enroll.AcceptPKCS7(szStr);

5.3 JDK2 »ç¿ëÀÚÀÎÁõ

(¿©±â´Â 1³âÀüÀÇ ³»¿ëÀÔ´Ï´Ù..-.- µû¶ó¼­ °£´ÜÇÑ °³³ä¸¸ Àû¾îº¸°Ú½À´Ï´Ù. ±×¸®°í ºü¸¥½Ã°£³»¿¡ ÀüÁ¦ÀûÀÎ ³»¿ëÀ» Á¤¸®ÇÏ°Ú½À´Ï´Ù.)

JDK2¿¡¼­´Â appletÀ̳ª javascriptµîÀ» »çÀÎÇϱâ À§Çؼ­ ÀÎÁõ¼­¸¦ »ç¿ëÇÑ´Ù. ºñ¹ÐÅ°¿Í °ø°³Å°ÀÇ »ý¼ºÀº keytoolÀ» ÅëÇؼ­ ÀÌ·ç¾îÁö¸ç keytoolÀ» ÅëÇÏ¿© import/export±â´ÉÀ» ¼öÇàÇÑ´Ù. keytoolÀ» ÀÌ¿ëÇÑ °ø°³Å°/ºñ¹ÐÅ°ÀÇ »ý¼ºÀº ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

keytool -genkey -alias »ç¿ëÀÚ¸í -keypass ÇØ´çÅ°ÀǺñ¹Ð¹øÈ£

keytool¿¡¼­ "-genkey"¸¦ ÀÌ¿ëÇϸé Distinguished-NameÀ» ¿ä±¸ÇÏ°í ½ÃÇè¿ëÀ¸·Î »ç¿ëÇÏ´Â Self-Signed Certificate¸¦ »ý¼ºÇÑ´Ù. ÀÌ°ÍÀº ³ªÁß¿¡ "import"¿¡ÀÇÇØ CA¿¡¼­ ÀÎÁõÇÑ Å°·Î ´ëüµÈ´Ù. keytool¿¡¼­ »ç¿ëÇÒ¼ö ÀÖ´Â ¿É¼ÇÀº ´ÙÀ½°ú °°´Ù.

ÀÎÁõ¿ä±¸¼­¸¦ ¸¸µé±â À§Çؼ­´Â "-certreq"¸¦ »ç¿ëÇÑ´Ù. (À̶§ genkey¿¡¼­ ÀÔ·ÂÇÑ ºñ¹Ð¹øÈ£¸¦ ³Ö¾î¾ß ÇÑ´Ù.)

keytool -certreq -keystore keystoreÀ̸§ -alias »ç¿ëÀÚ¸í -file CSRÈ­Àϸí

»ý¼ºµÈ CSRÈ­ÀÏÀº CA¿¡¼­ ÀÎÁõÇÏ°í "-import"¸¦ ÀÌ¿ëÇؼ­ keystore¿¡ ÀúÀåÇÑ´Ù.

keytool -import -alias »ç¿ëÀÚ¸í -file CERTÈ­Àϸí -keystore keystore¸í

³»¿ëÀ» È®ÀÎÇÏ°í ½ÍÀ¸¸é keytool -printcert -file CERTÈ­ÀϸíÀÌ·¸°Ô ÀÔ·ÂÇÑ´Ù.

OpenSSL¿¡¼­ J2sdk¿¡¼­ ¿ä±¸ÇÑ ÀÎÁõ¼­¸¦ ó¸®ÇÒ ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌÇÏ¿© ÀÎÁõ¼­¸¦ »ý¼ºÇÏ°í E-mailµîÀ» ÀÌ¿ëÇÏ¿© µ¹·ÁÁÖ¸é µÈ´Ù.

openssl ca -in certreqÈ­ÀÏ -out °á°úcertÈ­ÀÏ


´ÙÀ½ ÀÌÀü Â÷·Ê