问题标签 [client-certificates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
341 浏览

apache - 从 mod_mono 中的 SSL 会话中检索客户端证书(在 Apache 2.2.2 (Red Hat) 中)

我正在尝试在 mod_mono 中设置一个 .NET Web 服务,该服务历史上只在 IIS 6/7 下运行。

大部分都运行良好,除了一个小细节:Web 服务应该在通过 HTTPS 建立连接时记录客户端证书。

我的 Apache 服务器使用 mod_ssl 运行,我可以使用客户端证书成功连接到服务。我已经在 IIS 7 中验证了我的 Web 服务,并且看到它能够获取客户端证书(如果存在)。

似乎ClientCertificate.IsPresent总是在 mod_mono 中返回 false。一些谷歌搜索显示这在过去一直是一个问题(它只在 XPS 下正常工作)。我想相信我错误配置了一些东西:-)有人可以指出我正确的方向吗?

最好的问候, 埃米尔

0 投票
2 回答
4696 浏览

asp.net - IIS 7.5 上托管的 ASP.NET 应用程序中的 WCF 客户端证书问题

我有一个 WCF 服务,我需要在 IIS 7.5 上托管的 ASP.NET Web 应用程序中调用它。此 WCF 服务使用客户端证书的传输安全性。我获得了一个客户端证书,我使用 mmc 在“本地计算机/个人”存储位置安装了该证书。.pfx 安装了 2 个其他证书(无私钥),它们是我的带有私钥的客户端证书的 CA。我在运行时分配证书,因为将来我可能会将其他证书用于相同的 Web 服务。

对于在 ApplicationPoolIdentity 下运行的 Web 应用程序,调用 Web 服务会引发带有内部 WebException(403 禁止)的 MessageSecurityException,就好像我根本没有通过客户端证书一样。如果配置需要,实际上不设置有效证书将通过 InvalidOperationException。如果我在管理员帐户下运行,则不会引发异常。我需要能够调用 ApplicationPoolIdentity 下的 web 服务。

编辑:我认为证书链可能是这里的问题......

到目前为止我已经尝试过:

  1. 在 MMC 中:MyCertificate -> All Tasks -> Manage Private Keys... 我授予 IIS_IUSRS 管理私钥的权限
  2. 为 C:\ProgramData\Microsoft\Crypto\RSA 添加了对 IIS_IUSRS 的读取访问权限
  3. 我使用了 System.Net 跟踪,并比较了 ApplicationPoolIdentity 和我的管理员帐户的日志。在“我们有用户提供的证书。服务器已指定 24 个颁发者。寻找与任何颁发者匹配的证书。 ”行之后,一切看起来都一样,直到下面的某个点。

ApplicationPoolIdentity 日志:

管理员帐户日志:

0 投票
1 回答
670 浏览

git - 通过 HTTPS 保存 Git 的客户端证书密码?

我正在尝试使用仅使用客户端证书通过 HTTPS 提供访问的远程 Git 存储库。我(终于......)让它工作了,但现在我遇到了一个小问题——每次我触摸遥控器时,Git 都会提示我输入证书密码。显然,这很快就会过时。

如果我使用 SSH,我可以按照官方指南提供带有ssh-agent. 但是,AFAICT 没有办法让 Git(或 Curl,这是我认为 Git 在后台存根的库)使用 ssh-agent 来访问 HTTPS 连接的凭据。我也可以将这两者中gnome-keyring的任何一个与密码短语联系起来,但我还没有在网上找到任何关于这两种方法的信息。

可以做到吗?我也许可以让服务器管理员打开 SSH 访问,我相信这会让我很清楚,但与此同时,如果我能得到它来保存 HTTPS 的密码短语会更容易。

0 投票
1 回答
3100 浏览

apache - SSL 连接失败时显示自定义 ErrorDocument (SSLVerifyClient)

我已将 Apache2 配置为使用客户端证书身份验证:

它有效,我可以使用有效的客户证书访问我的网站。但是,当用户在没有安装 ClientCertificate 的情况下连接到它时,他们会从浏览器中得到一个令人困惑的错误。

(Chrome 说“ERR_SSL_PROTOCOL_ERROR”,Firefox 说“ssl_error_handshake_failure_alert”,Internet Explorer 只说“Internet Explorer 无法显示网页”。

当用户尝试在没有有效客户端证书的情况下访问时,我想向用户显示自定义 ErrorDocument。

问题是该站点没有返回 http 错误代码,而是中止了请求,所以我不能使用 Apaches 的“ErrorDocument”。

ssl_error_log 的最后一部分是这样的:

如何为此返回有效的 ErrorDocument?

0 投票
1 回答
1574 浏览

security - .NET 4.0 客户端证书验证错误

我有以下代码

它适用于 .NET 3.5,但不适用于 .NET4.0。怪异吧?我使用的证书不在本地机器上验证(无链)。在 3.5 中,客户端证书的有效性与建立 SSL 无关,但是在迁移到 4.0 时,证书在用于 SSL 之前是经过验证的。(我可以在 CAPI2 事件日志中看到错误)。导致丑陋的 SecurityNegotiationException ...

堆栈跟踪:

在我们的安全架构中,证书是针对服务器上的 LDAP 目录进行验证的,因此客户端不需要知道完整的链。

问题是,我如何禁用这种新行为?

0 投票
1 回答
467 浏览

asp.net-mvc-3 - Asp.Net MVC 3 MembershipProvider 和 ClientCertificate

我正在考虑为我的网络应用程序编写自己的 MembershipProvider。人们通常不会注册,但会提供登录信息。那么会员制不是正确的吗?

我仍然会有一些角色,比如我可能无法让人们使用 ClientCertificate 而不是正常登录来进行身份验证。我仍然不希望他们通过成员身份验证(我可以使用的证书和数据库中有一个可识别的字段)并使用角色等。

MembershipProvider 是否可能仅用于原始登录身份验证而不是授权?

验证用户时似乎没有发生任何特别的事情,所以授权属性如何知道谁被授权?

0 投票
1 回答
1617 浏览

php - 使用 php_curl 转发 SSL 客户端证书

我有以下设置:

有 2 台服务器需要 SSL 客户端证书。该证书用于身份验证。

用户(使用他的浏览器)将使用他的客户端证书向 Server1 发出请求。到目前为止,一切都很好。现在,我想做的是:Server1 将向 Server2 发出请求,解析该响应,并将其返回给用户。

Server1 使用 php_curl 执行请求。我希望 Server1 将(用户的)原始客户端证书传递给 Server2(它将验证用户,..)。Server1 然后“代表”用户发布。

这可能吗?

Apache 启用了 ExportCertData SSLOption。我已经尝试将以下标头添加到 curl 选项(认为这与使用客户端证书的 Apache 代理设置大致相同):

但没有运气。

0 投票
1 回答
872 浏览

wcf - 我可以在 WCF Web 服务上验证 x509 ClientCertificate 吗?

不知道 x509 是如何工作的。

如果我有一个需要对客户端进行身份验证和验证的 Web 服务,并且他使用 ClientCertificate,他是否可以向我发送一些我可以验证的信息?

我不创建网站本身,所以我不能确定他们会做对。我不想让别人对 Web 服务说“没关系,我给他做了客户认证,他很好”。

0 投票
1 回答
10314 浏览

asp.net-mvc-3 - 在 Asp.Net MVC 中,身份验证模式还有哪些其他选项?

在 Web.config 文件中,有这条信息

我可以设置什么其他模式,我可以有多种模式吗?

一些用户可以使用用户名/密码登录,其他用户可以使用 x509 clientCert。

哪里有这方面的信息?

0 投票
1 回答
827 浏览

ruby-on-rails - 如何从机架应用程序访问 SSL 客户端证书

实际上——问题标题几乎说明了一切。在早期的 Rails (2.x) 中,我见过通过request.env哈希访问客户端证书详细信息的代码。我的机架应用程序正在接收参数callenv但此数据不存在。我怎样才能访问它?