- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要支持客户端和服务器之间的相互认证。到目前为止,单向身份验证工作正常,即我们能够根据存储在信任库中的 CA 证书验证证书。
对于相互身份验证,我执行了以下步骤:
我使用以下命令将此客户端证书安装在不同于信任库的 keystore 位置sudo/usr/java/default/bin/keytool -import -alias $file_name -file $file_name.crt -keystore keystore.jks -storepass changeit -noprompt
我创建了 SSLContext 如下sslContext.init(keyManagers, trustStore, NULL_SECURE_RANDOM);
现在我们正在尝试从客户端与服务器通信,但出现握手失败错误
<HASH_VALUE>
main, READ: TLSv1.2 Handshake, length = 333
*** ECDH ServerKeyExchange
Signature Algorithm SHA512withRSA
Server key: Sun EC public key, 256 bits
public x coord: 10253619320081805931384466854469954543531656069378199159702043393618555071374
public y coord: 88104986257121586743271984238217759117375506314354198659212202676684306616776
parameters: secp256r1 [NIST P-256, X9.62 prime256v1] (1.2.840.10045.3.1.7)
[read] MD5 and SHA1 hashes: len = 333
main, READ: TLSv1.2 Handshake, length = 453
*** CertificateRequest
Cert Types: ECDSA, RSA, DSS
Supported Signature Algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA224withECDSA, SHA224withRSA, SHA1withECDSA, SHA1withRSA, SHA1withDSA
Cert Authorities:
<O=saurav, OU=xxx, C=IN, CN=XX_CA>
<O=saurav, OU=xxx, C=IN, CN=YY_CA>
<O=saurav, OU=xxx, C=IN, CN=ZZ_CA>
<O=saurav, OU=xxx, C=IN, CN=XX_CA>
<O=saurav, OU=xxx, C=IN, CN=YY_CA>
....
main, READ: TLSv1.2 Handshake, length = 4
*** ServerHelloDone
[read] MD5 and SHA1 hashes: len = 4
0000: 0E 00 00 00 ....
Warning: no suitable certificate found - continuing without client authentication
*** Certificate chain
<Empty>
***
*** ECDHClientKeyExchange
ECDH Public value: {.... }
[write] MD5 and SHA1 hashes: len = 77
main, WRITE: TLSv1.2 Handshake, length = 77
.1
INSSION KEYGEN:
PreMaster Secret:
0000: A2 ED 45 23 FE D5 CF 02 49 B2 28 1F 37 1A C6 EA ..E#....I.(.7...
0010: CF DE E7 E8 11 A5 2F 2D 1F CE 89 B4 BE D3 D3 92 ....../-........
CONNECTION KEYGEN:
Client Nonce:
0000: 5A F4 46 1C A1 65 28 10 49 E5 8A 47 8C 10 AD 98 Z.F..e(.I..G....
0010: 21 BA 57 20 DC 48 C2 84 B0 C9 FD 14 B3 41 0B 21 !.W .H.......A.!
Server Nonce:
0000: 5A F4 46 1D 0A 7D AA 8D E3 EE 0B 16 9A 20 D2 00 Z.F.......... ..
0010: DD 60 36 0C C3 8D 96 1B 94 24 E5 AB 7A C1 D7 14 .`6......$..z...
Master Secret:
0000: BA 3E FF B8 EB 4B 5E 70 0F 07 B9 00 F1 10 DD B6 .>...K^p........
0010: DF AC 69 87 21 B1 BE CD 5E 97 96 55 E4 4C 41 B3 ..i.!...^..U.LA.
0020: C8 0B FC 2E 4B 08 65 82 82 9A A6 0F AE 39 41 0E ....K.e......9A.
Client MAC write INcret:
0000: 77 34 7D 71 F5 5E 15 8E 14 0B BA A9 C0 11 15 A0 w4.q.^..........
0010: C1 AA B1 05 3A F0 87 1F 96 EC E0 19 AE 78 39 1B ....:........x9.
Server MAC write Secret:
0000: F7 CB D9 B4 53 D8 8E 37 25 3A E9 1D 1A D9 CB 3D ....S..7%:.....=
0010: 80 52 D5 D2 7C 66 AB 99 16 9E D7 EA CE 1F 6F 00 .R...f........o.
Client write key:
0000: 69 FD 1A C3 30 D3 0D 72 37 7F 43 4A A9 20 D5 4B i...0..r7.CJ. .K
Server write key:
0000: 86 C9 46 E0 D7 99 A9 24 3F 50 DA 26 C9 0B D8 26 ..F....$?P.&...&
... no IV derived for this protocol
main, WRITE: TLSv1.2 Change Cipher Spec, length = 1
[Raw write]: length = 6
0000: 14 03 03 00 01 01 ......
*** Finished
verify_data: { 104, 207, 194, 200, 118, 209, 56, 63, 206, 199, 95, 238 }
***
[write] MD5 and SHA1 hashes: len = 16
..
main, WRITE: TLSv1.2 Handshake, length = 80
main, waiting for close_notify or alert: state 1
[Raw read]: length = 5
0000: 15 03 03 00 02 .....
[Raw read]: length = 2
0000: 02 28 .(
main, READ: TLSv1.2 Alert, length = 2
main, RECV TLSv1.2 ALERT: fatal, handshake_failure
%% Invalidated: [INssion-1, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]
main, called closeSocket()
main, Exception while waiting for close javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
May 10, 2018 1:16:12 PM com.saurav.kumar.rest.impl.RestEasyClient sendRequest
INVERE: Error sending request
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2038)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1135)
最佳答案
我的实现有两个问题。
sudo/usr/java/default/bin/keytool -import -alias $file_name -file $file_name.crt -keystore 将证书安装到其中keystore.jks -storepass changeit -noprompt
”。当我尝试安装客户端证书时,它并没有安装整个证书链。它只是在没有任何 CA 证书的情况下为我的应用程序安装证书,而不是整个证书链,这就是为什么客户端没有发送任何证书,如下面的日志所示Warning: no suitable certificate found - continuing without client authentication
*** Certificate chain
<Empty>
***
org.apache.http.conn.ssl.StrictHostnameVerifier
类不支持 IPv6 验证。我需要覆盖此类,以便它能够正确处理 IPv6 地址并对其进行验证。SEVERE: Error sending request javax.net.ssl.SSLPeerUnverifiedException: Host name '[IPv6-IP]' does not match the certificate subject provided by the peer (CN_name_of_cert) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:465) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:395) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
关于security - 相互认证 : "Received fatal alert: handshake_failure" after ServerHelloDone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50276437/
我正在使用 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具有
我是一名优秀的程序员,十分优秀!