现在的位置: 首页 > 综合 > 正文

关于数字证书操作的问题

2013年06月24日 ⁄ 综合 ⁄ 共 3817字 ⁄ 字号 评论关闭
本人在对安装在客户端的安全证书的操作上遇到问题了,我用.NET FrameWork 里的 makecert.exe 命令生成了一个安全证书 testCert.cer 然后安装在客户机上。接着编写了如下代码。
index.aspx
<%@ Page language="c#" Codebehind="index.aspx.cs" AutoEventWireup="false" Inherits="Test.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    
<HEAD>
        
<title>WebForm1</title>
        
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        
<meta content="C#" name="CODE_LANGUAGE">
        
<meta content="JavaScript" name="vs_defaultClientScript">
        
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    
</HEAD>
    
<body MS_POSITIONING="GridLayout">
        
<div align="center">
            
<form id="Form1" method="post" runat="server">
                
<FONT face="宋体">
                    
<asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 168px; POSITION: absolute; TOP: 104px" runat="server"
                        Font
-Size="12px">获得客户端的数字证书:</asp:Label>
                    
<asp:Label id="Label2" runat="server">Label</asp:Label>
                    
<asp:TextBox id="TextBox1" style="Z-INDEX: 102; LEFT: 331px; POSITION: absolute; TOP: 101px"
                        runat
="server" Font-Size="12px"></asp:TextBox>
                    
<asp:Button id="Button1" style="Z-INDEX: 103; LEFT: 496px; POSITION: absolute; TOP: 101px" runat="server"
                        Text
="提交" Width="48px" Font-Size="12px"></asp:Button></FONT></form>
        
</div>
    
</body>
</HTML>

index.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Test
{
    
/// <summary>
    
/// WebForm1 的摘要说明。
    
/// </summary>

    public class WebForm1 : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.Label Label1;
        
protected System.Web.UI.WebControls.TextBox TextBox1;
        
protected System.Web.UI.HtmlControls.HtmlForm Form1;
        
protected System.Web.UI.WebControls.Label Label2;
        
protected System.Web.UI.WebControls.Button Button1;
    
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
        }


        
#region Web 窗体设计器生成的代码
        
override protected void OnInit(EventArgs e)
        
{
            
//
            
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            
//
            InitializeComponent();
            
base.OnInit(e);
        }

        
        
/// <summary>
        
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
        
/// 此方法的内容。
        
/// </summary>

        private void InitializeComponent()
        
{    
            
this.Button1.Click += new System.EventHandler(this.Button1_Click);
            
this.Load += new System.EventHandler(this.Page_Load);

        }

        
#endregion


        
private void Button1_Click(object sender, System.EventArgs e)
        
{
            
//获取客户端的IP地址
            String ClientIP;
            ClientIP 
= Request.UserHostAddress;

            
//获取客户端的主机名
            String ClientName;
            ClientName 
= Request.UserHostName;


            
//获取客户端的数字证书的内容
            string mark = "";
            HttpClientCertificate cs 
= Request.ClientCertificate;
            mark 
= cs.Certificate.ToString();

            
//获取证书的颁发者
            string provider = "";
            provider 
= cs.BinaryIssuer.ToString();

            
/*==================判断数字证书是否存在=====================*/

            
if (cs.IsPresent == true)
                Label2.Text 
= "数字证书存在";
            
else 
                Label2.Text 
= "数字证书不存在";

            
//在TextBox里显示数字证书相关内容
            TextBox1.Text = provider + mark + ClientIP + ClientName;

        }

    }

}

编译后,在客户机上运行判断是数字证书不存在。请各位仁兄看看是什么问题?
我给大家提供一个测试的安全证书,请 点击下载
如果大家觉得这个测试证书有问题,但我可以告诉大家,我朋友给我发来了个合法的安全证书,我们正常用在邮件加密上了,也不好使。

抱歉!评论已关闭.