Articles of ssl

SSL会话未在Android WebView中重用

我一直在Android webview上尝试SSL会话重用。 我们注意到,如果连续请求在~5秒内发生,则会重新使用ssl会话。 在服务器(nginx)中,我们将ssl_session_timeout 10m设置为ssl_session_timeout 10m ,10分钟,保持活动为30秒。 好像Android webview控件在5秒后销毁session-id。 我们如何重用ssl会话至少30秒?

我们如何使用Android N网络安全配置获得自签名证书?

我试图测试N Developer Preview的网络安全配置function的所有方面。 我有大部分工作,但我被自签名证书场景困扰。 根据文档 ,Android N应该对PEM或DER文件感到满意,因为它适用于其他证书validation方案。 但是,我不能使用自签名证书,我尝试使用此function会继续运行证书路径validationexception。 为了测试,我使用thin作为服务器,在我的开发机器上运行,可以通过N模拟器访问。 自签名证书适用于我的开发计算机上的浏览器,如果我切换到运行thin sans SSL,应用程序可以很好地到达服务器。 所以,这不是连接问题。 我使用本网站上的说明创建了自签名证书: sudo openssl genrsa -out “/etc/[webserver]/ssl/example.key” 2048 sudo openssl req -new -key “/etc/[webserver]/ssl/example.key” \ -out “/etc/[webserver]/ssl/example.csr” sudo openssl x509 -req -days 365 -in “/etc/[webserver]/ssl/example.csr” \ -signkey “/etc/[webserver]/ssl/example.key” \ -out “/etc/[webserver]/ssl/example.crt” 根据此Stack Overflow回答 , example.crt文件是一个PEM文件。 在其他地方,我看到了创建“组合PEM”文件的说明 。 但是,我尝试了这两个,没有运气。 在网络安全配置方面,我尝试了和 。 后者看起来像: 但是,在任何一种情况下我都会得到validation错误。 作为原始资源,我们究竟应该将PEM或DER文件作为原始资源投入使用?

针对不安全的TrustManager的Google Play安全警报

在我的一个应用程序中,我使用带有自签名证书的HTTPS,并按照Android开发人员培训站点中的示例代码进行操作( https://developer.android.com/training/articles/security-ssl.html#UnknownCa ) 。 我最近收到以下警报,说当前的实施不安全: 安全警报 您的应用程序正在使用X509TrustManager接口与Apache HTTP客户端的不安全实现,从而导致安全漏洞。 有关详细信息,请参阅此Google帮助中心文章 ,其中包括修复漏洞的截止日期。 有人可以提供更多详细信息,除了上面链接的示例代码之外应该更新什么? 我应该实现自定义TrustManager吗? 如果是这样,它应该validation什么?

SSLSocket通过另一个SSLSocket

我正在尝试在Android应用程序中的另一个SSLSocket上创建一个SSLSocket 。 较低的连接是与安全Web代理 (基于SSL的HTTP代理)的SSL安全连接,上层连接用于HTTP over SSL(HTTPS)。 为此,我使用SSLSocketFactory的createSocket()函数,该函数允许传递一个现有的Socket来运行SSL连接,如下所示: private Socket doSSLHandshake(Socket socket, String host, int port) throws IOException { TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager(){ public X509Certificate[] getAcceptedIssuers(){ return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) {} public void checkServerTrusted(X509Certificate[] certs, String authType) {} } }; try { SSLContext sslContext = SSLContext.getInstance(“SSL”); sslContext.init(null, trustAllCerts, […]

移动应用程序中客户端SSL证书的安全性如何?

我想在我的Android / iOS应用程序和可访问Internet的后端服务之间进行安全通信,因此我正在调查HTTPS / SSL。 如果我创建自签名证书,然后将客户端证书放在应用程序中并使后端服务要求客户​​端证书, 这真的安全吗? 这就是我要问的原因。 似乎客户端证书可以通过询问.apk来“入侵”。 客户端证书只是一个字符串常量,对吧? 这意味着任何人都可以使用客户端证书来访问我的后端。 .apk(和iOS等价物)是否足够不透明以防止发现客户端证书 ?

Android 4.4.2 SSL握手中止

代码适用于我的Genymotion Android 4.4.4仿真器,但不适用于我正在使用的设备(4.4.2)。 我已经尝试了很多“信任所有证书”的解决方法,但无济于事(我认为这不是问题,因为证书是AOK)。 我想我已经确定了密码(使用桌面上的wireshark跟踪); TLS 0x00 0x1E似乎有点罕见? 知道怎么解决? 这是我的代码 StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); CloseableHttpClient client = HttpClientBuilder.create().setSSLSocketFactory(sslsf).build(); String baseURL = “https://mysite.co.uk/api/”; HttpGetHC4 request = new HttpGetHC4(baseURL + “/authenticate?user=abcd&password=1234”); CloseableHttpResponse response = client.execute(request); 而且错误; javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x6abff398: Failure in SSL library, usually a protocol error error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure […]

使用Android WebViewClient启用特定的SSL协议

我的应用程序使用WebViewClient与服务器建立SSL连接。 服务器配置为仅接受TLSv1.1及以上协议。 1)如何检查哪些SSL协议是a)支持和b)在设备上使用Android WebViewClient时默认启用。 2)如何为我的应用程序中使用的Android WebViewClient实例启用特定的SSL协议。 在其中一个运行Android 4.3的测试设备上,WebViewClient抛出onReceivedError回调,其描述为“无法执行SSL握手” Chrome日志如下: 01-29 15:58:00.073 5486 5525 W chromium_net:external / chromium / net / http / http_stream_factory_impl_job.cc:865:[0129/155800:警告:http_stream_factory_impl_job.cc(865)]回到SSLv3,因为主机是TLS不容忍的:10.209.126.125:443 01-29 15:58:00.083 5486 5525 E chromium_net:external / chromium / net / socket / ssl_client_socket_openssl.cc:792:[0129/155800:ERROR:ssl_client_socket_openssl.cc(792)]握手失败; 返回0,SSL错误代码5,net_error -107 我的应用程序还使用HttpClient和HttpsUrlConnection类来设置SSL连接。 在使用这些类时,我能够使用SSLSocket API来启用特定协议。 http://developer.android.com/reference/javax/net/ssl/SSLSocket.html#setEnabledProtocols(java.lang.String中[]) 我需要对WebViewClient做同样的事情。

javax.net.ssl.SSLHandshakeException:在握手时远程主机关闭连接,同时在bigquery中插入行

嗨,我正在研究Android应用程序,我已经集成了bigquery。 我发现有时我们在向大查询表插入数据时会遇到很多SSLexception。 我不知道如何处理这个问题。 请帮助究竟是什么原因导致这个问题。 这是相同的线程,但在进行流式插入api调用时没有回答Bigquery SSL错误 javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:946) ~[na:1.7.0_51] at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) ~[na:1.7.0_51] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) ~[na:1.7.0_51] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) ~[na:1.7.0_51] at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563) ~[na:1.7.0_51] at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[na:1.7.0_51] at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091) ~[na:1.7.0_51] at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) ~[na:1.7.0_51] at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77) ~[google-http-client-1.19.0.jar:1.19.0] at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:965) ~[google-http-client-1.19.0.jar:1.19.0] at com.google.api.client.googleapis.batch.BatchRequest.execute(BatchRequest.java:241) ~[google-api-client-1.19.1.jar:1.19.1] at com.livestream.analytics.datastorage.worker.InsertApiActor$$anonfun$2$$anonfun$4.apply(InsertApiActor.scala:131) ~[analytics-data-storage-worker_2.11-1.0.0.jar:1.0.0] at com.livestream.analytics.datastorage.worker.InsertApiActor$$anonfun$2$$anonfun$4.apply(InsertApiActor.scala:118) ~[analytics-data-storage-worker_2.11-1.0.0.jar:1.0.0] at com.livestream.analytics.common.store.bigquery.api.BigQueryApi$.withSyncClient(BigQueryApi.scala:71) ~[analytics-common_2.11-1.0.0.jar:1.0.0] […]

Android ssl:javax.net.ssl.SSLPeerUnverifiedException:没有对等证书(再次)

我有一个网站,我正在为一个RESTful服务启用ssl。 我们已在RapidSSL注册,安装了证书,并通过了RapidSSL检查程序 。 我可以使用各种浏览器访问该网站,包括Android浏览器(内置,Firefox和Opera)没有问题,没有警告。 但是,当我尝试使用我的Android应用程序访问它时,我得到以下exception: 08-11 20:04:05.586 363 381 E HttpProvider: Error executing request: No peer certificate 08-11 20:04:05.586 363 381 E HttpProvider: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate 08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:259) 08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93) 08-11 20:04:05.586 363 381 E HttpProvider: at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381) 08-11 20:04:05.586 363 381 […]

如何在使用React Native时实现SSL证书固定

我需要在我的反应本机应用程序中实现SSL证书固定。 我对SSL / TLS知之甚少,更不用说固定了。 我也不是一个本地移动开发人员,虽然我了解Java并且在这个项目上学习了Objective-C足以绕过它。 我开始搜索如何执行此任务。 React Native没有实现这个吗? 不,我的初步搜索引导我查看自2016年8月2日以来未收到任何活动的提案 。 从中我了解到react-native使用的OkHttp确实支持Pinning,但是我无法将其从Javascript中删除,这不是真正的要求,而是一个加号。 在Javascript中实现它。 虽然反应似乎使用了nodejs运行时,但它更像是一个浏览器而不是节点,这意味着它不支持所有本机模块,特别是https模块,我已经在本文后面实现了证书固定。 因此无法将其带入本机反应。 我尝试使用rn-nodeify,但模块不起作用。 自从我目前正在使用RN 0.33到RN 0.35以来,这是真的。 使用phonegap插件实现 我想过使用phongape-plugin但是因为我依赖于需要反应0.32+的库我不能使用react-native-cordova-plugin 只是本地做 虽然我不是本机应用程序开发人员,但我总是可以解决它,只是时间问题。 Android有证书固定 我了解到android支持SSL Pinning但是不成功,因为看起来这种方法在Android 7之前不起作用。以及仅适用于android。 底线 我已经用尽了几个方向,并将继续寻求更多本机实现,也许可以弄清楚如何配置OkHttp和RNNetworking然后可能会回到本地反应。 但是,IOS和Android已经有任何实现或指南吗?