Articles of ssl

Android SSL – 无对等证书

每当此代码运行时,我都会收到“No Peer Certificate”错误。 SSL证书有效,从Namecheap(PositiveSSL)购买。 它之前有CA crt,并且在Android浏览器中打开正常。 HTTP服务器:nginx 码: public void postData() { // Add your data List nameValuePairs = new ArrayList(2); nameValuePairs.add(new BasicNameValuePair(“string”, “myfirststring”)); try { HttpPost post = new HttpPost(new URI(“https://example.com/submit”)); post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); KeyStore trusted = KeyStore.getInstance(“BKS”); trusted.load(null, “”.toCharArray()); SSLSocketFactory sslf = new SSLSocketFactory(trusted); sslf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme (“https”, sslf, […]

android为什么会得到错误的ssl证书? (两个域,一个服务器)

我有两个域: foo.net和bar.com 。 它们都具有SSL证书,并且在所有桌面和移动浏览器中都能很好地运行。 它们托管在使用nginx配置的同一台服务器上。 但是,当我从本机Android应用程序中向域发出请求时,它会以某种方式从错误的域获取证书! 这会导致IOexception: request = new HttpPost(“https://foo.net/api/v1/baz”); request.setHeader(“Authorization”, “user:pass”); response = httpClient.execute(request); … javax.net.ssl.SSLException: hostname in certificate didn’t match: != OR OR 什么会导致android / java尝试使用bar.com的证书时,其他每个措施似乎都表明服务器配置正确? nginx访问或错误日志中没有任何内容。 在我的android项目中没有提到bar.com 。 编辑:我不知道为什么,但似乎服务器使用bar.com的证书作为服务器IP https://198.245.xx.xxx

如何从Android进行HTTPS POST?

我想做一个HTTPS post方法从我的Android应用程序发送一些数据到我的网站。 我首先使用了HttpURLConnection ,它的HTTP URL工作正常。 我的生产网站使用HTTPS,我想使用HttpsURLConnection发送相同的POST。 有人可以帮我正确使用课程吗? 我在这个链接find了一些来源: KeyStore keyStore = …; TrustManagerFactory tmf = TrustManagerFactory.getInstance(“X509”); tmf.init(keyStore); SSLContext context = SSLContext.getInstance(“TLS”); context.init(null, tmf.getTrustManagers(), null); URL url = new URL(“https://www.example.com/”); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); urlConnection.setSSLSocketFactory(context.getSocketFactory()); InputStream in = urlConnection.getInputStream(); 应该是KeyStore keyStore = …;的值KeyStore keyStore = …; ? 我尝试使用相同的HttpURLConnection发送数据,但我看到一些POST数据丢失或出错。 我试过这个问题的方法。 我在下面粘贴我的代码 String urlParameters=”dateTime=” + URLEncoder.encode(dateTime,”UTF-8″)+ “&mobileNum=”+URLEncoder.encode(mobileNum,”UTF-8”); […]

既然在Android上不推荐使用SSLSocketFactory,那么处理客户端证书身份validation的最佳方法是什么?

我正在开发一款需要客户端证书身份validation(带有PKCS 12文件)的Android应用。 在所有apache.http.*被弃用之后,我们已经开始在我们的网络层上进行重构,我们决定使用OkHttp作为替代品,到目前为止我非常喜欢它。 但是,我没有find任何其他方法来处理客户端证书auth而不使用SSLSocketFactory ,OkHttp或其他任何事情。 那么在这种特殊情况下,最好的行动方案是什么呢? OkHttp还有另一种方法来处理这种身份validation吗?

Android 4.4及更低版本的SSLHandshakeException

当我想用POST方法连接Paypal Rest API时,我遇到了问题。 当我不使用modernhttpclient时,我收到了错误 The authentication or decryption has failed. 但是,当我使用modernhttpclient时,它可以在Android API 23(Marshmallow)中工作,当我在Android API 19(设备)和Android API 16(模拟器)中测试时,我收到错误 ex {Javax.Net.Ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=…} Javax.Net.Ssl.SSLHandshakeException 根据ssl握手exceptionandroid我需要使用自定义套接字工厂。 但是如何在HttpClient或modernHttpClient中实现它呢?

Android在OKHttp中启用TLSv1.2

我正在使用OKHttp进行我的项目。 我想为我的服务电话启用TLSv1.2。 任何人都可以告诉我如何启用它。

SSL套接字连接

如何创建SSL套接字连接? 我真的需要创建一个密钥库? 这个密钥库应该与我的所有客户端应用程序共享? 我用以下代码创建了一个服务器: SSLServerSocketFactory sslserversocketfactory = (SSLServerSocketFactory) SSLServerSocketFactory .getDefault(); SSLServerSocket sslserversocket = (SSLServerSocket) sslserversocketfactory .createServerSocket(ServerProperties.getInstance() .getVSSPAuthenticationPort()); 我在android上用以下代码创建了一个客户端: SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory .getDefault(); SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket( host, authPort); sslsocket.startHandshake(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter( sslsocket.getOutputStream())); BufferedReader reader = new BufferedReader(new InputStreamReader( sslsocket.getInputStream())); 但是当我尝试连接时,会抛出以下错误: javax.net.ssl.SSLHandshakeException: no cipher suites in common at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) […]

如何在Android平台上启用SSL调试?

有没有类似于在Java桌面应用程序的命令行中设置-D javax.net.debug=ssl ,但对于Android? 我已经尝试通过System.setProperty(“javax.net.debug”, “ssl”);在代码中设置它System.setProperty(“javax.net.debug”, “ssl”); 但那没用。 如果没有办法启用此属性,是否至少有另一种方法来调试SSL连接的客户端? 编辑:只是为了澄清,这是指原始SSL套接字(SSLSocket和SSLSocketFactory),而不是Apache库或任何其他网络库。

CertPathValidatorException:找不到证书路径的信任锚

我将HTTPPinning添加到OKHTTPClient,示例代码是: OkHttpClient client = new OkHttpClient(); client.setSslSocketFactory(getPinnedCertSslSocketFactory(context)); private SSLSocketFactory getPinnedCertSslSocketFactory(Context context) { try { KeyStore trusted = KeyStore.getInstance(“BKS”); InputStream incontext.getResources().openRawResource(R.raw.prod_keystore); trusted.load(in, “venkat@123”.toCharArray()); SSLContext sslContext = SSLContext.getInstance(“TLS”); TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(trusted); sslContext.init(null, trustManagerFactory.getTrustManagers(), null); return sslContext.getSocketFactory(); } catch (Exception e) { Log.e(“MyApp”, e.getMessage(), e); } return null; } 我将应用程序上传到Playstore,从过去1年开始,它就运行良好。 但从最近1周开始,它给出了以下问题,我使用了版本com.squareup.okhttp的OkHttp:okhttp:2.7.4 java.security.cert.CertPathValidatorException: Trust anchor for […]

在HttpsURLConnection中禁用SSL作为协议

由于POODLE漏洞,我在Amazon AWS中托管的服务器不再支持SSLv3。 因此,我的Android应用程序对服务器执行的第一个HTTPS连接会在建立连接时导致错误。 Error reading server response: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x77d8ab68: Failure in SSL library, usually a protocol error error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x7339ad74:0x00000000) [….] Caused by: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x77d8ab68: Failure in SSL library, usually a protocol error error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x7339ad74:0x00000000) at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:448) at […]