asp.net程序如何获取客户端证书?有现成的示例代码提供吗?
还有WS-Security和WSDK是不是需要另外安装阿?能给个下载地址吗?

解决方案 »

  1.   

    如何设置客户端证书
    更新日期: 2004年04月20日本页内容
     目标 
     适用范围 
     如何使用本章内容 
     摘要 
     创建一个简单的 Web 应用程序 
     将 Web 应用程序配置为需要客户端证书 
     申请并安装客户端证书 
     验证客户端证书操作 
     其他资源 目标
    本章的目标是:• 获取并安装客户端证书。
     
    • 创建一个需要客户端证书的 ASP.NET Web 应用程序。
     返回页首
    适用范围
    本章适用于以下产品和技术:• Microsoft® Windows® XP 或 Windows 2000 Server (Service Pack 3) 以及更高版本的操作系统
     
    • Microsoft Internet 信息服务 (IIS) 5.0
     
    • Microsoft 证书服务(如果您需要生成自己的证书)
     
    • Microsoft .NET Framework 版本 1.0 (Service Pack 2) 以及更高版本
     
    • Microsoft Visual C#® .NET
     返回页首
    如何使用本章内容
    若要学好本章内容:• 您必须具有使用 Visual C# .NET 和 Microsoft Visual Studio® .NET 的经验。
     
    • 您必须具有使用 ASP.NET 开发 Web 应用程序的经验。
     
    • 您必须有配置 IIS 的经验。
     
    • 如果您想生成新的客户端证书,则必须能够访问某个证书颁发机构 (CA),如 Microsoft 证书服务。
     
    • 如果您不希望生成自己的证书,则必须决定将从哪个商业证书颁发机构申请客户端证书。某些证书颁发机构 (CA) 会就此服务收费。
     
    • 您必须具有一台安装了 SSL 证书的 Web 服务器。有关详细信息,请参见如何在 Web 服务器上设置 SSL。
     
    • 要了解客户端证书与其他身份验证形式之间的相同与差异之处,请参见第 2 章 ASP.NET 应用程序的安全模型。
     返回页首
    摘要
    客户端证书为 Web 应用程序提供了一种非常好的身份验证机制。浏览器或其他客户端应用程序必须先提供有效的身份验证,然后才能获得应用程序访问权限,这使得客户端不必提供用户名和密码。因此,在创建供其他客户端应用程序访问的安全 Web 服务时,客户端的证书就显得特别有用。 本章详细介绍如何获取和安装客户端证书,并演示了如何创建需要客户端证书的 Web 应用程序。返回页首
    创建一个简单的 Web 应用程序
    在此过程中,您将创建一个供测试用的简单 Web 应用程序。• 创建一个简单的 Web 应用程序1.
     启动 Visual Studio .NET 并创建一个新的名为 SecureApp 的 Visual C# ASP.NET Web 应用程序。
     
    2.
     从工具箱中将一个标签控件拖放到 WebForm1.aspx Web 窗体上,然后将其 ID 属性设置为 message。 
     
    3.
     再拖放一个标签至 WebForm1.aspx 窗体上,然后将其 ID 属性设置为 certData。
     
    4.
     将下面的代码添加到 Page_Load 事件过程中。string username;
    username = User.Identity.Name;
    message.Text = "Welcome " + username;
    HttpClientCertificate cert = Request.ClientCertificate;
    if (cert.IsPresent)
    {
      certData.Text = "检索到客户端证书";
    }
    else
    {
      certData.Text = "无客户端证书";

    5.
     在“生成”菜单上,单击“生成解决方案”。
     
    6.
     启动 Internet Explorer 并导航至 http://localhost/SecureApp/WebForm1.aspx。 
    页面应该显示“欢迎”消息(不显示用户名,因为用户尚未经过身份验证)和“没有客户端证书”。
     
    7.
     关闭 Internet Explorer。
     
     返回页首
    将 Web 应用程序配置为需要客户端证书
    此过程使用 Internet 信息服务 (IIS) 将 Web 应用程序的虚拟目录配置为需要证书。本过程假设您在 Web 服务器上安装了有效的证书。有关安装 Web 服务器证书的详细信息,请参见如何在 Web 服务器上设置 SSL。• 将 Web 应用程序的虚拟目录配置为需要证书1.
     在 Web 服务主机上启动 IIS。
     
    2.
     导航到 SecureApp 虚拟目录。
     
    3.
     右键单击 SecureApp,然后单击“属性”。
     
    4.
     单击“目录安全性”选项卡。
     
    5.
     单击“安全通信”下的“编辑”。如果无法使用“编辑”,则可能没有安装 Web 服务器证书。
     
    6.
     选择“要求安全通道 (SSL)”复选框。
     
    7.
     选择“需要客户端证书”选项。
     
    8.
     单击“确定”,然后再单击“确定”。
     
    9.
     在“继承覆盖”对话框中,单击“全选”,然后单击“确定”关闭“SecureApp 属性”对话框。
    这会将新的安全设置应用于虚拟根目录下的所有子目录。
     
    10.
     要确认 Web 站点已正确配置,启动 Internet Explorer 并(使用 HTTPS)浏览到 https://localhost/secureapp/webform1.aspx。
     
    11.
     Internet Explorer 显示“客户身份验证”对话框,要求您选择一个客户端证书。因为您尚未安装客户端证书,所以单击“确定”,确认显示通知您页面需要客户端证书的错误页面。
     
    12.
     关闭 Internet Explorer。
     
     返回页首
    申请并安装客户端证书
    此过程安装客户端证书。您可以使用由任何证书颁发机构颁发的证书,也可按照后面几节所述使用 Microsoft 证书服务来生成自己的证书。此过程假设 Microsoft 证书服务是为挂起的申请配置的,这要求管理员专门颁发证书。它也可以配置为应证书申请自动颁发证书。 • 检查证书申请状态设置1.
     在 Microsoft 证书服务计算机上,从“管理工具”程序组中选择“证书颁发机构”。
     
    2.
     展开“证书颁发机构(本地)”,右键单击证书颁发机构并单击“属性”。
     
    3.
     单击“策略模块”选项卡,然后单击“配置”。
     
    4.
     检查默认操作。以下过程假设选中了“将证书申请状态设成待定。管理员必须专门颁发证书”。
     
     
    • 申请客户端证书1.
     启动 Internet Explorer 并导航至 http://hostname/certsrv,其中 hostname 是安装 Microsoft 证书服务的计算机的名称。
     
    2.
     单击“申请一个证书”,然后单击“下一步”。
     
    3.
     在“选择申请类型”页上,单击“用户证书”,然后单击“下一步”。
     
    4.
     单击“提交”完成申请。 
     
    5.
     关闭 Internet Explorer。
     
     
    • 颁发客户端证书1.
     从“管理工具”程序组中启动“证书颁发机构”工具。
     
    2.
     展开您的证书颁发机构,然后选择“挂起的申请”文件夹。
     
    3.
     选择刚提交的证书申请,指向“操作”菜单上的“所有任务”,然后单击“颁发”。
     
    4.
     确认该证书显示在“颁发的证书”文件夹中,然后双击查看它。
     
    5.
     在“详细信息”选项卡上,单击“复制到文件”将证书保存为 Base-64 编码的 X.509 证书。
     
    6.
     关闭证书的属性窗口。
     
    7.
     关闭证书颁发机构工具。
     
     
    • 安装客户端证书1.
     要查看证书,启动 Windows 资源管理器,导航至在前一过程中保存的 .cer 文件,然后双击它。
     
    2.
     单击“安装证书”,然后在“证书导入向导”的首页单击“下一步”。
     
    3.
     选择“根据证书类型,自动选择证书存储区”,然后单击“下一步”。
     
    4.
     单击“完成”以完成该向导。关闭确认消息框,然后单击“确定”关闭证书。
     
     返回页首
    验证客户端证书操作
    此过程验证您是否可以使用客户端证书访问 SecureApp 应用程序。• 验证客户端证书操作1.
     启动 Internet Explorer 并导航至 https://localhost/secureapp/webform1.aspx。
     
    2.
     确认 Web 页成功显示。
     
     返回页首
    其他资源
    有关详细信息,请参见本指南中的如何在 Web 服务器上设置 SSL。
      

  2.   

    我用了以后,发现证书由于是中文的,subject读出来有问题,用了各种编码都没解决,高手看一下。