﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Fingki 's Blog-随笔分类-About security</title><link>http://www.blogjava.net/fingki/category/36831.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 19 Dec 2008 14:47:34 GMT</lastBuildDate><pubDate>Fri, 19 Dec 2008 14:47:34 GMT</pubDate><ttl>60</ttl><item><title>keystore存储对称密钥</title><link>http://www.blogjava.net/fingki/archive/2008/09/02/226290.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Tue, 02 Sep 2008 02:42:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/09/02/226290.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/226290.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/09/02/226290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/226290.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/226290.html</trackback:ping><description><![CDATA[keystore是个密钥存储库，我们经常用他来存储非对称密钥，但有时我们也需要它来存储一些对称密钥。<br />
<pre><code jive-java=""> <font color="navy"><strong>public</strong></font> <font color="navy"><strong>void</strong></font> createKeyStore() <font color="navy">{</font><br />
<br />
<br />
<br />
<font color="navy"><strong>try</strong></font> <font color="navy">{</font><br />
<br />
<br />
<br />
KeyGenerator keyGen = KeyGenerator.getInstance(<font color="red">"DES"</font>);<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
SecureRandom random = SecureRandom.getInstance(<font color="red">"SHA1PRNG"</font>, <font color="red">"SUN"</font>);<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
keyGen.init(56, random);<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
SecretKey secretKey = keyGen.generateKey();<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
KeyStore ks = KeyStore.getInstance("jceks");<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<font color="navy"><strong>char</strong></font> password[] = <font color="navy">{</font><font color="navy">'c'</font>, <font color="navy">'h'</font>, <font color="navy">'a'</font>, <font color="navy">'n'</font>, <font color="navy">'g'</font>, <font color="navy">'e','i','t'</font> <font color="navy">}</font>;<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<font color="darkgreen">// Create an empty keystore</font><br />
<br />
<br />
<br />
ks.load(null, password);<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
KeyStore.SecretKeyEntry skEntry = <font color="navy"><strong>new</strong></font> KeyStore.SecretKeyEntry(secretKey);<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ks.setEntry(<font color="red">"myKey"</font>, skEntry, <font color="navy"><strong>new</strong></font> KeyStore.PasswordProtection(password));<br />
<br />
<br />
<br />
&nbsp;<br />
<br />
<br />
<br />
<font color="darkgreen">// store away the keystore</font><br />
<br />
<br />
<br />
java.io.FileOutputStream fos =<br />
<br />
<br />
<br />
<font color="navy"><strong>new</strong></font> java.io.FileOutputStream(<font color="red">"mystore"</font>);<br />
<br />
<br />
<br />
ks.store(fos, password);<br />
<br />
<br />
<br />
fos.close();<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<font color="navy">}</font> <font color="navy"><strong>catch</strong></font> (NoSuchAlgorithmException nsaex) <font color="navy">{</font><br />
<br />
<br />
<br />
nsaex.printStackTrace(System.err);<br />
<br />
<br />
<br />
<font color="navy">}</font> <font color="navy"><strong>catch</strong></font> (NoSuchProviderException nspex) <font color="navy">{</font><br />
<br />
<br />
<br />
nspex.printStackTrace(System.err);<br />
<br />
<br />
<br />
<font color="navy">}</font> <font color="navy"><strong>catch</strong></font> (KeyStoreException ksex) <font color="navy">{</font><br />
<br />
<br />
<br />
ksex.printStackTrace(System.err);<br />
<br />
<br />
<br />
<font color="navy">}</font> <font color="navy"><strong>catch</strong></font> (CertificateException cex) <font color="navy">{</font><br />
<br />
<br />
<br />
cex.printStackTrace(System.err);<br />
<br />
<br />
<br />
<font color="navy">}</font> <font color="navy"><strong>catch</strong></font> (IOException ioex) <font color="navy">{</font><br />
<br />
<br />
<br />
ioex.printStackTrace(System.err);<br />
<br />
<br />
<br />
<font color="navy">}</font><br />
<br />
<br />
<br />
<font color="navy">}<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</font>上面的例子是存一个DES密钥。<br />
<br />
<br />
<br />
需要注意的就是这个keystore的类型，必须是jceks，<br />
<br />
<br />
<br />
之前我就是使用默认的jks，导致报错。 <br />
<br />
<br />
<br />
</code></pre>
<br />
<br />
<img src ="http://www.blogjava.net/fingki/aggbug/226290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-09-02 10:42 <a href="http://www.blogjava.net/fingki/archive/2008/09/02/226290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有关强大的capicom的应用</title><link>http://www.blogjava.net/fingki/archive/2008/07/09/213827.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Wed, 09 Jul 2008 15:20:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/07/09/213827.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/213827.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/07/09/213827.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/213827.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/213827.html</trackback:ping><description><![CDATA[最近和capicom亲密接触了一下,感觉到它的强大,记录以备后查.<br />
<br />
capicom是一个对windows来讲非常重要的CryptoAPI.<br />
通过capicom你可以在你的应用中集成Public Key Infrastructure (PKI)功能:获取证书库,利用服务器证书签名,加密数据.<br />
通过vbscript你可以轻松的调用它,当然,前提是你已经安装了capicom.dll.<br />
注册capicom.dll,打开cmd,转到capicom.dll目录下,执行:<strong>regsvr32 capicom.dll.(当然你也可以自己做个.msi来安装)</strong><br />
之后你就可以用各种脚本调用它的强大功能了<br />
以vbscript为例:<br />
拿到当前用户的数字证书<br />
Const CAPICOM_MY_STORE = "My"<br />
Const CAPICOM_CURRENT_USER_STORE&nbsp; = 2<br />
Const CAPICOM_STORE_OPEN_READ_ONLY = 0<br />
Dim oCert, oStore<br />
Set oStore = CreateObject ("CAPICOM.Store")<br />
if Err.Number &lt;&gt; 0 Then<br />
&nbsp;&nbsp;&nbsp;wscript.echo "CAPICOM NOT detected"<br />
&nbsp;&nbsp;&nbsp;Wscript.Quit(1)<br />
End if<br />
oStore.Open CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_ONLY<br />
For Each oCert in oStore.Certificates<br />
&nbsp;&nbsp;&nbsp;WScript.Echo "&nbsp; Subject Name: " &amp; oCert.SubjectName<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WScript.Echo "&nbsp; Issuer Name: " &amp; oCert.IssuerName<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WScript.Echo "&nbsp; SHA-1 Thumbprint: " &amp; oCert.Thumbprint<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WScript.Echo "&nbsp; Serial Number: " &amp; oCert.SerialNumber<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WScript.Echo "&nbsp; Version: " &amp; oCert.Version<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WScript.Echo "&nbsp; Valid From: " &amp; oCert.ValidFromDate<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WScript.Echo "&nbsp; Valid To: " &amp; oCert.ValidToDate<br />
Next<br />
上面这段代码就是得到了当前用户的所有数字证书.<br />
当然你也可以得当前机器上的,AD上的等.<br />
store = CreateObject ("CAPICOM.Store")将返回一个证书库.<br />
可利用这个store的open()方法得到相应证书库及其中的证书.<br />
.open ()语法为:<br />
.open(<em>StoreLocation</em> ,&nbsp;<em>StoreName</em>&nbsp;, <em>OpenMode</em>)<br />
<em>StoreLocation</em> :<br />
<p>&nbsp;&nbsp;&nbsp;&nbsp;CAPICOM_ACTIVE_DIRECTORY_USER_STORE 3&nbsp;得到AD上已经发布的证书<br />
&nbsp;&nbsp;&nbsp;&nbsp;CAPICOM_CURRENT_USER_STORE 2 得到当前用户的证书<br />
&nbsp;&nbsp;&nbsp;&nbsp;CAPICOM_LOCAL_MACHINE_STORE 1 得到本地机器上的证书<br />
&nbsp;&nbsp;&nbsp;&nbsp;CAPICOM_MEMORY_STORE 0 得到内存中的证书<br />
<em>StoreName</em>&nbsp;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;CAPICOM_MY_STORE "MY"&nbsp;得到当前用户证书与CAPICOM_CURRENT_USER_STORE配合使用<br />
&nbsp;&nbsp;&nbsp;&nbsp;"CN=your user name on domain" 得到指定用户的证书,一般与CAPICOM_ACTIVE_DIRECTORY_USER_STORE配合使用.<br />
<em>OpenMode</em>:&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;CAPICOM_STORE_OPEN_READ_ONLY 0 只读方法<br />
<br />
经常易出错的地方是:以上这些常量在vbscript中并没被预定义,使用前要自己定义一下.其值就是后面相应的数字.<br />
之前我就是以为这此常量是VBS预定义了,所以直接用,导致操作不成功,浪费了大量时间去找原因.<br />
当然,你也可以直接用相应数字代替这此常量.<br />
<br />
了解更多请参考:<br />
http://msdn.microsoft.com/en-us/library/aa388130.aspx<br />
http://207.46.196.114/windowsserver/en/library/8f918fdc-9841-48f9-a46d-28232742239a1033.mspx?mfr=true</p>
<img src ="http://www.blogjava.net/fingki/aggbug/213827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-07-09 23:20 <a href="http://www.blogjava.net/fingki/archive/2008/07/09/213827.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Kerberos protocol registry entries and KDC configuration keys in Windows Server 2003(转摘)</title><link>http://www.blogjava.net/fingki/archive/2008/07/01/211954.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Tue, 01 Jul 2008 08:49:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/07/01/211954.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/211954.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/07/01/211954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/211954.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/211954.html</trackback:ping><description><![CDATA[<h2 class="subTitle" id="tocHeadRef">SUMMARY</h2>
<script type="text/javascript">loadTOCNode(1, 'summary');</script>
<div class="sbody">
<div class="indent">This
article contains information about registry entries that relate to the
Kerberos version 5 authentication protocol in Microsoft Windows Server
2003. </div>
<p class="topOfPage"><a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B837361&amp;x=11&amp;y=18#top"><br />
</a></p>
</div>
<h2 class="subTitle" id="tocHeadRef">INTRODUCTION</h2>
<script type="text/javascript">loadTOCNode(1, 'summary');</script>
<div class="sbody">Kerberos is an authentication mechanism that is used to
verify user or host identity. Kerberos is the preferred authentication method
for services in Windows Server 2003.<br />
<br />
If you are running Windows Server
2003, you can modify Kerberos parameters to help troubleshoot Kerberos
authentication issues or to test the Kerberos protocol. To do this, add or
modify the registry entries that are listed in the "More Information"
section.
</div>
<h2 class="subTitle" id="tocHeadRef">MORE INFORMATION</h2>
<script type="text/javascript">loadTOCNode(1, 'moreinformation');</script>
<strong>Important</strong>
This section, method, or task contains steps that tell you how to
modify the registry. However, serious problems might occur if you
modify the registry incorrectly. Therefore, make sure that you follow
these steps carefully. For added protection, back up the registry
before you modify it. Then, you can restore the registry if a problem
occurs. For more information about how to back up and restore the
registry, click the following article number to view the article in the
Microsoft Knowledge Base:
<div class="indent"><a class="KBlink" href="http://support.microsoft.com/kb/322756/">322756</a><span class="pLink"> (http://support.microsoft.com/kb/322756/)</span> How to back up and restore the registry in Windows</div>
<strong>Note </strong> After you finish troubleshooting or testing the Kerberos
protocol, remove any registry entries that you add. Otherwise, performance of
your computer may be affected.
<h3 id="tocHeadRef">Registry entries and values under the Parameters key </h3>
<script type="text/javascript">loadTOCNode(2, 'moreinformation');</script>
The registry entries that are listed in this section must be added
to the following registry subkey:
<div class="indent">HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters</div>
<strong>Note</strong> If the Parameters key is not listed under Kerberos, you must
create the key.
<table class="list ul">
    <tbody>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: SkewTime<br />
            Type: REG_DWORD <br />
            Default Value: 5
            (minutes) <br />
            <br />
            This value is the maximum time difference that is permitted
            between the client computer and the server that accepts Kerberos
            authentication. In Windows 2000 checked build version, the default SkewTime
            value is 2 hours.<br />
            <br />
            <strong>Note</strong> A checked build version of the Windows operating system is used
            in production and testing environments. (A checked build is also known as a
            debug version.) A checked build has many compiler optimizations turned off.
            This kind of build helps trace the cause of problems in system software. A
            checked build turns on many debugging checks in the operating system code and
            in the system drivers. These debugging checks help the checked build identify
            internal inconsistencies as soon as they occur. A checked build is larger and
            is slower to run than an end-user version of Windows.<br />
            <br />
            An end-user
            version of Windows is also known as a free build version or a retail-build
            version. In a free build version, debugging information is removed, and Windows
            is built with full compiler optimizations. A free build version is faster and
            uses less memory than a checked build version.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: LogLevel <br />
            Type: REG_DWORD <br />
            Default Value: 0
            <br />
            <br />
            This value indicates whether events are logged in the system event
            log. If this value is set to any non-zero value, all Kerberos-related events
            are logged in the system event log. </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: MaxPacketSize<br />
            Type: REG_DWORD <br />
            Default
            Value: 1465 (bytes) <br />
            <br />
            This value is the maximum User Datagram Protocol
            (UDP) packet size. If the packet size exceeds this value, TCP is used.
            </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: StartupTime<br />
            Type: REG_DWORD <br />
            Default Value:
            120 (seconds) <br />
            <br />
            This value is the time that Windows waits for the Key
            Distribution Center (KDC) to start before Windows gives up. </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: KdcWaitTime<br />
            Type: REG_DWORD <br />
            Default Value:
            10 (seconds)<br />
            <br />
            This value is the time Windows waits for a response from
            a KDC. </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: KdcBackoffTime<br />
            Type: REG_DWORD <br />
            Default
            Value: 10 (seconds)<br />
            <br />
            <br />
            This value is the time between successive
            calls to the KDC if the previous call failed. </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: KdcSendRetries<br />
            Type: REG_DWORD <br />
            Default
            Value: 3<br />
            <br />
            This value is the number of times that a client will try to
            contact a KDC. </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: DefaultEncryptionType<br />
            Type: REG_DWORD
            <br />
            Default Value: 23 (decimal) or 0x17 (hexadecimal)<br />
            <br />
            This value
            indicates the default encryption type for pre-authentication.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: FarKdcTimeout<br />
            Type: REG_DWORD <br />
            Default
            Value: 10 (minutes)<br />
            <br />
            This is the time-out value that is used to
            invalidate a domain controller from a different site in the domain controller
            cache.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: NearKdcTimeout<br />
            Type: REG_DWORD <br />
            Default
            Value: 30 (minutes) <br />
            <br />
            This is the time-out value that is used to
            invalidate a domain controller in the same site in the domain controller
            cache.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: StronglyEncryptDatagram<br />
            Type: REG_BOOL
            <br />
            Default Value: FALSE <br />
            <br />
            This value contains a flag that indicates
            whether to use 128-bit encryption for datagram packets.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: MaxReferralCount<br />
            Type: REG_DWORD <br />
            Default
            Value: 6 <br />
            <br />
            This value is the number of KDC referrals that a client
            pursues before the client gives up. </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: KerbDebugLevel<br />
            Type: REG_DWORD <br />
            Default
            Value: 0xFFFFFFFF<br />
            <br />
            This
            value is a list of flags that indicate the type and the level of
            logging that is requested. This kind of logging can be collected on the
            component level of Kerberos by bitwise or by one or more of the macros
            that are described in the following table.
            <table class="table" cellspacing="1">
                <tbody>
                    <tr>
                        <th>Macro Name</th><th>Value</th><th>Note</th>
                    </tr>
                    <tr>
                        <td>DEB_ERROR</td>
                        <td>0x00000001</td>
                        <td>This is the default InfoLevel for checked builds. This produces error messages across components. </td>
                    </tr>
                    <tr>
                        <td>DEB_WARN</td>
                        <td>0x00000002</td>
                        <td>This macro generates warning messages across components. In some cases, these messages can be ignored. </td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE</td>
                        <td>0x00000004</td>
                        <td>This macro enables general tracing events.</td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_API</td>
                        <td>0x00000008</td>
                        <td>This
                        macro enables user API tracing events that are usually logged on entry
                        and on exit to an externally exported function that is implemented
                        through SSPI. </td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_CRED</td>
                        <td>0x00000010</td>
                        <td>This macro enables credentials tracing. </td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_CTXT</td>
                        <td>0x00000020</td>
                        <td>This macro enables context tracing.</td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_LSESS</td>
                        <td>0x00000040</td>
                        <td>This macro enables logon session tracing.</td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_TCACHE</td>
                        <td>0x00000080</td>
                        <td>Not implemented</td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_LOGON</td>
                        <td>0x00000100</td>
                        <td>This macro enables logon tracing such as in <strong>LsaApLogonUserEx2()</strong>.</td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_KDC</td>
                        <td>0x00000200</td>
                        <td>This macro enables tracing before and after calls to <strong>KerbMakeKdcCall()</strong>. </td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_CTXT2</td>
                        <td>0x00000400</td>
                        <td>This macro enables additional context tracing.</td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_TIME</td>
                        <td>0x00000800</td>
                        <td>This macro enables the time skew tracing that is  found in Timesync.cxx.</td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_USER</td>
                        <td>0x00001000</td>
                        <td>This macro enables user API tracing that is used together with DEB_TRACE_API and that is found mostly in Userapi.cxx.</td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_LEAKS</td>
                        <td>0x00002000</td>
                        <td><br />
                        </td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_SOCK</td>
                        <td>0x00004000</td>
                        <td>This macro enables Winsock-related events.</td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_SPN_CACHE</td>
                        <td>0x00008000</td>
                        <td>This macro enables events that are related to SPN cache hits and misses.</td>
                    </tr>
                    <tr>
                        <td>DEB_S4U_ERROR</td>
                        <td>0x00010000</td>
                        <td>Not implemented</td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_S4U</td>
                        <td>0x00020000</td>
                        <td><br />
                        </td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_BND_CACHE</td>
                        <td>0x00040000</td>
                        <td><br />
                        </td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_LOOPBACK</td>
                        <td>0x00080000</td>
                        <td><br />
                        </td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_TKT_RENEWAL</td>
                        <td>0x00100000</td>
                        <td><br />
                        </td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_U2U</td>
                        <td>0x00200000</td>
                        <td><br />
                        </td>
                    </tr>
                    <tr>
                        <td>DEB_TRACE_LOCKS</td>
                        <td>0x01000000</td>
                        <td><br />
                        </td>
                    </tr>
                    <tr>
                        <td>DEB_USE_LOG_FILE</td>
                        <td>0x02000000</td>
                        <td>Not implemented</td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: MaxTokenSize<br />
            Type: REG_DWORD <br />
            Default Value:
            12000 (Decimal) <br />
            <br />
            This value is the maximum value of the Kerberos
            token. Microsoft recommends that you set this value to less than 65535.
            </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: SpnCacheTimeout<br />
            Type: REG_DWORD <br />
            Default
            Value: 15 minutes <br />
            <br />
            This value is the lifetime of the Service Principal
            Names (SPN) cache entries. On domain controllers, the SPN cache is
            disabled.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: S4UCacheTimeout<br />
            Type: REG_DWORD <br />
            Default
            Value: 15 minutes <br />
            <br />
            This value is the lifetime of the S4U negative
            cache entries that are used to restrict the number of S4U proxy requests from a
            particular computer.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: S4UTicketLifetime<br />
            Type: REG_DWORD <br />
            Default
            Value: 15 minutes <br />
            <br />
            This value is the lifetime of tickets that are
            obtained by S4U proxy requests.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: RetryPdc<br />
            Type: REG_DWORD <br />
            Default Value: 0
            (false) <br />
            Possible values: 0 (false) or any non-zero value (true)
            <br />
            <br />
            This value indicates whether the client will contact the primary
            domain controller for Authentication Service Requests (AS_REQ) if the client
            receives a password expiration error. </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: RequestOptions<br />
            Type: REG_DWORD <br />
            Default
            Value: Any RFC 1510 value <br />
            <br />
            This value indicates whether there are
            additional options that must be sent as KDC options in Ticket Granting Service
            requests (TGS_REQ).</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: ClientIpAddress<br />
            Type: REG_DWORD <br />
            Default
            Value: 0 (This setting is 0 because of Dynamic Host Configuration Protocol and
            network address translation issues.) <br />
            Possible values: 0 (false) or any
            non-zero value (true)<br />
            <br />
            This value indicates whether a client IP address
            will be added in AS_REQ to force the Caddr field to contain IP addresses in all
            tickets.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: TgtRenewalTime<br />
            Type: REG_DWORD <br />
            Default
            Value: 600 seconds <br />
            <br />
            This value is the time that Kerberos waits before
            it tries to renew a Ticket Granting Ticket (TGT) before the ticket
            expires.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: AllowTgtSessionKey<br />
            Type: REG_DWORD <br />
            Default
            Value: 0 <br />
            Possible values: 0 (false) or any non-zero value (true)
            <br />
            <br />
            This value indicates whether session keys are exported with initial
            or with cross realm TGT authentication. The default value is false for security
            reasons. </td>
        </tr>
    </tbody>
</table>
<h3 id="tocHeadRef">Registry entries and values under the Kdc key </h3>
<script type="text/javascript">loadTOCNode(2, 'moreinformation');</script>
The registry entries that are listed in this section must be added
to the following registry subkey:
<div class="indent">HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc</div>
<strong>Note</strong> If the Kdc key is not listed under Services, you must create the
key.
<table class="list ul">
    <tbody>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: KdcUseClientAddresses<br />
            Type: REG_DWORD
            <br />
            Default Value: 0 <br />
            Possible values: 0 (false) or any non-zero value
            (true)<br />
            <br />
            This value indicates whether IP addresses will be added in the
            Ticket-Granting Service Reply (TGS_REP).</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: KdcDontCheckAddresses<br />
            Type: REG_DWORD
            <br />
            Default Value: 1 <br />
            Possible values: 0 (false) or any non-zero value
            (true) <br />
            <br />
            This value indicates whether IP addresses for the TGS_REQ and
            the TGT Caddr field will be checked.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: NewConnectionTimeout<br />
            Type: REG_DWORD
            <br />
            Default Value: 50 (seconds) <br />
            <br />
            This value is the time that an
            initial TCP endpoint connection will be kept open to receive data before it
            disconnects.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: MaxDatagramReplySize<br />
            Type: REG_DWORD
            <br />
            Default Value: 1465 (decimal, bytes) <br />
            <br />
            This value is the maximum
            UDP packet size in TGS_REP and Authentication Service Replies (AS_REP)
            messages. If the packet size exceeds this value, the KDC returns a
            KRB_ERR_RESPONSE_TOO_BIG message that requests that the client switch to
            TCP.</td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text"> Entry: KdcExtraLogLevel<br />
            Type: REG_DWORD <br />
            Default
            Value: 2 <br />
            Possible values:
            <table class="list ul">
                <tbody>
                    <tr>
                        <td class="bullet">&#8226;</td>
                        <td class="text">1 (decimal) or 0x1 (hexadecimal): Audit SPN unknown
                        errors.</td>
                    </tr>
                    <tr>
                        <td class="bullet">&#8226;</td>
                        <td class="text">2 (decimal) or 0x2 (hexadecimal): Log PKINIT errors.
                        (PKINIT is an Internet Engineering Task Force (IETF) Internet draft for "Public
                        Key Cryptography for Initial Authentication in Kerberos.") </td>
                    </tr>
                    <tr>
                        <td class="bullet">&#8226;</td>
                        <td class="text">4 (decimal) or 0x4 (hexadecimal): Log all KDC
                        errors.</td>
                    </tr>
                </tbody>
            </table>
            This value indicates what information the KDC will write to
            event logs and to audits. </td>
        </tr>
        <tr>
            <td class="bullet">&#8226;</td>
            <td class="text">Entry: KdcDebugLevel<br />
            Type: REG_DWORD <br />
            Default
            Value: 1 for checked build, 0 for free build <br />
            <br />
            This value indicates
            whether debug logging is on (1) or off (0). <br />
            <br />
            If the value is set to
            0x10000000 (hexadecimal) or 268435456 (decimal), specific file or line
            information will be returned in the edata field of KERB_ERRORS as
            PKERB_EXT_ERROR errors during a KDC processing failure.<br />
            <br />
            摘自：http://support.microsoft.com/?scid=kb%3Ben-us%3B837361&amp;x=11&amp;y=18<br />
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/fingki/aggbug/211954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-07-01 16:49 <a href="http://www.blogjava.net/fingki/archive/2008/07/01/211954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>About capicom</title><link>http://www.blogjava.net/fingki/archive/2008/06/30/211773.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Mon, 30 Jun 2008 14:57:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/06/30/211773.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/211773.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/06/30/211773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/211773.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/211773.html</trackback:ping><description><![CDATA[<strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <strong><span style="font-size: 16pt;" lang="EN-US">Windows</span></strong><strong><span style="font-size: 16pt; font-family: 宋体;">系统中的安全组件</span></strong>.<br />
<span lang="EN-US"><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong></span><span style="font-family: 宋体;">是一个</span><span lang="EN-US">COM</span><span style="font-family: 宋体;">模型的组件，可以在</span><span lang="EN-US">Windows</span><span style="font-family: 宋体;">环境下各种语言中使用。而且，</span><span lang="EN-US"><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong></span><span style="font-family: 宋体;">中的大多数接口都是&#8220;脚本安全&#8221;的，这意味着你可以在浏览器网页脚本中安全地使用这些接口所提供的功能。</span><br />
<p style="text-indent: 21pt;"><span style="font-family: 宋体;">目前，</span><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong><span style="font-family: 宋体;">共有两个版本：</span>1.0<span style="font-family: 宋体;">版和</span> 2.0<span style="font-family: 宋体;">版。其中，后者在前者的基础上，提供了一些额外的功能。</span></p>
<p><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong> v1.0<span style="font-family: 宋体;">提供如下功能：</span></p>
<p>1、<span style="font-family: 宋体;">产生和验证</span>PKCS#7<span style="font-family: 宋体;">格式的数字签名；</span></p>
<p>2、<span style="font-family: 宋体;">使用证书加密</span>/<span style="font-family: 宋体;">解密数据；</span></p>
<p>3、<span style="font-family: 宋体;">使用口令加密</span>/<span style="font-family: 宋体;">解密数据；</span></p>
<p>
</p>
<p><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong> v2.0<span style="font-family: 宋体;">额外提供如下功能：</span></p>
<p>1、<span style="font-family: 宋体;">产生和验证代码签名；</span></p>
<p>2、<span style="font-family: 宋体;">支持文件形式的证书；</span></p>
<p>3、<span style="font-family: 宋体;">快速证书搜索；</span></p>
<p>4、<span style="font-family: 宋体;">产生任意数据的哈希值；</span></p>
<p>5、<span style="font-family: 宋体;">支持</span>AES<span style="font-family: 宋体;">算法（需要</span>Windows .NET Server 2003 <span style="font-family: 宋体;">或</span> Windows XP<span style="font-family: 宋体;">支持）；</span></p>
<p>6、<span style="font-family: 宋体;">支持高级证书属性，例如：政策、模板。</span></p>
<p>
</p>
<p style="text-indent: 17.95pt;"><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong><span style="font-family: 宋体;">是重分发组件，也就是说它没有被包含在操作系统的中，需要单独安装注册该组件（可以从</span>MS<span style="font-family: 宋体;">那里免费下载）；</span><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong> v1.0 <span style="font-family: 宋体;">要求</span>Win95<span style="font-family: 宋体;">、</span>WinNT 4.0<span style="font-family: 宋体;">或更高版本，</span><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong> v2.0 <span style="font-family: 宋体;">要求</span>Win98 <span style="font-family: 宋体;">、</span>WinNT 4.0 + SP4 <span style="font-family: 宋体;">或更高版本</span></p>
<p><span style="font-family: 宋体;">在</span>MSDN<span style="font-family: 宋体;">中有对</span><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong><span style="font-family: 宋体;">的详细描述，以下提供两个连接地址：</span></p>
<p><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong><span style="font-family: 宋体;">使用参考：</span>msdn""Security"" Security(General)""SDK Documentation""Cryptography"" Cryptography Reference""<strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong> Reference</p>
<p><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong><span style="font-family: 宋体;">例子程序：</span>msdn""Security"" Security(General)""SDK Documentation""Cryptography""</p>
<p>Using Cryptography""Using <strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong></p>
<p><span style="font-family: 宋体;">下载最新的</span><strong style="color: black; background-color: rgb(255, 255, 102);">CAPICOM</strong><span style="font-family: 宋体;">：</span></p>
<p>http://download.microsoft.com/download/7/7/0/7708ec16-a770-4777-8b85-0fcd05f5ba60/CC2RINST.EXE</p>
摘自:http://blog.csdn.net/brave1/archive/2005/06/07/389778.aspx
<img src ="http://www.blogjava.net/fingki/aggbug/211773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-06-30 22:57 <a href="http://www.blogjava.net/fingki/archive/2008/06/30/211773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>About SPN</title><link>http://www.blogjava.net/fingki/archive/2008/06/23/210101.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Mon, 23 Jun 2008 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/06/23/210101.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/210101.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/06/23/210101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/210101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/210101.html</trackback:ping><description><![CDATA[要使用 Kerberos 身份验证，某种服务必须注册其名称（称为服务主体名称
(SPN)），以及运行该服务所使用的帐户。默认情况下，Active Directory&#174; 目录服务注册 NetBIOS
或者计算机名，并允许计算机帐户使用 Kerberos。如果要以不同帐户或使用不同名称（例如，如果计算机使用其他的 WINS 或 DNS
名）运行服务，那么您可以使用 Setspn.exe 命令行工具设置 SPN。要设置 SPN，您必须是域管理员。<br />
Setspn.exe
命令行实用程序可以在 Windows Server 2003 CD-ROM 内的支持工具包中获得。在window2003中可以运行support tools中的suptools.msi来安装。<br />
<h3>使用 Setspn.exe</h3>
<p>下面是使用 Setspn.exe 命令行实用程序的基本语法，其中&#8220;accountname&#8221;可以是单独的名称，也可以是域\名称。</p>
<pre><code>setspn [parameter] accountname<br />
<br />
<br />
<br />
</code></pre>
<p>Setspn.exe 可以使用下列参数：</p>
<table>
    <tbody>
        <tr>
            <th>参数</th>
            <th>功能</th>
            <th>示例</th>
        </tr>
        <tr>
            <td>-R</td>
            <td>重置 HOST <strong>ServicePrincipalName</strong>。</td>
            <td>setspn -R computername</td>
        </tr>
        <tr>
            <td>-A</td>
            <td>添加任意的 SPN。</td>
            <td>setspn -A SPN computername</td>
        </tr>
        <tr>
            <td>-D</td>
            <td>删除任意的 SPN。</td>
            <td>setspn -D SPN computername</td>
        </tr>
        <tr>
            <td>-L</td>
            <td>列出已注册的 SPN。</td>
            <td>setspn -L SPN computername</td>
        </tr>
    </tbody>
</table>
<p>下面的示例使用 Setspn.exe 命令行实用程序注册以 Domain\UserAccount 运行的应用程序池：</p>
<pre><code>SETSPN.EXE -A HOST/&lt;your computer name&gt; Domain\UserAccount</code></pre>
<p>下面的示例注册 SPN&#8220;HOST/daserver1&#8221;和&#8220;HOST/{DNS of daserver1}&#8221;：</p>
<pre><code>setspn -R daserver1</code></pre>
<p>下面的示例为计算机&#8220;daserver1&#8221;注册 SPN&#8220;http/daserver&#8221;：</p>
<pre><code>setspn -A http/daserver daserver1</code></pre>
<p>下面的示例从计算机&#8220;daserver1&#8221;删除 SPN&#8220;http/daserver&#8221;：</p>
<pre><code>setspn -D http/daserver daserver1</code></pre>
<br />
<img src ="http://www.blogjava.net/fingki/aggbug/210101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-06-23 17:17 <a href="http://www.blogjava.net/fingki/archive/2008/06/23/210101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows Server 2003 域控安装</title><link>http://www.blogjava.net/fingki/archive/2008/04/25/195917.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Fri, 25 Apr 2008 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/04/25/195917.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/195917.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/04/25/195917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/195917.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/195917.html</trackback:ping><description><![CDATA[要安装exchange2003，首先要安装域控，整理安装过程如下：<br />
1，安装DNS服务<br />
&nbsp;&nbsp; &nbsp;如果在安装Windows Server 2003过程中，没有选择DNS组件，默认情况下是不被安装的，我们就需要手动去添加它。这里我们需要用到Windows Server 2003的安装光盘。<br />
&nbsp;&nbsp; &nbsp;添加方法如下:<br />
&nbsp;&nbsp; &nbsp;&#8220;开始—设置—控制面板—添加删除程序&#8221;，<br />
&nbsp;&nbsp; &nbsp;然后再点击&#8220;添加/删除Windows组件&#8221;<br />
&nbsp;&nbsp; &nbsp;选中&#8220;网络服务&#8221;<br />
&nbsp;&nbsp; &nbsp;默认情况下所有的网络服务都会被添加，可以点击下面的&#8220;详细信息&#8221;进行自定义安装，由于在这里只需要DNS，所以把其它的全都去掉了，以后需要的时候再安装<br />
<br />
&nbsp;&nbsp; &nbsp;然后就是点&#8220;确定&#8221;，一直点&#8220;下一步&#8221;就可以完成整个DNS的安装。在整个安装过程中请保证Windows Server 2003安装光盘位于光驱中，否则会出现找不到文件的提示，那就需要手动定位了。<br />
<br />
2，Active Directory安装<br />
&nbsp;&nbsp; &nbsp;安装完DNS以后，就可以进行提升操作了，先点击&#8220;开始—运行&#8221;，输入&#8220;Dcpromo&#8221;，然后回车就可以看到&#8220;Active Directory安装向导&#8221;<br />
&nbsp;&nbsp; &nbsp;安装过程按照提示输入相应内容就可以了，<br />
&nbsp;&nbsp; &nbsp;但是，当到 &#8220;DNS 注册诊断&#8221;这一步时，可能出现诊断失败，第一次部署时总会出现上面那个DNS注册诊断出错的画面，主要是因为虽然安装了DNS，但由于并没有配置它，网络上还没有可用的DNS服务器，所以才会出现响应超时的现像，所以在这里要选择:&#8220;在这台计算机上安装并配置DNS，并将这台DNS服务器设为这台计算机的首选DNS服务器&#8221;。<br />
&nbsp;&nbsp; &nbsp;安装完成后提示重启，<br />
&nbsp;&nbsp; &nbsp;然后来看一下安装了AD后和没有安装的时候有些什么区别，首先第一感觉就是关机和开机的速度明显变慢了，<br />
&nbsp;&nbsp; &nbsp;再看一下登陆界面:在&#8220;登录到&#8221;选项中选择刚配置的域名，登录。<br />
3，检查是否成功<br />
&nbsp;&nbsp; &nbsp;进入系统后，右键点击&#8220;我的电脑&#8221;选&#8220;属性&#8221;，点&#8220;计算机&#8221;<br />
&nbsp;&nbsp; &nbsp;如果已经登录上了指定域，<br />
&nbsp;&nbsp; &nbsp;这台服务器就被成功提升为域控制器了。
<img src ="http://www.blogjava.net/fingki/aggbug/195917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-04-25 11:21 <a href="http://www.blogjava.net/fingki/archive/2008/04/25/195917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>kerberos认证过程</title><link>http://www.blogjava.net/fingki/archive/2008/04/22/194907.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Tue, 22 Apr 2008 15:21:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/04/22/194907.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/194907.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/04/22/194907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/194907.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/194907.html</trackback:ping><description><![CDATA[<p>由于最近的项目中要用到kerberos and spnego protocol,查了一些资料,结合网上的资料和对它一定的理解,整理如下,以备后查.(如有不对之处,肯请高手指教)<br />
kerberos是一个很重要的网络认证协议,它实现了在一个非安全的网络环境中,一个实体向另一个实体证实自己的身份,从而以安全的方式进行交流.kerberos protocol已经被广泛应用于各种应用中,最为典型的莫过于windows中的kerberos认证,它在spnego protocol之下,为windows域用户登录提供安全保障.<br />
首先相关名词:<br />
Long term key:就是长期保持不变的key.<br />
Master key:就是Long term key经过Hash运算得到的Hash code.<br />
Short term key:就是只在一定时间内有效的key.有时也叫Session key.<br />
原则上Long term key 是不能在网络上传输的,因为很可能Long term key在传输过程中被人截获,一旦它被截获,原则上只要有足够的时间,就可以被破解.另外,对于一个帐户而言,密码仅限于该用户知道,对于domain的Administrator也应该保密,但由于密码是用户向Administrator证明身份的凭据,所以要基于用户的密码生成来的信息来证明用户的身份,通常做法是对密码进行Hash运算,生成Hash code,这个Hash code就是我们说的Master key.因为Hash Algorithm具有不可逆,同时保证了密码与Master key一一对应的特性,保证了密码的保密性,也保证了Master key可以代表密码作为用户身份的凭证.而作为 Short term key,用来加密在网络上传输的数据,由于它只在一定时间内有效,即使被人截获,等到被破解时,这个key早就过期了.<br />
Client 服务请求者<br />
Server 服务提供者<br />
KDC kerberos distribution certer.在整个认证过程中作为client和server共同信认的第三方.<br />
以windows2003中的Domain为例,Domain Controller扮演着kdc的角色.</p>
<p>下面我来介绍一下这kerberos协议如何实现认证的.<br />
前提:client和server都在kdc上已注册.<br />
第一步 Authentication Service Exchange<br />
第二步 Ticket Granting Service Exchange<br />
第三步 Client/Server Exchange<br />
&nbsp; 首先Client向kdc申请server服务,kdc查看server服务是受保护的服务,所以要验证client的身份,这就是第一步,kdc验证client的身份(Authentication Service Exchange).当kdc核实client的身份正确后,会给client一个证明,用这个证明我们可以得到访问server服务的许可证(Ticket),所以我们把这个证明叫做TGT(Ticket Granting Ticket).<br />
当client得到TGT后,用TGT来向kdc索要访问server服务的通行证(Ticket),这就是第二步Ticket Granting Service Exchange.<br />
当client得到通行证(Ticket)后,就与server交互,向server出示通行证(Ticket),即第三步Client/Server Exchange,从可得到server的服务.<br />
以上三步的具体实现要复杂得多,简单介绍如下:<br />
1． Authentication Service Exchange</p>
<p>通过这个Sub-protocol，KDC（确切地说是KDC中的Authentication Service）实现对Client身份的确认，并颁发给该Client一个TGT。具体过程如</p>
<p>下：</p>
<p>Client向KDC的Authentication Service发送Authentication Service Request（KRB_AS_REQ）, 为了确保KRB_AS_REQ仅限于自己和KDC知道，</p>
<p>Client使用自己的Master Key对KRB_AS_REQ的主体部分进行加密（KDC可以通过Domain 的Account Database获得该Client的Master Key）。</p>
<p>KRB_AS_REQ的大体包含以下的内容：</p>
<p>Pre-authentication data：包含用以证明自己身份的信息。说白了，就是证明自己知道自己声称的那个account的Password。一般地，它的内容是</p>
<p>一个被Client的Master key加密过的Timestamp。<br />
Client name &amp; realm: 简单地说就是Domain name\Client Server Name：注意这里的Server Name并不是Client真正要访问的Server的名称，而我们也说</p>
<p>了TGT是和Server无关的（Client只能使用Ticket，而不是TGT去访问Server）。这里的Server Name实际上是KDC的Ticket Granting Service的Server Name。<br />
AS（Authentication Service）通过它接收到的KRB_AS_REQ验证发送方的是否是在Client name &amp; realm中声称的那个人，也就是说要验证发送放是</p>
<p>否知道Client的Password。所以AS只需从Account Database中提取Client对应的Master Key对Pre-authentication data进行解密，如果是一个合法</p>
<p>的Timestamp，则可以证明发送放提供的是正确无误的密码。验证通过之后，AS将一份Authentication Service Response（KRB_AS_REP</p>
<p>）发送给Client。KRB_AS_REQ主要包含两个部分：本Client的Master Key加密过的Session Key（</p>
<p>SKDC-Client：Logon Session Key）和被自己（KDC）加密的TGT。而TGT大体又包含以下的内容</p>
<p>：</p>
<p>Session Key: SKDC-Client：Logon Session Key<br />
Client name &amp; realm: 简单地说就是Domain </p>
<p>name\Client<br />
End time: TGT到期的时间。<br />
Client通过自己的Master Key对第一部分解密获得Session Key（SKDC-Client：Logon Session Key）之后，携带着TGT便可以进入下一步：TGS（</p>
<p>Ticket Granting Service）Exchange。</p>
<p>2． TGS（Ticket Granting Service）Exchange</p>
<p>TGS（Ticket Granting Service）Exchange通过Client向KDC中的TGS（Ticket Granting Service）发送Ticket Granting Service Request</p>
<p>（KRB_TGS_REQ）开始。KRB_TGS_REQ大体包含以下的内容：</p>
<p>TGT：Client通过AS Exchange获得的Ticket </p>
<p>Granting Ticket，TGT被KDC的Master Key进行加</p>
<p>密。<br />
Authenticator：用以证明当初TGT的拥有者是否就是自己，所以它必须以TGT的办法方和自己的Session Key（SKDC-Client：Logon Session Key</p>
<p>）来进行加密。<br />
Client name &amp; realm: 简单地说就是Domain name\Client。<br />
Server name &amp; realm: 简单地说就是Domain name\Server，这回是Client试图访问的那个Server。<br />
TGS收到KRB_TGS_REQ在发给Client真正的Ticket之前，先得整个Client提供的那个TGT是否是AS颁发给它的。于是它不得不通过Client提供的</p>
<p>Authenticator来证明。但是Authentication是通过Logon Session Key（SKDC-Client）进行加密的，而自己并没有保存这个Session Key。所以</p>
<p>TGS先得通过自己的Master Key对Client提供的TGT进行解密，从而获得这个Logon Session Key（SKDC-Client），再通过这个Logon Session </p>
<p>Key（SKDC-Client）解密Authenticator进行验证。验证通过向对方发送Ticket Granting Service Response（KRB_TGS_REP）。这个KRB_TGS_REP有</p>
<p>两部分组成：使用Logon Session Key（SKDC-Client）加密过用于Client和Server的Session Key（SServer-Client）和使用Server的Master </p>
<p>Key进行加密的Ticket。该Ticket大体包含以下一些内容：</p>
<p>Session Key：SServer-Client。<br />
Client name &amp; realm: 简单地说就是Domain name\Client。<br />
End time: Ticket的到期时间。<br />
Client收到KRB_TGS_REP，使用Logon Session Key（SKDC-Client）解密第一部分后获得Session Key（SServer-Client）。有了Session Key和</p>
<p>Ticket，Client就可以之间和Server进行交互，而无须在通过KDC作中间人了。所以我们说Kerberos是一种高效的认证方式，它可以直接通</p>
<p>过Client和Server双方来完成，不像Windows NT 4下的NTLM认证方式，每次认证都要通过一个双方信任的第3方来完成。</p>
<p>我们现在来看看 Client如果使用Ticket和Server怎样进行交互的，这个阶段通过我们的第3个Sub-protocol来完成：CS（Client/Server ）</p>
<p>Exchange。</p>
<p>3． CS（Client/Server ）Exchange</p>
<p>Client通过TGSExchange获得Client和Server的Session Key（SServer-Client），随后创建用于证明自己就是Ticket的真正所有者的Authenticator，并使用Session Key（SServer-Client）进行加密。最后将这个被加密过的Authenticator和Ticket作为Application Service Request（KRB_AP_REQ）发</p>
<p>送给Server。除了上述两项内容之外，KRB_AP_REQ还包含一个Flag用于表示Client是否需要进行双向验证（Mutual Authentication）。</p>
<p>Server接收到KRB_AP_REQ之后，通过自己的Master Key解密Ticket，从而获得Session Key（SServer-Client）。通过Session Key（SServer</p>
<p>-Client）解密Authenticator，进而验证对方的身份。验证成功，让Client访问需要访问的资源，否则直接拒绝对方的请求。</p>
<p>对于需要进行双向验证，Server从Authenticator提取Timestamp，使用Session Key（SServer-Client）进行加密，并将其发送给Client用于</p>
<p>Client验证Server的身份。</p>
<p>想要更深入的理解kerberos,请参考官方网站</p>
<p>http://web.mit.edu/Kerberos/</p>
<img src ="http://www.blogjava.net/fingki/aggbug/194907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-04-22 23:21 <a href="http://www.blogjava.net/fingki/archive/2008/04/22/194907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于keytool用法</title><link>http://www.blogjava.net/fingki/archive/2008/04/16/193463.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Wed, 16 Apr 2008 07:33:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/04/16/193463.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/193463.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/04/16/193463.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/193463.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/193463.html</trackback:ping><description><![CDATA[做SSL以来，一直在使用keytool，下面把它用法整理如下，以备以后查看。<br />
1，产生一个密钥对<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keytool -genkey -alias mykeypair -keypass mykeypairpwd<br />
&nbsp;&nbsp;&nbsp; 过程如下：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; liqingfeng@liqingfeng:~/WORK_APP/keytooltest$ keytool -genkey -alias mykeypair -keypass mykeypairpwd<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 输入keystore密码：&nbsp; 123456<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 您的名字与姓氏是什么？<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; [Unknown]：&nbsp; fingki<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 您的组织单位名称是什么？<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; [Unknown]：&nbsp; server<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 您的组织名称是什么？<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; [Unknown]：&nbsp; server<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 您所在的城市或区域名称是什么？<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; [Unknown]：&nbsp; bj<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 您所在的州或省份名称是什么？<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; [Unknown]：&nbsp; bj<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 该单位的两字母国家代码是什么<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; [Unknown]：&nbsp; CN<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CN=fingki, OU=server, O=server, L=bj, ST=bj, C=CN 正确吗？<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; [否]：&nbsp; y<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; liqingfeng@liqingfeng:~/WORK_APP/keytooltest$ <br />
&nbsp;&nbsp;&nbsp; 这样将产生一个keypair,同时产生一个keystore.默认名是.keystore,存放到user-home目录<br />
&nbsp;&nbsp;&nbsp; 假如你想修改密码,可以用:keytool -keypasswd -alias mykeypair -keypass mykeypairpwd -new newpass <br />
<br />
2，产生一个密钥对，存放在指定的keystore中（加上-keystore 参数）<br />
&nbsp;&nbsp;&nbsp; keytool -genkey -alias mykeypair -keypass mykeypairpwd -keystore mykeystore<br />
&nbsp;&nbsp;&nbsp; 过程与上面的相同。<br />
&nbsp;&nbsp;&nbsp; 执行完后，在当前目录下产生一个名为mykeystore的keystore，里面有一个别名为mykeypair的keypair。<br />
<br />
3，检查一个keystore中的内容<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keytool -list -v -alias mykeypair -keystore mykeystore <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 参数&nbsp;&nbsp;&nbsp; -v指明要列出详细信息<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; -alias指明列出指定的别名为mykeypair的keypair信息（不指定则列出所有）<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; -keystore指明要列出名字为mykeystore的keystore中的信息<br />
&nbsp;&nbsp;&nbsp; 过程如下：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; liqingfeng@liqingfeng:~/WORK_APP/keytooltest$ keytool -list -v -keystore mykeystore<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 输入keystore密码：&nbsp; 123456<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Keystore 类型： jks<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Keystore 提供者： SUN<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 您的 keystore 包含 1 输入<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 别名名称： mykeypair<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 创建日期： 2008-4-16<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 输入类型：KeyEntry<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 认证链长度： 1<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 认证 [1]:<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Owner: CN=fingki, OU=server, O=server, L=bj, ST=bj, C=CN<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 发照者： CN=fingki, OU=server, O=server, L=bj, ST=bj, C=CN<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 序号： 48058c3c<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 有效期间： Wed Apr 16 13:18:52 GMT+08:00 2008 至： Tue Jul 15 13:18:52 GMT+08:00 2008<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 认证指纹：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;MD5：&nbsp; FD:C3:97:DC:84:A0:D8:B2:08:6F:26:7F:31:33:C3:05<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;SHA1： A3:21:6F:C6:FB:5F:F5:2D:03:DA:71:8C:D3:67:9D:1C:E1:27:A5:11<br />
<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *******************************************<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *******************************************<br />
<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; liqingfeng@liqingfeng:~/WORK_APP/keytooltest$ &nbsp;&nbsp;&nbsp; <br />
&nbsp;4，Keystore的产生:<br />
&nbsp;&nbsp;&nbsp; 当使用-genkey 或-import或-identitydb命令添加数据到一个keystore,而当这个keystore不存在时,产生一个keystore.默认名是.keystore,存放到user-home目录.<br />
&nbsp;&nbsp;&nbsp; 当用-keystore指定时,将产生指定的keystore.<br />
5，Keystore的实现:<br />
&nbsp;&nbsp;&nbsp; Keytool 类位于java.security包下,提供一个非常好的接口去取得和修改一个keystore中的信息. 目前有两个命令行:keytool和jarsinger,一个GUI工具Policy 可以实现keystore.由于keystore是公开的,用户可以用它写一些额外的安全应用程序.<br />
&nbsp;&nbsp;&nbsp; Keystore还有一个sun公司提供的內在实现.它把keystore作为一个文件来实现.利用了一个keystore类型(格式)"JKS".它用单独的密码保护每一个私有钥匙.也用可能不同的密码保护整个keystore的完整性.<br />
&nbsp;&nbsp;&nbsp; 支持的算法和钥匙大小:<br />
&nbsp;&nbsp;&nbsp; keytool允许用户指定钥匙对和注册密码服务供应者所提供的签名算法.缺省的钥匙对产生算法是"DSA".假如私有钥匙是"DSA"类型,缺省签名算法是"SHA1withDSA",假如私有钥匙是"RSA"类型,缺省算法是"MD5withRSA".<br />
&nbsp;&nbsp;&nbsp; 当产生一个DSA钥匙对,钥匙必须在512-1024位之间.对任何算法的缺省钥匙大小是1024位. <br />
6，关于证书<br />
&nbsp;&nbsp;&nbsp; 一个证书是一个实体的数字签名,还包含这个实体的公共钥匙值.<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 公共钥匙 :是一个详细的实体的数字关联,并有意让所有想同这个实体发生信任关系的其他实体知道.公共钥匙用来检验签名;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 数字签名:是实体信息用实体的私有钥匙签名（加密）后的数据.这条数据可以用这个实体的公共钥匙来检验签名（解密）出实体信息以鉴别实体的身份;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 签名:用实体私有钥匙加密某些消息，从而得到加密数据;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 私有钥匙:是一些数字,私有和公共钥匙存在所有用公共钥匙加密的系统的钥匙对中.公共钥匙用来加密数据，私有钥匙用来计算签名.公钥加密的消息只能用私钥解密，私钥签名的消息只能用公钥检验签名。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 实体:一个实体可以是一个人,一个组织,一个程序,一台计算机,一个商业,一个银行,或其他你想信任的东西.&nbsp; <br />
&nbsp;&nbsp;&nbsp; 实际上，我们用［1］中的命令已经生成了一个自签名的证书，没有指定的参数都使用的是默认值。<br />
&nbsp;&nbsp;&nbsp; 我们也可以用如下命令生成一个自签名的证书：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; keytool -genkey -dname "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN" -alias myCA -keyalg RSA -keysize 1024 -keystore myCALib -keypass 654321 -storepass 123456 -validity 3650<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 这条命令将生成一个别名为myCA的自签名证书，证书的keypair的密码为654321，证书中实体信息为 "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN"，存储在名为myCALib的keystore中（如果没有将自动生成一个），这个keystore的密码为123456，密钥对产生的算法指定为RSA，有效期为10年。<br />
7，将证书导出到证书文件<br />
&nbsp;&nbsp;&nbsp; keytool -export -alias myCA -file myCA.cer -keystore myCALib -storepass 123456 -rfc<br />
&nbsp;&nbsp;&nbsp; 使用该命令从名为myCALib的keystore中，把别名为myCA的证书导出到证书文件myCA.cer中。(其中-storepass指定keystore的密码，-rfc指定以可查看编码的方式输出，可省略)。 <br />
<br />
8，通过证书文件查看证书信息<br />
&nbsp;&nbsp;&nbsp; keytool -printcert -file myCA.cer<br />
9，密钥库中证书条目口令的修改<br />
&nbsp;&nbsp;&nbsp; Keytool -keypasswd -alias myCA -keypass 654321 -new newpass -storepass 123456 -keystore myCALib<br />
10，删除密钥库中的证书条目<br />
&nbsp;&nbsp;&nbsp; keytool -delete -alias myCA -keystore myCALib<br />
11，把一个证书文件导入到指定的密钥库<br />
&nbsp;&nbsp;&nbsp; keytool -import -alias myCA -file myCA.cer -keystore truststore<br />
&nbsp;&nbsp;&nbsp; (如果没有名为truststore的keystore，将自动创建,将会提示输入keystore的密码)<br />
12，更改密钥库的密码<br />
&nbsp;&nbsp;&nbsp; keytool -storepasswd -new 123456&nbsp; -storepass 789012 -keystore truststore<br />
&nbsp;&nbsp;&nbsp; 其中-storepass指定原密码，-new指定新密码。<br />
<br />
<br />
<img src ="http://www.blogjava.net/fingki/aggbug/193463.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-04-16 15:33 <a href="http://www.blogjava.net/fingki/archive/2008/04/16/193463.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJBCA的安装</title><link>http://www.blogjava.net/fingki/archive/2008/04/14/192928.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Mon, 14 Apr 2008 14:10:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/04/14/192928.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/192928.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/04/14/192928.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/192928.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/192928.html</trackback:ping><description><![CDATA[<p>具体安装过程请参考 EJBCA官方说明:<a href="http://www.ejbca.org/installation.html">http://www.ejbca.org/installation.html</a><br />
上面说的详细,需要注意的就是下载合适的jce(Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files ),<br />
</p>
<img src ="http://www.blogjava.net/fingki/aggbug/192928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-04-14 22:10 <a href="http://www.blogjava.net/fingki/archive/2008/04/14/192928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转：关于工作组和域</title><link>http://www.blogjava.net/fingki/archive/2008/04/01/190121.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Tue, 01 Apr 2008 08:22:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/04/01/190121.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/190121.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/04/01/190121.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/190121.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/190121.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 最近在研究域控制器方面的问题，看到一论坛上有关工作组和域的介绍很不错，摘录下来如下：<br />
&nbsp;&nbsp;&nbsp; 工作组Work &nbsp; Group &nbsp; <br />
<clk>&nbsp;在一个网络内，可能有成百上千台<nobr id="clickeyekey5" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" onclick="return kwC(event,5)" target="_1" oncontextmenu="return false;" onmouseover="kwE(event,5, this);" onmouseout="kwL(event, this);" onmousemove="kwM(5);">电脑</nobr>，
如果这些电脑不进行分组，都列在&#8220;网上邻居&#8221;内，可想而知会有多么乱。为了解决这一问题，Windows &nbsp;
9x/NT/2000就引用了&#8220;工作组&#8221;这个概念，将不同的电脑一般按功能分别列入不同的组中，如财务部的电脑都列入&#8220;财务部&#8221;工作组中，人事部的电脑都
列入&#8220;人事部&#8221;工作组中。你要访问某个部门的资源，就在&#8220;网上邻居&#8221;里找到那个部门的工作组名，双击就可以看到那个部门的电脑了。 &nbsp; </clk><br />
&nbsp; 　　那么怎么加入工作组呢？其实很简单，你只需要右击你的Windows桌面上的&#8220;网上邻居&#8221;，在弹出的菜单出选择&#8220;属性&#8221;，点击&#8220;标识&#8221;，在&#8220;计算机名&#8221;一栏中添入你想好的名字，在&#8220;工作组&#8221;一栏中添入你想加入的工作组名称。 &nbsp; <br />
<clk>&nbsp;如果你输入的工作组名称以前没有，那么相当于新建一个工作组，当然只有你的电脑在里面。计算机名和工作组的长度不能超过15个英文字符，可以输入汉字，但是不能超过7个。&#8220;计算机说明&#8221;是附加信息，不填也可以，但是最好填上一些这台电脑主 &nbsp; 人的信息，如&#8220;<nobr id="clickeyekey7" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" onclick="return kwC(event,7)" target="_1" oncontextmenu="return false;" onmouseover="kwE(event,7, this);" onmouseout="kwL(event, this);" onmousemove="kwM(7);">技术</nobr>部主管&#8221;等。单击[确定]按钮后，Windows &nbsp; 98提示需要重新启动，按要求重新启动之后，再进入&#8220;网上邻居&#8221;，就可以看到你所在工作组的成员了。 &nbsp; </clk><br />
&nbsp; 　　一般来说，同一个工作组内部成员相互交换信息的频率最高，所以你一进入&#8220;网上邻居&#8221;，首先看到的是你所在工作组的成员。如果要访问其他工作组的成员，需要双击&#8220;整个网络&#8221;，就会看到网络上所有的工作组，双击工作组名称，就会看到里面的成 &nbsp; 员。 &nbsp; <br />
&nbsp;
你也可以退出某个工作组，只要将工作组名称改动即可。不过这样在网上别人照样可以访问你的共享资源，只不过换了一个工作组而已。你可以随便加入同一网
络上的任何工作组，也可以离开一个工作组。&#8220;工作组&#8221;就像一个自由加入和退出的俱 &nbsp; 乐 &nbsp; 部一样，它本身的作用仅仅是提供一个&#8220;房 &nbsp;
间&#8221;，以方便网上计算机共享资源的浏览。 <br />
&nbsp;&nbsp;&nbsp; 域 &nbsp; <br />
<clk>&nbsp;在&#8220;域&#8221;模式下，至少有一台服务器负责每一台联入网络的电脑和用户的验证工作，相当于一个单位的门卫一样，称为&#8220;域控制器(Domain &nbsp; Controller，简写为DC)&#8221;。&#8220;域控制器&#8221;中包含了由这个域的账户、<nobr id="clickeyekey6" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" onclick="return kwC(event,6)" target="_1" oncontextmenu="return false;" onmouseover="kwE(event,6, this);" onmouseout="kwL(event, this);" onmousemove="kwM(6);">密码</nobr>、
属于这个域的计算机等信息构成的数据库。当电脑联入网络时，域控制器首先要鉴别这台电脑是否是属于这个域的，用户使用的登录账号是否存在、密码是否正确。
如果以上信息不正确，域控制器就拒绝这个用户从这台电脑登录。不能登录，用户就不能访问服务器上有权限保护的资源，只能以对等网用户的方式访问
Windows共享出来的资源，这样就一定程度上保护了网络上的资源。 &nbsp; &nbsp; </clk><br />
&nbsp;  &nbsp; <br />
<clk>&nbsp;想把一台电脑加入域，仅仅使它和服务器在&#8220;网上邻居&#8221;能够相互看到是远远不够的，必须要由网络<nobr id="clickeyekey8" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" onclick="return kwC(event,8)" target="_1" oncontextmenu="return false;" onmouseover="kwE(event,8, this);" onmouseout="kwL(event, this);" onmousemove="kwM(8);">管理</nobr>员进行把这台电脑加入域的相关操作。操作过程由服务器端设置和客户端设置构成。 &nbsp;  &nbsp; </clk><br />
&nbsp;  &nbsp; <br />
&nbsp; 　　1、服务器端设置 &nbsp;  &nbsp; <br />
&nbsp;  &nbsp; <br />
<clk>&nbsp;以系统管理员身份在已经设置好Active &nbsp; Directory(活动目录)的Windows &nbsp; 2000 &nbsp; Server上登录，点击&#8220;开始/<nobr id="clickeyekey9" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" onclick="return kwC(event,9)" target="_1" oncontextmenu="return false;" onmouseover="kwE(event,9, this);" onmouseout="kwL(event, this);" onmousemove="kwM(9);">程序</nobr>/
管理工具/Active &nbsp;
Directory用户和计算机&#8221;，在程序界面中右击&#8220;computers&#8221;(计算机)，在弹出的菜单中单击&#8220;新建/计算机&#8221;填入想要加入域的计算机名即
可。要加入域的计算机名最好为英文，否则系统会提示中文计算机名可能会引起一些问题。 &nbsp; &nbsp; </clk><br />
&nbsp;  &nbsp; <br />
&nbsp; 　　2、客户端设置 &nbsp;  &nbsp; <br />
&nbsp;  &nbsp; <br />
&nbsp; 　　首先要确认计算机名称是否正确，然后在桌面&#8220;网上邻居&#8221;上右击鼠标，点击&#8220;属性&#8221;出现网络属性设置窗口，确认&#8220;主网络登录&#8221;为&#8220;Microsoft网络用户&#8221;。 &nbsp;  &nbsp; <br />
&nbsp;  &nbsp; <br />
&nbsp;
选中窗口上方的&#8220;Microsoft网络用户&#8221;(如果没有此项，说明没有安装，点击[添加]安装&#8220;Microsoft网络用户&#8221;项)。点击[属性]按
钮，出现&#8220;Microsoft网络用户属性&#8221;对话框，选中&#8220;登录到Windows &nbsp; NT域&#8221;复选框，在&#8220;Windows &nbsp;
NT域&#8221;中输入要登录的域名。 &nbsp; &nbsp; <br />
&nbsp;  &nbsp; <br />
&nbsp; 　　Windows &nbsp;
98会提示需要重新启动计算机，重新启动后，会出现一个登录对话框。在输入正确的域用户账号、密码以及登录域之后，就可以使用Windows &nbsp;
2000 &nbsp;
Server域中的资源了。请注意，这里的域用户账号和密码，必须是网络管理员为用户建的那个账号和密码，而不是由本机用户自己创建的账号和密码。如果没
有将计算机加入域，或者登录的域名、用户名、密码有一项不正确，就会出现错误信息。<br />
<img src ="http://www.blogjava.net/fingki/aggbug/190121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-04-01 16:22 <a href="http://www.blogjava.net/fingki/archive/2008/04/01/190121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转：kerberos原理</title><link>http://www.blogjava.net/fingki/archive/2008/03/27/188998.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Thu, 27 Mar 2008 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/03/27/188998.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/188998.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/03/27/188998.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/188998.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/188998.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这是MIT（MassachusettsInstituteofTechnology）为了帮助人们理解Kerberos的原理而写的一篇对话集。里面有两个虚构的人物：Athena和Euripides，通过Athena不断的构思和Euripides不断的寻找其中的漏洞，使大家明白了Kerberos协议的原理。Athena:雅典娜，智慧与技艺的女神。Euripides:欧里庇得斯,希腊的悲剧诗人。...&nbsp;&nbsp;<a href='http://www.blogjava.net/fingki/archive/2008/03/27/188998.html'>阅读全文</a><img src ="http://www.blogjava.net/fingki/aggbug/188998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-03-27 14:30 <a href="http://www.blogjava.net/fingki/archive/2008/03/27/188998.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>