ç§ãã·ã¹ãã 管çè
ãšããŠåããŠãããšããç§ã¯ã¢ã¹ã¯ã¯ã®æ°åã®æ¯åºãã€ã³ãã©ããããããã³ã¡ãŒã«ã«VPNãå®è£
ããå¿
èŠããããŸããã åæã«ãã·ã¹ãã å
šäœãèãåºãããã®å±éã1人ã§æŽçããå¿
èŠããããŸããã äºç®ã¯1äž5åãã«ã§ã4幎åã§ããããã°ããã®éãç§ã¯æ£çŽã«æé ãªäŸ¡æ Œã®ãœãããŠã§ã¢ãèŠã€ããããšããŸããããæ¥æµã§äœããèŠã€ããããšããŸãã-ããã¯ç©ºã§ãã çµæã¯OpenSSLãšOpenVPNã§ãã ãã®å
¥éããã¹ãã§ã¯ãOpenSSLã«ã€ããŠã話ããããšæããŸãã
æçµçã«å±éãããŸããïŒ
- 蚌ææžçºè¡ã»ã³ã¿ãŒïŒCA-èªèšŒå±ãå¥åCA-èªèšŒå±ããã·ã¢èªã§ã¯èšŒææžã®çºè¡ãèš±å¯ãããçµç¹ïŒã
- ã¯ã©ã€ã¢ã³ã蚌ææžã«ããã¢ã¯ã»ã¹èš±å¯ãããã€ã³ãã©ããããµã€ãã
- ãµãŒããŒãã¯ã©ã€ã¢ã³ããããã³åçã«ãŒãã£ã³ã°ã®çžäºèªèšŒãåããVPN
- åã蚌ææžã䜿çšããäŒæ¥IMãµãŒããŒäžã®ã¯ã©ã€ã¢ã³ãã®æ¿èªã
ã©ããããã·ã¹ãã ã¯ä»ãŸã§ã«æ»ã«ãŸãã...解éåŸãã«ãŒã蚌ææžã®æå¹æéïŒã€ãŸããçºå£²æ¥ãã2幎ïŒãŸã§ã®æéã¯ããããŸããã
以äžã¯ãäžè¬ãŠãŒã¶ãŒãããäŒæ¥ã®æè¡è
ã«ãšã£ãŠèå³æ·±ããã®ã§ãã æ¡ä»¶ïŒçµç¹ã¯åœå¶ã§ã¯ãªãããéãç¯çŽãããšããç®æšããããŸããç 究éçºã§6ã€ã®ãŒããšéé¡ã亀æããã«ãã¢ãããè©ŠããŠã¿ãããšããèŠæããããŸãã
èªè
ã¯ãVPNïŒãã®å Žåã¯ä»®æ³ãã©ã€ããŒããããã¯ãŒã¯ïŒãšSSLïŒSecure Sockets LayerïŒã®æŠå¿µãšã
x.509圢åŒã®é»å蚌ææžã§ãããšããäºå®ã«
粟éããŠããããšã
åæãšããŠããŸãã
CA
çµæã®ã·ã¹ãã ã§ã¯ã蚌ææžãæŽæ°ã倱å¹ãèªèšŒãã³ãŒãããã¡ã€ã«ãã¡ãŒã«ã®æå·åã«äœ¿çšãã䟵害ãããå Žåã¯ãCAå
šäœã殺ãããšãªããã©ã³ãã倱å¹ãããããšãã§ããŸãã ãããè¡ãã«ã¯ãOpenSSLæ§æãã¡ã€ã«ãæ
éã«æ€èšãã蚌ææžå€±å¹ãªã¹ãïŒCRLïŒãšCAã®æ£ããéå±€ãçæããæé ãäœæããå¿
èŠããããŸããã ãã®å Žåã«ã®ã¿ãéžæããå®è£
ã§èšŒææžã®äœ¿çšãèš±å¯ãããŸããã ãããŠãã
ã¯ããç§ã¯ãŸã ãã®èšŒææžãä¿¡é ŒããŠããŸãããæéåãã§èª€ã£ãŠçºè¡ãããŠãããããããŸã£ããæå³ããŠããŸãã ããšãããã¿ã³ãã¯ãªãã¯ããèªåããã»ã¹ã§
ã¯ãããŸãã ã
é»åããžã¿ã«çœ²å蚌ææžã®åé¡ãšäœ¿çšã¯ãæè¡çãªã ãã§ãªãçµç¹çãªããã»ã¹ã§ããã
ããšãèŠããŠããããšãéèŠã§ããããããªããšããã®çš®ã®ä¿è·ã䜿çšããã¡ãªããã¯ãªããªããŸãã ããšãã°ããã¹ãŠã®èšŒææžã®ãªãªãŒã¹åŸãCAãåãããã£ã¹ã¯ã¯ã
USBã§ããå Žåã¯åãå€ããŸãã¯åæããå®å
šãªå Žæã«çœ®ãããšããå§ãããŸãã ãããŠéèªãå§ããŠãã ããã
ãµã€ã
ã€ã³ãã©ããããµã€ãïŒ
æåã®éå±€-Apacheããã®èåŸã«ãããã®-éèŠã§ã¯ãããŸãã ïŒã§ã¯ãå€èŠçŽ èªèšŒãå®è£
ãããŸããã éåžžãèªèšŒã«ãããæåã®å¯äžã®èŠçŽ ã¯ããŠãŒã¶ãŒåãšãã¹ã¯ãŒãããŸãã¯ãŠãŒã¶ãŒåãšPINã³ãŒãã®ç¥èã§ãã ã¯ã©ã€ã¢ã³ãã®ã¿ããµãŒããŒã«è¡šç€ºããããµãŒããŒã¯ããã圌ã§ããããšã蚌æããå¿
èŠã¯ãããŸããããããã£ãŠããã°ã€ã³/ãã¹ã¯ãŒãã®ççšããã³/ãŸãã¯ãµãŒããŒã®çœ®æã®å¯èœæ§ããããŸãã ç§ã®å Žåãããã¯åãå
¥ããããªãã£ãããã蚌ææžãæã€å¿
èŠæ§ããã°ã€ã³/ãã¹ã¯ãŒãã®ç¥èã«è¿œå ãããŸããã CAããã®èšŒææžã¯ããã¹ã¯ãŒãä»ãã®PKCS12ïŒPFXïŒåœ¢åŒã§ã¢ããããŒããããŸããã
次ã®ãããªãã®ããµãŒããŒæ§æã«è¿œå ãããŸããïŒ
<Location /location1>
SSLOptions +FakeBasicAuth +StdEnvVars
SSLVerifyClient require
SSLVerifyDepth 2
SSLRequire %{SSL_CLIENT_I_DN_CN} in {"My LTD OpenSSL CA"}
ã€ãŸã My LTD OpenSSL CAã«ãã£ãŠèšŒææžãçºè¡ããããã¹ãŠã®äººãèš±å¯ããŸãïŒ
å®éã«ã¯ããã¡ããååã¯ç°ãªããŸã ïŒ
ååã§ã¢ã¯ã»ã¹ãå¶éããããšãã§ããŸãã
<Location /location2>
SSLOptions +FakeBasicAuth +StdEnvVars
SSLVerifyClient require
SSLVerifyDepth 2
SSLRequire %{SSL_CLIENT_S_DN_CN} in {"Ivan A Ivanov", \
"Petr B Petrov"}
次ã®æ§æã䜿çšããŠããµãŒããŒãã°ã«æžã蟌ãŸããŸãã
CustomLog ../logs/ssl/ssl_request.log \
"\"%t\",\"%h\",\"%{SSL_CLIENT_S_DN_CN}x\",\"%r\",\"%s\"" env=!dontlogit
蚌ææžã®é
åž
ããŒãšãšãã«åä¿¡ãã蚌ææžã¯ãéåžžã«äžè¬çãªã±ãŒã¹ã§ãããŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ãããŸããïŒ
ã¬ãžã¹ããªã«ãããPINã³ãŒãã§æå·åãããŠããŸã ïŒãããã®ã³ã³ãã¥ãŒã¿ãŒã§ã®ã¿èšŒææžã䜿çšã§ãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãåã€ã³ã¹ããŒã«ããå Žåã¯ããã¡ããã蚌ææžãå床åä¿¡ããå¿
èŠããããŸãç§å¯éµã¯ã³ã³ãã¥ãŒã¿ãŒäžã§çæãããCAã蚪ãããšãã«ãã£ã¹ã±ããã§æž¡ãããããšã¯ãããŸãããããã¯å®éã«ã¯ç§å¯éµã®ææè
ã«ãªãããã§ãïŒ
åçŽãªå¯èœæ§ãããããïŒ CAã«ã
ãé»å眲åããæäŸããŸãããŸããç¹å®ã®ã¬ãã«ã®ã¹ãããã¹ã§-CAå
ã®ãã¹ãŠã®ç®¡çè
ãäºãã«çœ®ãæããŸãã ãã ããCAã«ã¯ã蚌ææžã®ã埩å
ãã®ããã®ãµãŒãã¹ãæäŸããæ©äŒããããŸãã
ãªããªã ç§èªèº«ã¯CAã§ããããæè¡å°é家ã«ãããã¡ã¢ãªãã®ããã®èšŒææžã®ã³ããŒããã®ãããªããµãŒãã¹ãããå
ããŸããïŒããã§ã¯ãããŸããã§ããïŒã
蚌ææžã¯ãããŒããŠã§ã¢ã¹ãã¬ãŒãžããã€ã¹ïŒAladdin USBããŒïŒã§çŸå Žã®åŸæ¥å¡ã«çºè¡ãããŸããã ãã®ç®çã®ããã«æäŸãããïŒããã³æäŸããŠããïŒéè¡ããã³CAã¯ããããããŒãã£ã¹ã¯ãŸãã¯ææ°ã®ãªãã·ã§ã³ã§ãããã©ãã·ã¥ãã©ã€ãã䜿çšããŸãã ããã¯ãã䟿å©ã§ãããå¥ã®å±éºã«ã€ãªãããŸã-è€è£œãäœæããæ©èœã§ãã çæ³çãªã±ãŒã¹ã§ã¯ãããŒãšèšŒææžã¯ã¹ããŒãã«ãŒãã«ä¿åããå¿
èŠããããŸããã¹ããŒãã«ãŒãã¯ããã³ã³ãŒãã§ããã«ä¿è·ãããç¬èªã®æå·ããã»ããµãæèŒããŠããŸããä¹±æ°çºçåšã¯ãããŒãååŸããå Žåãæœåšçãªã¯ã©ãã«ãŒã®å¯èœæ§ã倧å¹
ã«æžãããšèããããŠããŸãã ããã«ãã¹ããŒãã«ãŒãã¯å®è³ªçã«ã³ããŒã§ããŸããã
Aladdin eToken USBããŒã¯ããã®ãããªã«ãŒãã§ãããUSBã¹ãã£ãã¯ã®åœ¢åŒã«ãããŸããã
èªèšŒã®å Žåãæé ã«å¿
èŠãªå°éã®ããŒã¿ã®ã¿ãæå·åãããŸãããå¿
èŠã«å¿ããŠãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ãã¹ãŠã®ãã©ãã£ãã¯ãæå·åã§ããŸãã å€æ°ã®ã¯ã©ã€ã¢ã³ããåãããµãŒããŒã§æå·åã«èšŒææžã䜿çšããå¿
èŠãããå ŽåããµãŒããŒã«ãã£ãšæ·±å»ãªãã®ãããšãã°æå·ã«ãŒããç¡æã®IBM HTTP ServerïŒ
å®éã«ã¯åãApache ïŒããããã®äžéšã眮ãå¿
èŠããããŸããµããŒãããŸãã
ãã¡ãããæ®éã®ãã©ã¹ããã¯ã«ãŒãã®ããã«èŠããã¹ããŒãã«ãŒãã®äœ¿çšãæ°ã«ãã人ã¯ããŸãããããã®ãããªã«ãŒãã䜿çšããå¿
èŠããããã¹ãŠã®è·å Žã«ã¯ãã«ãŒããªãŒããŒãå¿
èŠã§ãã
CAãã蚌ææžãåãåãããããŒã¯ã³ãã«é
眮ããPINã³ãŒãã§ããŒã¯ã³ãéããåŸã2èŠçŽ ã®åæ¹åèªèšŒãå®è¡ããæ©äŒãåŸãããŸãã æåã®èŠçŽ -ããŒã¯ã³ãããã2çªç®ã®èŠçŽ -ããããPINã³ãŒããç¥ã£ãŠããŸãã 蚌ææžãååŸãããšããµãŒããŒãå®éã«æ¬äººã§ããããšã確èªã§ããŸãããã®å Žåãbobik.ruãšbobik.ruãæ··åããããšã¯ã§ããŸããã2çªç®ã®ããŒãžã§ã³ã®ãã·ã¢èªãoãã¯ååã®äžäžèŽïŒ
-ç°ãªãæå ïŒã
蚌ææžå€±å¹ãªã¹ã
åãæ¶ããã蚌ææžïŒCRLïŒã®ãªã¹ãããµãŒããŒã®èšå®ã«ç»é²ïŒããã³å®æçã«æŽæ°ïŒããããšããäºå®ã«ããã次ã®ãããªãŠãŒã¶ãŒã®ãµã€ããžã®ã¢ã¯ã»ã¹ãããã«äžæåæ¢ã§ããŸããã USBããŒãçŽå€±ããïŒãŸãã¯çŽå€±ããçããããïŒå ŽåããŸãã¯åŸæ¥å¡ã解éããå Žåã
å€ãã®åœå
CAã¯CRLã®å Žæã瀺ããŸããããªã¹ãèªäœãã¢ããããŒããŸãã¯æŽæ°ããããšããå¿ãããŸããããšãã°ãåãOutlookã倱å¹ãããªã¹ãã«å¯ŸããŠèšŒææžãæ€èšŒã§ãããèŠåãçºè¡ããå Žåãé»è©±ã³ã³ãµã«ã¿ã³ãã¯ãã®èŠåãç¡èŠããããææ¡ããå ŽåããããŸãã ã¯ã©ã€ã¢ã³ããå¥ã®ãµãŒããŒã§ããå Žåã蚌ææžãæ€èšŒã§ããªãå Žåã¯ãåã«åæãããŸãã
å¿
èŠã«å¿ããŠãåãç§å¯ããŒã§èšŒææžãåçºè¡ãããããã以åã«æå·åãããããŒã¿ã«ã¢ã¯ã»ã¹ã§ããªããªããŸããã
OpenSSLã®ãããã°
äžè¬çã«ã誰ãã蚌ææžã¯è¯ãããšã ãšç解ããŠããã蚌ææžãæ£ããçºè¡ããå¿
èŠããããŸãã ããªãé·ãé䟵å
¥ããæ°çŸããŒãžã®ãããã¥ã¡ã³ããã調ã¹ãåŸïŒ
å®éãIntuitã®PKIãšæå·åã«é¢ãããã¥ãŒããªã¢ã«ã§ãã ïŒãåœæã®ã€ã³ã¿ãŒãããã§å©çšå¯èœãª
openSSLæ§æã®äŸã¯ãã
éã³åã ãç®çã«ã®ã¿é©ããŠããŸããããã°ããã®éãç§ãçºè¡ãã蚌ææžãOutlookãThunderbirdãFirefoxã§æ©èœããªããšããäºå®ã«çŽé¢ããŠããŸããã IEã¯æãéé£æ§ã§ããããšãå€æããŸããã
ç©äºãããå°ãçå£ã«ããã«ã¯ãå°ããŸã£ããã«ããå¿
èŠããããŸãã
- ã«ãŒãCA蚌ææžãçºè¡ããåã«ã·ã¹ãã ã1幎以äžäœ¿çšãããå Žåã¯ãæ¥æ°ã3650ã«å¢ãããŠããè¿ããŠãã ããããŠãŒã¶ãŒèšŒææžã®å Žåã¯ã1幎ãŸãã¯6ãææ®ãããšããå§ãããŸã
- [CA_default]ã»ã¯ã·ã§ã³
unique_subjectãã©ã¡ãŒã¿ãŒããyesãã«èšå®ããŸã-ããã«ããã2ã€ã®åäžã®èšŒææžãçºè¡ã§ããªããªããŸã - [user_cert]ã»ã¯ã·ã§ã³
å ãã
ExtendedKeyUsage = clientAuth
- ãµãŒããŒã»ã¯ã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸã
[ server_cert ]
basicConstraints = CA:FALSE
nsCertType = server
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = nsSGC, serverAuth
- ã»ã¯ã·ã§ã³[v3_ca]
å€ãã
basicConstraints = CA:TRUE, pathlen:5
- nsCertTypeãškeyUsageã®ã³ã¡ã³ããå€ããŸã
- å ãã
extendedKeyUsage = serverAuth, clientAuth
ãã€ãã®ããã«-
æºåãã§ããèšå® ã
蚌ææžçºè¡ã®èªåå
èªååã®æ¬¡ã®ã¹ãããã¯ã蚌ææžã®ãªã¹ãã衚瀺ããã€ã³ã¿ãŒãã§ãŒã¹ãäœæããããšã§ãã ãªã¹ãã«ã¯æ確ãªåœ¢åŒã®index.txtãšããååããããHTAã§ã€ã³ã¿ãŒãã§ã€ã¹ãäœæããŸããã ãããã°ãç°¡çŽ åããããã«ãHTAã¯åã
ã®ããã·ãŒãžã£ã®ããããã¡ã€ã«ãåŒã³åºããŸããã å¿
èŠãªã»ããã¯æ¬¡ã®ãšããã§ãã
- ç°å¢å€æ°ãèšå®ããããã®å¥ã®ãã¡ã€ã«
- ä»»æã®èšŒææžã®çºè¡-æå°éã®èšå®ãäžé£ã®è³ªåã質åãããšãã°ããŒãããŒåãã®èšŒææžã®çºè¡ãCAãžã®ãµã€ã³ã€ã³
- CAã«ãŒã蚌ææžã®çºè¡-ãã³ãã«ã䜿çšããŠããªãŒãæ§ç¯ãããå Žåã1åãŸãã¯æ°ååŒã³åºãããŸã
- ãµãŒããŒèšŒææžã®çºè¡ã¯ç解ã§ããopensslã¯-extensions server_certãã©ã¡ãŒã¿ãŒã§åŒã³åºããã[server_cert]ã»ã¯ã·ã§ã³ã®èšå®ã«ã¯å¿
èŠãªãã©ã¡ãŒã¿ãŒãå«ãŸããŠããå¿
èŠããããŸããå¥ã®éãã¯ãPFXã«ããã±ãŒãžåããããããŒã®ã¢ã³ããã¯ããŒãžã§ã³ãäœæãããããšã§ãã
- ãŠãŒã¶ãŒèšŒææžã®åé¡
- 蚌ææžã®å€±å¹ã¯èå³æ·±ãããã»ã¹ã§ããçºè¡ããã蚌ææžã®ã¢ãŒã«ã€ãïŒèªåã§è¡ãå¿
èŠããããŸãïŒãããå¿
èŠãªèšŒææžãïŒååã§ãã·ãªã¢ã«çªå·ã§ïŒæœåºãããããããã§ã«å€±å¹ããŠããŸã
- ãŠãŒã¶ãŒèšŒææžã®æŽæ°-æåã«ãå€ã蚌ææžãåãæ¶ããïŒããããã¡ã€ã«No. 6ïŒã次ã«å€ãããŒã®æ°ãã蚌ææžãäœæãããŸãïŒããããã¡ã€ã«No. 5ïŒ
- 倱å¹ãã蚌ææžã®ãªã¹ããæŽæ°ããã®ã¯ç°¡åãªã³ãã³ãã§ãããç§ã®å Žåã¯Perlã§ã¹ã¯ãªãããå®è¡ãããªã¹ããäœæããŠLotus Dominoãã£ã¬ã¯ããªïŒ ã¢ãã¬ã¹åž³ãšåŒã°ããããšããã ïŒã«é
眮ããŸããã CRLãé
åžããã»ãŒæšæºçãªæ¹æ³ã§ãïŒ
ãããããã¹ãŠã®ããŒã«ã§ãã ãã玹ä»ããããŸãã