Articles of https

android发送https发布请求到服务器没有弃用的metods

在我的应用程序中使用https发送请求,遵循此源答案 。 现在其中一些apache方法已被弃用。 任何人都可以帮我解决一个新的方法吗?

将HTTP发布请求更改为HTTPS发布请求:

我有这个方法: public static String getReportMetadata (String reportId, String sessionId, String url) throws Exception{ Map jsonValues = new HashMap(); jsonValues.put(“reportID”, reportId); jsonValues.put(“sessionID”, sessionId); JSONObject json = new JSONObject(jsonValues); DefaultHttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url + GET_REPORT_METADATA_ACTION); AbstractHttpEntity entity = new ByteArrayEntity(json.toString().getBytes(“UTF8”)); entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, “application/json”)); post.setEntity(entity); HttpResponse response = client.execute(post); return getContent(response); } […]

没有对等证书exception – 具有自签名证书的Volley和Android

我正在尝试让我的应用通过https与我的服务器通信。 由于我不想付费以获得由受信任的CA签署的服务器证书,因此解决方案是使用自签名证书。 所以,我创建了我的caconfig.cnf如下: [ ca ] default_ca = CA_default # The default ca section [ CA_default ] dir = ./demoCA # top dir database = $dir/index.txt # index file. new_certs_dir = $dir/newcerts # new certs dir certificate = $dir/cacert.pem # The CA cert serial = $dir/serial # serial no file private_key = $dir/private/cakey.pem # CA […]

使用Android的证书进行SSL客户端身份validation

我正在编写一个连接到服务器以调用某些Web服务的Android应用程序。 此服务器使用SSL的自签名证书,并且需要客户端证书进行身份validation。 当我使用Android Chrome浏览器或使用Iphone的safari浏览器连接到服务器时,它可以完美运行。 SSL连接正在建立,客户端证书身份validation正在成功并重定向到我的Webservices。 但是当我连接其他浏览器时,比如股票android浏览器,海豚等,它会导致网络超时。 此外,当我连接我的Android应用程序时,我收到以下错误: javax.net.ssl.SSLException: Read error: ssl=0x12746b8: I/O error during system call, Connection reset by peer at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_read(Native Method) at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:671) at libcore.io.Streams.readSingleByte(Streams.java:41) at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:655) at libcore.io.Streams.readAsciiLine(Streams.java:201) at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:544) 我关注了chariotsolutions的博客: http : //chariotsolutions.com/blog/post/https-with-client-certificates-on/ 我还使用portecle GUI将客户端证书转换为BKS格式。 这是我的代码: private static final String USER_AGENT = “Mozilla/5.0 (Linux; U; Android 4.0.3; et-ee; GT-P5100 Build/IML74K) AppleWebKit/534.30 […]

javax.net.ssl.SSLHandshakeException:Android 7.0中握手失败

我正在调用API登录,但我在Android 7.0中遇到ssl握手错误,除了这个版本一切正常。 我正在使用改造。 以下是错误。 SSL握手终止:ssl = 0xcbcd0340:SSL库失败,通常是协议错误错误:1000043e:SSL例程:OPENSSL_internal:TLSV1_ALERT_INAPPROPRIATE_FALLBACK(external / boringssl / src / ssl / s3_pkt.c:610 0xebc87640:0x00000001) 还有人说要添加以下代码以便解决这个问题,但仍然没有运气, ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) .tlsVersions(TlsVersion.TLS_1_2) .cipherSuites( CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256) .build(); okHttpClient.connectionSpecs(Collections.singletonList(spec)); 我甚至试图放弃信任每一个证书,但仍然没有运气。 以下是代码。 public static OkHttpClient.Builder sslSocketFactory(OkHttpClient.Builder okHttpClient) { try { // Create a trust manager that does not validate certificate chains final TrustManager[] trustAllCerts = new […]

如何允许所有HTTPSurl在CouchbaseLite Android中同步

我有一个使用Couchbase Lite的应用程序。 直到现在我正在使用http,现在我们需要做一点安全。 那么如何让所有HTTPSurl与CouchbaseLite Android同步?

Android https握手终止exception

我在尝试发出https请求时随机获取此exception,有时它会起作用,有时无法与此exception进行握手。 而我正在尝试使用棒棒糖和棉花糖。 javax.net.ssl.SSLProtocolException: SSL handshake terminated: ssl=0x9d397c00: Failure in SSL library, usually a protocol error error:100c543e:SSL routines:ssl3_read_bytes:TLSV1_ALERT_INAPPROPRIATE_FALLBACK (external/boringssl/src/ssl/s3_pkt.c:972 0x9b0bb3e0:0x00000001) 这就是我提出请求的方式 URL url; HttpURLConnection connection; try { String serverUrl = “…”; url = new URL(serverUrl); connection = (HttpURLConnection) url.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { Log.i(TAG, “OK”); […]

没有同行证书。 不确定要走哪条路线

我正试图用我的应用程序点击httpsurl。 我已经按照本教程 。 我创建的商店有正确的CA. 但是,当我尝试建立连接时,我收到以下错误: ERROR/IOException(1843): webPost: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate 我已经完成了一些有关此错误的阅读,人们决定允许他们的应用程序接受所有证书。 我认为这不是真的可以接受。 我应该检查一下,看看问题是什么?

Https连接,Android 2.3和4之间的差异

我正在开发一个从不同服务器(http和https)检索图像的项目。 我发现这个有用的Q / A以避免Android 2.3中No peer certificate error的问题,但我无法理解为什么在Android 4(> 3)中No peer certificate error此问题(“ No peer certificate error ”)。 如果我错了,请纠正我: 在Android 2.3中,HTTPS连接执行整个证书检查(和握手); 在Android> 3中,即使握手失败,也会建立HTTPS连接(例如:我的应用程序,因为对等方没有证书)。 这些Android版本有什么区别? 为什么我需要相信所有 Android 2.3而不是Android 4? 为什么在Android 2.3中我收到以下exception: “javax.net.ssl.SSLPeerUnverifiedException: No peer certificate error”而在Android 4中一切正常并且连接已建立? 一切都与Android Honeycomb中引入的SNI 服务器名称指示有关吗?

为什么有些HTTPS请求无法在Fiddler上解密,而有些却有效?

场景:我试图通过Fiddler代理请求调试Android应用程序。 我在Android设备上安装了FiddlerRoot证书,SSL解密适用于大多数请求 ,但对于其他请求,我只能看到HTTPS Connect,而Fiddler日志中没有其他内容。 我认为这可能是基于SSL的图像请求无法解密。 我已经仔细检查了“隐藏图像”是否已关闭等。检索到的图像托管在另一个域上,而不是应用程序与之对话的主API。 什么可能导致这种行为? 如何在Fiddler中显示图像请求? 我正在使用最新的Fiddler4。