12.3.3 安全连接.htm

来自「Windows2000后台服务程序开发手册」· HTM 代码 · 共 326 行 · 第 1/2 页

HTM
326
字号
            size=2>假如您的验证需求将会简化Windows的权杖(对于模拟及存取控制是极好的),则您可能会优先考虑使用NTLM或Kerberos。然而,您也可以使用SSL并让系统维护凭证到网域帐户的对应部份。这需要额外的维护工作,如先前所述。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>NTLM及Kerberos会向网域验证权杖。所以若您对第一个问题的答案为「是」,则您需要额外的动机来使用SSL及凭证。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>如果您的客户端将会存在您的网域中,则您应选择开放的方式。可以使用命名管道,它会自动使用Kerberos或NTLM验证的方式,并且会大大地减轻这个程序的负载。当然,管道也有可调适的议题,假如您须要与无数的客户端连结,此时您应该使用TCP/IP通讯端(Socket)。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>若客户端确实位于您的网域中,会使程序代码变得更容易。您可以将您的服务器设定为使用协商安全性套件,您的客户端则可以使用对他们最适当的套件。Windows 
            2000将会使用Kerberos,而其他则可能使用NTLM。使用这些选择,可以让您设计一个乾净且相对容易实作的安全环境。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>假如您的客户端位于您的网域外会发生什么事?若与取得Windows权杖无关,在您网域外的客户端可能是使用SSL及凭证。如果在服务器端不需要使用者的权杖时,表示您有一些与模拟相关的议题需要处理。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>假如客户端位于您的网域外,您可以假定客户端能够与您的服务器通讯。这表示您可以考虑使用NTLM通讯协定。客户端将会传递它的使用者名称、密码及服务器的网域到AcquireCredentialsHandle函数中。这个资讯会被传递到服务器。由于客户端只与服务器通讯,所以客户端没有必要存取DC的内容,此时客户端可以位于网域外。同时,服务器位于您的网域内,会存取到DC的内容,并且可以取得客户端的权杖。这是非常好的。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>在使用Kerberos通讯协定时,处理位于网域外的客户端就没有这么简单了。许多验证程序会牵涉到与KDC通讯的客户端。就效能来说这是很好的,但是与您网域外的客户端通讯可能会变得复杂。所以一旦决定再次验证时,可以考虑使用NTLM通讯协定,因为位于网域外的使用方式会比较简单。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>SSL可被用来取得您服务器端的权杖,它要求客户端只与服务器通讯,但是它存在着凭证管理的包袱。您会在哪里取得您的凭证?您会付给他们或是由自己发行?假如由您自行发行,则取得客户端的信任会很困难吗?假如不会,您和您的客户端信任相同的根CA吗?最后,若权杖是您的目标,您必须管理对应到Active 
            Directory的凭证,或使用执行Microsoft凭证服务之企业CA所发行的凭证(在其他方面可能不符合您的需要)。有关与其他操作系统沟通的议题呢?SSL在这方面很杰出。SSL及凭证之间调适得很好,并且可在其他操作系统上实作。我们的实作就沟通得很好!但是SSL也带来了一些您所知的限制。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>您还有一些其他的选择。Kerberos SSP就可以与UNIX之一般安全性服务(Generic Security 
            Service,GSS)程序库沟通。在使用EncryptMessage及DecryptMessage函数时,您必须处理一些额外的细节部份。无论如何,这个沟通能力使得您能够让UNIX客户端使用Kerberos通讯协定,并与您的Windows服务器通讯。GSS及其沟通的部份在《Platform 
            SDK》文件中有详细的讨论。《Platform SDK》中也包括完整的GSS范例。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7 
            size=4><B style="LINE-HEIGHT: 25px">加密不等于具有安全性<BR 
            style="LINE-HEIGHT: 25px">  </B></FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>一旦您已经掌握SSPI及其他Windows所提供的特色后,可能就会认为您的服务器已经是安全的了,然而这并不一定真是如此。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>Kerberos及NTLM使安全性变得更容易,因为他们使用以使用者密码为基础的对称性加密方式。一旦您的凭证通过验证后,即可以适度地确信您正在与知道密码的实体通讯,尤其当您在使用Kerberos时(然而,密码并不具有「强大的」安全性,因为它们比私密金钥更容易被「知道」或取得。所以密码的安全性是首要关切的部分)。</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>SSL和NTLM及Kerberos一样不简单。凭证并不是原来就被已对应到网域中的使用者帐户,他们也不直接对应到与密码一样简单的已知机密上。所以这是您必须不断考虑的问题:我正在与这个凭证私密金钥的持有者做安全地通讯,如何才能得知谁是持有者?</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>公开金钥加密及解密给予我们强大的工具,用来确保我们正与某个实体通讯,并且保证只有一个实体。然而是否应该信任第一个实体的问题仍然未定。这是一个隐含的困难点:所有凭证中的资讯皆是公开的。所以您必须检查什么资讯以确保考虑中的凭证属于您想要连结的实体?</FONT></P><FONT 
            style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2>
            <UL style="LINE-HEIGHT: 25px">
              <LI 
              style="LINE-HEIGHT: 25px">您信赖凭证中的常见名称吗?某人可以使用另一个CA建立一个与常见名称相同的凭证吗?<BR 
              style="LINE-HEIGHT: 25px">  
              <LI 
              style="LINE-HEIGHT: 25px">您信赖和URL相符的常见名称吗?某人有可能会建立另一个与相同URL相称的凭证吗?<BR 
              style="LINE-HEIGHT: 25px">  </LI></UL></FONT>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>所有这些问题的答案皆为「是」,但是了解这些资讯并不会使您的验证程序更安全。所以对您来说,了解与发行凭证之CA相关的附加资讯才是必要的:</FONT></P><FONT 
            style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2>
            <UL style="LINE-HEIGHT: 25px">
              <LI style="LINE-HEIGHT: 25px">CA保证什么资讯是唯一的?<BR 
              style="LINE-HEIGHT: 25px">  
              <LI style="LINE-HEIGHT: 25px">在获得凭证之前,CA做了多少调查的动作?<BR 
              style="LINE-HEIGHT: 25px">  </LI></UL></FONT>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>另一个要考虑的事情是您应该如何传递这些问题给使用者。您如何以不令人感到困惑并且不会导致使用者放弃的方式而使其信任每件事及每个人?</FONT></P>
            <P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000 
            size=2>这些问题所造成的挑战是严重的,尽管没有出现单一的解决办法为每个方案解决这些问题,但是它可以被克服。适当的加以考虑后,您便可以解决这些问题,并使其符合您的特殊需求。总之,公开金钥基础建设是很强大的,假如您选择使用它,表示您可以使用安全的方法实行它。您只须回答我刚刚为您的软件所提出的所有问题。指出这些问题的答案是安全性程序设计的挑战,而其原因有助于安全性软件的编写。 
            </P></DIV></FONT></A>
            <DIV></DIV< p>
            <P class=content_page><A 
            href="http://www.acejoy.com/Html/Article/network/6820061103184326_P2.html">上一页</A>&nbsp;&nbsp;<A 
            href="http://www.acejoy.com/Html/Article/network/6820061103184326.html">[1]</A>&nbsp;<A 
            href="http://www.acejoy.com/Html/Article/network/6820061103184326_P2.html">[2]</A>&nbsp;<STRONG><FONT 
            color=#ff0033>[3]</FONT></STRONG>&nbsp;</P></DIV><BR><BR></TD></TR></TBODY></TABLE>
      <TABLE style="CLEAR: both" cellSpacing=0 cellPadding=0 width="97%">
        <TBODY>
        <TR>
          <TD align=right>
            <TABLE>
              <TBODY>
              <TR>
                <TD>阅读:<SPAN id=news_hits></SPAN>
                  <SCRIPT src="12.3.3 安全连接.files/GetHits.htm" 
                  type=text/JavaScript></SCRIPT>
                   次<BR>录入:<A 
                  href="http://www.acejoy.com/User/Info.Asp?UserName=admin">admin</A><BR><BR></TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD align=right>【 <A 
            href="http://www.acejoy.com/Comment.asp?ChannelID=1&amp;Action=Write&amp;InfoID=68">评论</A> 
            】 【 <A 
            href="http://www.acejoy.com/User/SendMail.asp?Title=Windows2000 服务器端应用程序开发设计指南-安全连接(3)" 
            target=_blank>推荐</A> 】 【 <A href="javascript:window.print()">打印</A> 
            】 </TD></TR></TBODY></TABLE>
      <TABLE style="CLEAR: both" width="97%" align=center>
        <TBODY>
        <TR>
          <TD>上一篇:<A 
            title="标题:Windows2000 服务器端应用程序开发设计指南-安全连接(2)&#13;&#10;作者:Jeffrey Richter Jason D. Clark&#13;&#10;更新:2006-11-3 18:41:18&#13;&#10;点击:376" 
            href="http://www.acejoy.com/Html/Article/network/6720061103184118.html">Windows2000 
            服务器端应用程序开发设计指南-安全连接(2)</A><BR>下一篇:<A 
            title="标题:Windows2000 服务器端应用程序开发设计指南-附录&#13;&#10;作者:Jeffrey Richter Jason D. Clark&#13;&#10;更新:2006-11-6 22:21:09&#13;&#10;点击:765" 
            href="http://www.acejoy.com/Html/Article/network/6920061106222109.html">Windows2000 
            服务器端应用程序开发设计指南-附录</A> </TD></TR></TBODY></TABLE></TD>
    <TD class=mr></TD></TR></TBODY></TABLE></DIV></DIV>
<DIV class=mframe>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=tl></TD>
    <TD class=tm><SPAN class=tt>相关新闻</SPAN> </TD>
    <TD class=tr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=ml></TD>
    <TD class=mm>
      <TABLE height="100%" cellSpacing=5 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD vAlign=top>
            <SCRIPT language=javascript 
            src="12.3.3 安全连接.files/GetCorrelative.htm"></SCRIPT>
          </TD></TR></TBODY></TABLE></TD>
    <TD class=mr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=tl></TD>
    <TD class=tm><SPAN class=tt>本文评论</SPAN> </TD>
    <TD class=tr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=ml></TD>
    <TD class=mm>
      <P>&nbsp;</P>
      <TABLE height="100%" cellSpacing=5 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD vAlign=top>
            <SCRIPT language=javascript 
            src="12.3.3 安全连接.files/Comment.htm"></SCRIPT>
          </TD></TR></TBODY></TABLE></TD>
    <TD class=mr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
  <TBODY>
  <TR>
    <TD class=ml></TD>
    <TD class=mm></TD>
    <TD class=mr></TD></TR></TBODY></TABLE></DIV>
<TABLE id=footer cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR style="LINE-HEIGHT: 130%" align=middle>
    <TD height=23>&nbsp;<A 
      href='javascript:window.external.addFavorite("http://www.acejoy.com","ACE开发者")'><FONT 
      color=#000000>加入收藏</FONT></A>&nbsp;- &nbsp;<A 
      href="http://www.acejoy.com/Help.asp?Action=aboutweb" target=_blank><FONT 
      color=#000000>关于本站</FONT></A>&nbsp;- &nbsp;<A class=Bottom 
      href="http://www.acejoy.com/Help.asp?Action=Copyright" target=_blank><FONT 
      color=#000000>版权申明</FONT></A>&nbsp;- &nbsp;<A class=Bottom 
      href="http://www.acejoy.com/Help.asp?Action=aboutweb" target=_blank><FONT 
      color=#000000>联系站长</FONT></A>&nbsp;- &nbsp;<A class=Bottom 
      href="http://www.acejoy.com/LinkSite.asp" target=_blank><FONT 
      color=#000000>友情链接</FONT></A>&nbsp;&nbsp; </TD></TR>
  <TR align=middle>
    <TD height=23>Copyright&copy; 2004-2006 <A 
      href="http://www.acejoy.com/">http://www.acejoy.com/</A> .All Rights 
      Reserved <A href="http://www.miibeian.gov.cn/" target=_blank>京ICP备06055248 
      </A>
      <SCRIPT language=JavaScript src="12.3.3 安全连接.files/stat.htm" 
      charset=gb2312></SCRIPT>
    </TD></TR></TBODY></TABLE>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV><!--Powered by:CreateLive CMS Version 3.1(www.acejoy.com) CreateDate:2007-3-4 10:50:34--></DIV></DIV></DIV></DIV></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?