- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
是否可以制作一个仅使用公钥和私钥使用客户端证书身份验证的程序(我没有生成任何证书,我只有公钥和私钥)。
很简单,
我想在服务器上使用客户端证书身份验证进行身份验证。但是很难以编程方式制作客户端证书。
我想只用公钥和私钥进行客户端证书认证(我只有公钥和私钥,没有证书)。
是否可以发送服务器公钥而不是客户端证书来进行客户端证书认证?
最佳答案
TLS 协议(protocol)只允许交换证书,不允许交换原始公钥。甚至“PGP key ”(如果你想用 OpenPGP for authentication in TLS 替换 X.509,它的支持要少得多)实际上是证书(它们是公钥和一组标识符和属性的签名组合)。
话虽如此,您可以使用自签名客户端证书并依赖其公钥执行客户端身份验证(但您需要根据您的服务器已经知道的内容验证此公钥,例如已知列表 )。您需要先了解实现此功能的安全隐患。这与自签名服务器证书的问题不太一样。 (我建议保留一种更传统的方法来验证服务器证书。)
您可以让客户端发送自签名证书(可能使用 certain tricks regarding the CA list advertised by the server )并在 TLS 堆栈或稍后在应用程序中执行验证。
请注意,许多应用程序容器(例如 Java 中的 Tomcat/Jetty)期望 SSL/TLS 层验证客户端证书。因此,如果您在那里跳过身份验证(并且更愿意稍后在容器内或作为应用程序的一部分进行),许多应用程序框架将会混淆。在您的应用程序中执行任何需要身份验证的操作之前,您需要非常小心地确保身份验证确实在某处执行。
例如,拥有一个允许任何客户端证书在 Tomcat/Jetty 中通过的信任管理器可能没问题,但您不能依赖 javax.servlet.request.X509Certificate
以任何方式验证请求属性(大多数框架会以其他方式进行验证)。您需要在您的应用程序中实现一些验证逻辑:例如,在任何经过身份验证的功能之前有一个过滤器,该过滤器将此客户端证书中的公钥与您已知的公钥列表进行比较(或者您希望将公钥匹配到标识符)。或者,您也可以在自定义信任管理器(使用 Java)中执行此验证,这将减少应用程序中的工作量。
您可以在 Apache Httpd + PHP 设置中做类似的事情(例如),使用 SSLVerifyClient optional_no_ca
.同样,您的 PHP 应用程序不能依赖已验证的证书,因此您也必须在那里实现验证。
除非您了解您获得的证书信息在哪个阶段已经过验证,否则不要执行任何操作。
关于SSL 客户端证书认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18036469/
我正在使用 Tornado 与 twitter 等第三方进行身份验证。 我的登录处理程序看起来像这样 class AuthLoginHandler(BaseHandler, tornado.auth.
有没有一种真正的方法可以在 Pylons 中添加身份验证?我见过很多不同的方法,但大多数方法要么过时,要么过于复杂。是否有教程可以解释如何以良好而可靠的方式添加身份验证? 最佳答案 考虑使用 repo
RESTful 身份验证是什么意思,它是如何工作的?我在谷歌上找不到很好的概述。我唯一的理解是您在 URL 中传递了 session key (记住),但这可能是非常错误的。 最佳答案 如何在 RES
我正在考虑在基于插件的系统中实现安全性的多种方式。现在,当我说“安全”时,我的意思是: a) 插件系统的开发人员如何确保插件在核心平台上的使用是安全的。b) 插件开发人员如何确保在其平台上使用的插件是
我正在使用 WCF Webhttp 服务。我创建了一堆服务,剩下的就是放入用户身份验证... 问题 与其余架构风格保持一致,我是否应该针对用户 db 验证每个服务调用。 如果是这样,我应该在每次调用服
假设我想对 Mifare Classic 进行身份验证。 我如何知道要发送到卡的确切类型的 APDU? 例子。 这段代码: bcla = 0xFF; bins = 0x86; bp1 = 0x0;
我通过在文件 xyz.php 中编写以下代码登录到网站。当我运行这个文件时,我会登录到 moodle 网站。有什么方法可以像下面的登录代码一样注销吗? $user = authenticate_use
我有一个应用程序可以匿名访问除几个之外的所有 xpages。我需要强制用户登录这些 xpages。是使用 beforepageload 事件来检查用户登录页面并将其重定向到正确的方式还是有更好的方法?
我想用 ember.js 实现身份验证。 因此,当应用程序启动时,在路由器处理请求的 url 之前,我想检查用户状态。如果用户未通过身份验证,我想保存请求的 url 并重定向到特定的 url (/lo
您如何执行 jQuery Ajax 调用并在发送请求之前对调用进行身份验证? 我还没有登录所以必须进行身份验证。安全不是任何人都可以访问的问题,只需要进行身份验证。它只是基本的 http 身份验证,您
我尝试使用找到的 swift 代码 here在网站上找到here ,但响应是带有两个错误的 html 代码:“您必须输入密码!”和“您必须输入用户名!”我是 NSURLSession 的新手,并尝试更
我正在尝试连接到 Visa Direct API,但我没有通过基本的 SSL 证书认证,这是我的代码: import requests headers = { 'Content
我正在用 tornado 在 python 中开发一个 REST API,我将实现身份验证和授权,试图避免锁定到其他大项目,即 django。我也在通过论坛和 SO 环顾四周,我喜欢一个可能适合的解决
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭10
如何在 Android 中通过 HTTP 进行身份验证? 最佳答案 我非常难以在 Android 中通过 HTTP 进行身份验证,因为在浏览器(Web 和 Android native )中它工作完美
我有一些关于登录和 session 的问题。我有这段代码: 数据库查询: login: function(req,callback) { var query = 'SELECT id FROM
我开始使用 Swift 开发 iOS 应用。现在我正处于需要创建登录系统的部分。但是,我们需要人们提供的 LinkedIn 信息。 我如何在 iOS 中使用 OAuth2 API 来实现这一点? 我已
如果没有找到用户,问题出在每个 $routeChangeStart 上,如果我只输入 url,它仍然会引导我访问页面。 现在我已经在服务器上重写了规则。 Options +FollowSymlinks
简单代码 require 'net/http' url = URI.parse('get json/other data here [link]') req = Net::HTTP::Get.new(
参考文档: https://docs.sonarqube.org/latest/instance-administration/security/ 概述 SonarQube具有
我是一名优秀的程序员,十分优秀!