3

我有一个客户需要使用 LDAP 验证登录到我的 Web 应用程序的用户是否针对他的活动目录。在尝试使用 DirectoryEntry 和 DirectorySearcher .NET 类进行连接时,我可以连接到他的 AD 服务器,但不能访问它。

客户的 AD 服务器有一个 SSL 证书,他给了我一个公钥文件,但我不知道如何在我的 C# 代码中使用这个公钥文件。

当我通过代码发出连接命令时,我通过 Wireshark 看到我的应用程序正在发送连接请求。然后我看到服务器以“Server Hello,Certificate,Certificate Request,Server Hello Done”响应。然后我的应用程序在那之后再也没有响应。

在使用由其他人编写但我没有代码的另一个应用程序时,我看到来自服务器的相同请求,然后看到应用程序以“证书,客户端密钥交换”响应,然后应用程序连接并运行。

话虽如此,我的问题就变成了,我怎样才能让我的 C# 应用程序加载并发送我从客户端获得的密钥文件?

4

2 回答 2

1

密钥文件需要安装到用户机器/用户帐户中。

看看以下内容,了解如何安装数字证书...

见步骤 3...

http://msdn.microsoft.com/en-us/library/ff649247.aspx

步骤 3. 请求并安装客户端证书

此过程安装客户端证书。您可以使用来自任何证书颁发机构的证书,也可以使用 Microsoft 证书服务生成您自己的证书,如以下部分所述。

此过程假定 Microsoft 证书服务已针对未决请求进行配置,这需要管理员明确颁发证书。它还可以配置为自动颁发证书以响应证书请求。

检查证书请求状态设置

在 Microsoft 证书服务计算机上,从管理工具程序组中选择证书颁发机构。展开证书颁发机构(本地),右键单击证书颁发机构并单击属性。单击策略模块选项卡,然后单击配置。检查默认操作。以下过程假定将证书请求状态设置为待处理。管理员必须明确颁发证书被选中。

请求客户端证书

启动 Internet Explorer 并导航到 http://hostname/certsrv,其中 hostname 是安装 Microsoft 证书服务的计算机的名称。单击请求证书,然后单击下一步。在选择请求类型页面上,单击用户证书,然后单击下一步。单击提交以完成请求。关闭 Internet Explorer。颁发客户端证书

从管理工具程序组中,启动证书颁发机构工具。展开您的证书颁发机构,然后选择 Pending Requests 文件夹。选择您刚刚提交的证书请求,指向“操作”菜单上的“所有任务”,然后单击“问题”。确认证书显示在已颁发证书文件夹中,然后双击它进行查看。在详细信息选项卡上,单击复制到文件以将证书保存为 Base-64 编码的 X.509 证书。关闭证书的属性窗口。关闭证书颁发机构工具。安装客户端证书

要查看证书,请启动 Windows 资源管理器,导航到在上一个过程中保存的 .cer 文件,然后双击它。单击安装证书,然后单击证书导入向导第一页上的下一步。选择根据证书类型自动选择证书存储,然后单击下一步。单击完成以完成向导。关闭确认消息框,然后单击“确定”关闭证书。步骤 4. 验证客户端证书操作

此过程验证您是否可以使用客户端证书访问 SecureApp 应用程序。

验证客户端证书操作

启动 Internet Explorer 并导航到 http s://localhost/secureapp/webform1.aspx。确认网页显示成功。

于 2012-10-10T21:34:42.477 回答
0

如何导出或导入 PKCS#12 证书?

PKCS#12 文件可以由许多应用程序导入和导出,包括 Microsoft IIS。它们通常与文件扩展名 .pfx 相关联。

要创建 PKCS#12 证书,您需要一个私钥和一个证书。在转换过程中,您将有机会在证书上输入“导出密码”(可以为空,如果您选择)。

创建一个包含密钥和自签名证书的文件

openssl req \ -x509 -nodes -days 365 \ -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

将 mycert.pem 导出为 PKCS#12 文件 mycert.pfx

openssl pkcs12 -export \ -out mycert.pfx -in mycert.pem \ -name "My Certificate" 如果有人向您发送 PKCS#12 和使用它所需的任何密码,您可以将其导出为标准 PEM 格式。

导出证书和无密码密钥

openssl pkcs12 -in mycert.pfx -out mycert.pem -nodes

与上面相同,但系统会提示您输入密码

私钥

openssl pkcs12 -in mycert.pfx -out mycert.pem

于 2012-10-11T11:55:28.687 回答