使用Android WebView连接到具有客户端证书的安全服务器
WebView或更具体地说,可以使用cordovawebview,使用客户端证书对服务器进行身份验证? 我了解本机浏览器可以使用客户端证书,但我正在尝试让PhoneGap Android应用程序与需要客户端证书工作并且看不到如何工作的服务器对话.我尝试了在Google上看到的各种方法,但它们并未从事Android版本4.0或更高版本.任何建议都将被大大提高. 解决方案 这是不可能的. SDK中没有回答客户证书挑战所需的代码.如果您查看Android SDK中的WebViewClient的来源,您将看到此方法 /** * Notify the host application to handle a SSL client certificate * request (display the request to the user and ask whether to * proceed with a client certificate or not). The
安卓和客户端证书
我已经搜索了几个星期,似乎在任何地方都找不到答案.我正在尝试为Android做以下操作.该代码来自我写的C#应用​​程序,但将其移植到Android. Web端点需要将证书附加到相互认证的请求中,以进行Web服务调用. string certThumbprint = "E1313F6A2D770783868755D016CE748F6A9B0028"; X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser); try { certStore.Open(OpenFlags.ReadOnly); } catch (Exception e) { if (e is CryptographicException)
6 2024-02-05
编程技术问答社区
如何在Android中使用p12证书(客户端证书)
我正在尝试在Android中使用客户证书. 我有一个.p12文件,我想用来对服务器进行身份验证. 我正在使用portecle将.p12文件转换为.bks文件,但我似乎不工作. 这是代码: package com.pa1406.SECURE; import java.io.InputStream; import java.security.KeyStore; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.TrustManagerFactory; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.co
4 2024-02-01
编程技术问答社区
要求自动或用户选择合适的客户证书
我正在开发一个可能连接到不同服务器的混合动力Cordova应用程序.其中一些确实需要客户证书. 在Android手机上安装了相应的root Cert +客户端证书. 在Chrome浏览器上,我获取以下对话框,以选择Web连接的相应客户端证书. 带有Cordova插件 cordova-cordova-cordova-client-client-cert-cert-authentication 同样的对话框在WebView中弹出了HTTP请求. 我的问题是如何在自动证书选择在本机Android 平台上,而无需明确声明相应的客户端证书.还是用户选择证书类似的东西类似于Chrome上的实现? 这是当前的实现,它引发了握手例外: try { URL url = new URL( versionUrl ); HttpsURLConnection urlConnection = ( HttpsURLConnection ) url.openConne
2 2024-01-31
编程技术问答社区
客户端SSL证书在移动应用中的安全性如何?
我想在我的Android/iOS应用程序和可访问Internet的后端服务之间进行安全的通信,因此我正在研究HTTPS/SSL. 如果我创建了自签名的证书,则将客户证书放在应用程序中,并导致后端服务要求 客户端证书,这是否真正安全?/p> 这就是我要问的原因.看来客户证书可以通过询问.APK来"黑客入侵".客户端证书只是字符串常数,对吗?这意味着任何人都可以使用客户端证书访问我的后端. .apk(和iOS等效)是否足够不透明,以防止客户证书被发现? 解决方案 证书是无害的.它是需要保护的私钥,并且仅与设备本身一样安全,没有更安全的.使用该应用程序将证书和私钥分配仅意味着拥有该应用程序的任何人都有密钥,因此它不会为您提供任何安全性.我认为您需要某种后安装后的注册步骤. 其他解决方案 您是否在SSL上使用证书进行客户端身份验证?这对这个问题真的很重要.您存储在应用程序中的任何私钥都可以访问攻击者.每个客户都应该拥有自己的证书和钥匙对,以防止大规模妥协.您的服务器还应强
0 2024-01-29
编程技术问答社区
AWS EC2应用负载平衡器+双向SSL?
这是否可以使用AWS应用程序负载平衡器并使用双向SSL(客户端证书)? 我当前的设置使用经典的ELB通过TCP转发到Web服务器端点.现在,我需要使用URL路由流量,并想在可能的情况下使用AWS应用程序负载平衡器进行操作. 如果没有,关于如何在AWS中使用URL路由流量的任何建议? 解决方案 不支持这.为了使AWS应用程序负载平衡器(ALB)基于路径路线,必须检查HTTP内容(应用程序/第7层). TCP转发负载平衡器仅查看TCP数据包(第4层),切勿检查实际内容(需要基于路径路由). 当然,解决的工作将使用AWS证书经理,并让他们为您处理TLS/SSL终止.然后,您可以使用ALB根据路径进行路线. 其他解决方案 使用PassTrhu选项使用经典负载平衡器或网络负载平衡器. Aplication Load Balancers将从请求中剥离客户证书
4 2024-01-26
编程技术问答社区
aiohttp和客户端的SSL证书
我最近从flask + requests搬到aiohttp及其异步http客户端. 在我的情况下,我需要通过HTTPS(带有自定义证书)呼叫API并随附客户端证书. 对于第一部分(验证自定义证书),支持是明确的清楚地记录了int docs ,它运行良好. 另一方面,在第二部分中,我似乎无法找到一种简单的方法来附上自定义SSL客户端证书以授权客户端. 你们知道该怎么做吗?非常感谢! 解决方案 编辑:我已经提交了 pr 有关该主题的AIOHTTP文档的更新,并已合并. 对于任何将来可能会遇到这个问题的人. tl:dr import ssl import aiohttp ssl_ctx = ssl.create_default_context(cafile='/path_to_client_root_ca') ssl_ctx.load_cert_chain('/path_to_client_public_key.pem', '/pat
0 2024-01-20
编程技术问答社区
为LDAPS连接认证自签名证书
我想从Linux(Linux 3.2.0-4-AMD64#1 SMP Debian 3.2.51-1 X86_64 GNU/Linux)客户端将安全的LDAP连接(LDAP)(LDAP)进行更改,以更改用户通过PHP,Active Directory中的密码. 为此,我在服务器上创建了一个自签名的证书(使用Windows Server Manager),但是当我尝试连接时,我会收到以下错误(通过打开调试选项: ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);): ldap_create ldap_url_parse_ext(ldaps://xxx.xxx.xxx.xxx) ldap_bind_s
6 2024-01-10
编程技术问答社区
响应.错误 "Forbidden" in IdentityServer3 Flows.ClientCredentials
我在我的身份证中有一个客户3 new Client { ClientName = "Client Credentials Flow Client With Certificate", Enabled = true, ClientId = "cc.WithCertificate", Flow = Flows.ClientCredentials, ClientSecrets = new List { new Secret { Value = "61B754C541BBCFC6A45A9E9EC5E47D8702B78C29", Type = Constants.SecretTypes.X509CertificateThumbprint, Description = "Cl
6 2024-01-09
编程技术问答社区
限制iPhone应用对服务器的访问
我正在构建客户端/服务器iPhone游戏,我想在其中阻止第三方客户访问服务器.这有两个原因:首先,我的收入模型是出售客户并赠送服务,其次,我想避免促进作弊的客户的扩散. 我正在编写Rails中的第一个服务器,但我正在考虑在某个时候搬到Erlang. 我正在考虑两种方法: 生成一个"用户名"(例如GUID),并使用该应用程序的秘密进行HASH(SHA256或MD5),并将结果用作"密码".当客户端与服务器连接时,这两者都是通过HTTPS通过HTTP Basic Auth发送的.服务器具有相同秘密的用户名,并确保它们匹配. 使用iPhone应用运送客户证书.该服务器的配置为需要客户证书. 第一种方法具有简单,低开销的优点,并且可以更容易地在应用程序中混淆秘密. 第二种方法经过了很好的测试和经过证实,但开销可能更高.但是,我对客户证书的了解是在"在飞行飞机上杂志中阅读有关它的内容"级别.这将产生多少带宽和处理开销?每个请求传输的实际数据是按千字节的命令.
2 2024-01-09
编程技术问答社区
迫使ASP.NET WebAPI客户端在没有CA匹配的情况下也要发送一个客户端证书
我有一个特定的应用程序,该应用程序需要使用客户端证书进行HTTPS请求的相互认证.该服务器具有灵活的证书验证策略,该策略允许其接受服务器证书存储中不存在的自签名客户端证书.众所周知,使用Curl作为客户端可以正常工作. 我通过测试和数据包嗅探确定的是,Microsoft的ASP.NET HttpClient在SSL握手中试图过于聪明.该特定客户端仅使用客户端证书(来自WebRequestHandler.ClientCertificates集合),如果它具有信任链,则仅对服务器的一个受信任的根之一.我观察到的是,如果没有信任链的证书,那么客户在握手期间根本不会发送证书. 这是可以理解的默认行为,但过于限制,似乎没有办法将其关闭.我已经尝试了各种其他WebRequestHandler属性,包括AuthenticationLevel和ClientCertificateOptions,但无济于事. 是否有一种方法可以强制HttpClient在ClientCertificates
6 2024-01-08
编程技术问答社区
.NET通过TLS 1.2丢弃客户证书
你好,似乎已经问过某种形式的这个问题,但许多方式没有答案,或者答案不适用于我. 我们有一项琐碎的小.NET服务,该服务呼吁仅支持TLS 1.2的第三方API. var requestHandler = new WebRequestHandler(); var clientCert = GetClientCert("THUMBPRINT"); requestHandler.ClientCertificates.Add(clientCert); var encodedHeader = "FOO"; var httpClient = new HttpClient(requestHandler) { BaseAddress = new Uri("https://foo.bar.com/rest/api/") }; httpClient.DefaultRequestHeaders.Auth
2 2024-01-06
编程技术问答社区
不使用钥匙库的客户证书
我试图弄清楚是否有任何方法可以使用.NET客户端使用客户端证书而不以任何方式涉及Windows键盘. 我有这样的代码段: test1.Service s = new test1.Service(); X509Certificate c = X509Certificate.CreateFromCertFile(@"C:\test.pem"); s.ClientCertificates.Add(c); int result = s.TestMethod(); 但是,仅当我在证书存储中安装了" test.pem"中引用的证书时,这才有效.我认为这是因为关键是谈判所必需的.如果我在商店中没有证书/密钥,则不会随请求发送证书. 我想做的是能够从文件或文件中同时提供证书和私钥,而不是以任何方式涉及Windows证书存储. 有什么方法可以做到吗? 解决方案 我要发布我自己帖子的答案,但会让它开放,看看其他人是否可以解决它. 基本上,我在刺.如果您有一个PKCS
2 2024-01-06
编程技术问答社区
HttpClient拒绝发送自签名的客户证书
我正在尝试发送使用以下代码的HttpClient自我签名客户证书: var handler = new HttpClientHandler(); handler.ClientCertificateOptions = ClientCertificateOption.Manual; handler.ClientCertificates.Add(GetClientCertificate()); //Loads cert from a .pfx file var client = new HttpClient(handler); PerformRequest(client); 我已经看过十二个,所以与此相关的帖子,但没有解决我的问题. 要注意的事情: 我已经通过Wireshark验证了服务器正在请求客户端证书,但HttpClient没有发送. 当我使用Postman执行请求 时,发送了完全相同的证书(使用的.pfx文件相同) 我尝试通过handler.Ssl
4 2024-01-06
编程技术问答社区
Java ftps连接,TrustManager解释(使用filezilla服务器)。
我已经编写了一个程序(显然是从网络复制,并根据我的需求修改了几乎没有修改!),以使用Apache FTP API和使用Filezilla Server创建本地服务器,以进行文件下载/上传. 一切正常.问题是我没有得到我们必须创建信任经理的部分. 代码: FTPSClient ftpsClient= null; SSLContext sslContext = SSLContext.getInstance(protocol); TrustManager tm = new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { System.out.println("getAcceptedIssuers------"); return null; } @Override public void checkClientTrusted(X5
8 2023-12-15
编程技术问答社区
无用户服务的Spring Security X.509认证
我正在使用Spring Security(v3.1.3)进行X.509在我的Web应用程序中的身份验证.用户和角色存储在数据库中,但我实际上不需要这样做,因为客户端证书的中枢性符合" [角色] - [用户名]"架构,这意味着我已经具有证书本身的用户名和角色.那么,如何在没有太多努力的情况下消除数据库呢?我应该编写自己的用户服务实现,哪些将填充用户访问,还是有更多优雅的方法? 解决方案 是的,最简单的选项可能是编写自定义AuthenticationUserDetailsService.实现将是这样的: UserDetails loadUserDetails(PreAuthenticatedAuthenticationToken token) { X509Certificate certificate = (X509Certificate[)token.getCredentials();
Flutter/Dart语言中的客户证书认证
我在证书世界中是相当新的.我决定创建一个有义务使用证书访问API的应用程序. 我创建了一个自签名的CA证书,SSL证书和客户证书.我将它们导入Windows Server并正确配置了IIS.我可以从浏览器(Google Chrome)向API提出clientcertificate.pfx文件的请求. PFX证书通过MMC导入到个人用户商店.为了创建PFX文件,我使用了.cert和.pvk文件. 到目前为止很好. 现在,我正在尝试从DART提出一个请求,并且不知道我应该将哪些文件发送给API. 我应该发送PFX文件吗?还是.cert和.pvk文件? 你做过吗?有人可以帮助我了解这一过程吗? 我已经阅读了很多网站,但仍然没有找到答案. 在移动开发世界中,我也是全新的. 解决方案 dart的HttpClient可以服用SecurityContext. 添加自定义信任的证书授权机构,或发送给客户 请求一个的服务器的证书,通过SecurityContext对象 作为
16 2023-12-15
编程技术问答社区
在spring的resttemplate中,在每个请求中发送客户证书的正确方式是什么?
我想在我的春季应用程序中消耗REST服务.要访问该服务,我有一个客户端证书(自签名和.jks格式)供授权. 对休息服务进行身份验证的正确方法是什么? 这是我的要求: public List getInfo() throws RestClientException, URISyntaxException { HttpEntity httpEntity = new HttpEntity(null, new HttpHeaders()); ResponseEntity resp = restOperations.exchange( new URI(BASE_URL + "/Info"), HttpMethod.GET, httpEntity, Info[].class); return Arrays.asList(resp.getBody()); } 解决方案
8 2023-12-15
编程技术问答社区
在机器上没有安装PFX的情况下,用客户证书进行HTTP请求?
我有一个小型控制台应用程序,该应用程序使用客户端证书制作httpwebrequest: X509Certificate Cert = X509Certificate.CreateFromCertFile("JohnDoe.cer"); HttpWebRequest Request = (HttpWebRequest) WebRequest.Create("https://10.135.12.166:4434"); Request.ClientCertificates.Add(Cert); Request.UserAgent = "Client Cert Sample"; Request.Method = "GET"; HttpWebResponse Response = (HttpWebResponse) Request.GetResponse(); 当我在计算机上执行此代码时,我将可以访问相应的.pfx文件,并且我相信使用 this thread 我能
2 2023-12-15
编程技术问答社区
IE在TLS相互认证中不发送客户证书
我正在尝试使用第三方API建立TLS相互认证.客户端证书的配置正常,当我尝试通过Chrome访问终点URL时,它可以正常工作(Chrome要求在消息框中确认证书,当我执行此内容时,页面显示了其内容). 当我尝试使用IE时,它不起作用并显示此消息 Cannot securely connect to this page This might be because the site uses outdated or unsafe TLS security settings. If this keeps happening, try contacting the website’s owner. Your TLS security settings aren’t set to the defaults, which could also be causing this error. 所以我将细节记录到Wireshark,这就是它的外观 当我更多地挖掘详细信息时,我可以看到客
6 2023-12-15
编程技术问答社区