Articles of ssl

在Android 4 ICS上使用SSL客户端证书的WebView

我在Android上的本地WebView有问题。 我需要使用SSL客户端证书与网站进行身份validation。 Android WebView似乎不支持这一点。 作为解决方法,我使用了WebView的修改版本: https://github.com/yonekawa/webview-with-client-certificate 修改后的WebView通过将正确configuration的SslSocketFactory注入到标准Android WebView中来工作。 这在Android 2.x设备上正常工作。 但是,使用Android 4 ICS,它不再工作。 SslSocketFactory在ICS中仍然存在,但似乎不再使用。 所以我的问题是:有谁成功地在ICS上configurationAndroid WebView,以便它可以与客户端证书一起使用? 或者有其他的select吗? 我已经尝试过了: 将SSL客户端证书导入到Android密钥存储库中,并仅使用WebView而不做任何修改。 这不起作用,客户端证书不会与请求一起发送。 不过,它在本地浏览器中工作。 使用HttpClient自己创buildSSL连接,获取网站的HTML并将其交给WebView。 这基本上工作,但我需要拦截WebView所做的所有请求,并自己处理它们。 但是,WebView不提供POST请求的数据,这使得这种方法对我无法使用。

如何将请求代理到api.twitter.com,包括SSL证书?

我正在使用Twitter的新的面向Android的Fabric SDK 。 我已经在我的Mac上设置了Charles作为代理,所以我可以分析API响应中的JSON负载。 Charles中的SSL代理已启用,访问权限已授予我的testing设备。 但是,查尔斯向我展示了任何向Twitter发送请求的错误: url https://api.twitter.com 状态失败 SSLHandshake 失败 :收到致命警报:certificate_unknown Logcat显示我: retrofit.RetrofitError: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:306) at com.squareup.okhttp.Connection.upgradeToTls(Connection.java:241) at com.squareup.okhttp.Connection.connect(Connection.java:158) at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:174) at com.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:120) Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. at […]

SSL断开的pipe道

我在我的应用程序和somtimes(如果我有大量的Post数据)POST请求,发生以下错误: avax.net.ssl.SSLException:写入错误:ssl = 0x2f0610:系统调用期间发生I / O错误,Broken pipe 同时在下面的代码中执行http.execute(httpost)。 有人知道如何避免这种情况吗? 我尝试使用AndroidHttpClient,但无法find一个有效的基本身份validation方式而我尝试了一个HttpsUrlConnection,但得到相同的错误。 public static String makePOSTRequest(String s, List<NameValuePair> nvps, String encoding) { String ret = ""; UsernamePasswordCredentials c = new UsernamePasswordCredentials("XXX", "YYY"); BasicCredentialsProvider cP = new BasicCredentialsProvider(); cP.setCredentials(AuthScope.ANY, c); HttpParams httpParams = new BasicHttpParams(); int connection_Timeout = 5000; HttpConnectionParams.setConnectionTimeout(httpParams, connection_Timeout); HttpConnectionParams.setSoTimeout(httpParams, connection_Timeout); DefaultHttpClient http = new DefaultHttpClient(httpParams); […]

如何在android上使用多实体的SSL

以下是我如何使用appache将数据发布到url的代码。 应用程序与后端交互的主要逻辑是将数据发布到URL(PHP),并且PHP运行与数据库一起工作的逻辑。 那么,我想知道如何在其上实现SSL? 或者我只需要更改PHP程序,并将android侧POST到以“https”而不是“http”开头的网站? 谢谢 protected class FormHandler extends AsyncTask<Object, Void, JSONObject> { private FormListener listener; private ProgressDialog pd; public FormHandler() { pd = ProgressDialog.show(ctx,"", ctx.getResources().getString(R.string.loading),true); } @Override protected JSONObject doInBackground(Object… params) { MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); listener = (FormListener) params[0]; // WordPress default parameter builder.addTextBody("_wpcf7", "610"); builder.addTextBody("_wpcf7_version", "3.7.2"); builder.addTextBody("_wpcf7_locale", "en_US"); builder.addTextBody("_wpcf7_unit_tag", "wpcf7-f610-p611-o1"); builder.addTextBody("_wpnonce", […]

Android HttpsUrlConnection javax.net.ssl.SSLException当使用本地信任库时,由对等握手错误closures的连接

我在使用HttpsUrlConnection对象获取Android连接到一个简单的OpenSSL服务器时遇到了麻烦(我已经通过StackOverflow和一些在线教程进行了梳理,并且非常HttpsUrlConnection线路的示例,我仍然无法弄清楚为什么当我使用我的本地信任库时我的信息被破坏了)。 我目前有一个Android活动,尝试连接到一个简单的OpenSSL server (我可以使用OpenSSL客户端连接到我的服务器),一旦HttpsUrlConnection.connect()被调用,我收到一个“ javax.net.ssl.SSLException: Connection closed by peer" error during the SSL handshake. 也许我正在设置我的示例服务器不正确? 注意事项: 目前没有客户授权 加载默认信任存储时,能够连接到https://www.google.com 无法使用自签名证书连接到本地主机上的服务器 不想相信所有的证书 不想使用Apache HttpClient 只想使用本地信任库 与充气城堡创build当地的信任存储 我能够正确加载信任库 在代理防火墙后面,在我的android虚拟设备上设置代理 AVD设置为Android 4.1 API 16 。 我已经尝试过的事情: 连接到127.0.0.1 and 10.0.2.2 使用新的SecureRandom() with the SSLContext.init() 使用'URL u = new URL("https", "10.0.2.2", 443, "/");'创buildURL 'URL u = new URL("https", "10.0.2.2", 443, "/");' […]

java.security.cert.CertPathValidatorException:未find证书path的信任锚点。 Android 2.3

在我的服务器(生产服务器),我有一个goDaddy ssl证书。 我有iOS和Android应用程序连接到服务器,iOS连接没有问题,Android与版本4. *一切都很好,但设备与2.3。*我总是得到一个SSLHandshakeException。 我完全喜欢Android开发者页面( https://developer.android.com/training/articles/security-ssl.html )。 我已经在这里看到类似的线程在这里( 这里 ),但没有任何帮助。 然后我看到这个线程谈论扩展密钥的使用,但是在debugging时,我得到以下信息: [2]: OID: 2.5.29.37, Critical: false Extended Key Usage: [ "1.3.6.1.5.5.7.3.1", "1.3.6.1.5.5.7.3.2" ] 所以我猜这个证书不是“强制”扩展密钥的使用。 另外在这个线程还有一些其他可能的原因,如date/时间完全错误,这些都不存在。 考虑到这一点,我现在不知道问题出在哪里。 有什么build议么? 编辑: StackTrace下面: 08-04 16:54:30.139: W/System.err(4832): Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 08-04 16:54:30.149: W/System.err(4832): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:161) 08-04 16:54:30.149: W/System.err(4832): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:664) 08-04 16:54:30.149: […]

HTTPS安全证书不可信错误在手机上通过openshift服务器

我正在openshift上启动一个应用程序。 我从namecheap购买了comodo positive ssl,然后按照说明在openshift上安装。 它在桌面浏览器上正常工作,但在Android浏览器上出现以下“不可信”错误。 我没有试过IOS。 我上传下列文件openshift: stylistcity_com.crt server.key 其他文件我没有使用包括: server.csr server.pass.key AddTrustExternalCARoot.crt PositiveSSLCA2.crt 任何帮助,将不胜感激。

如何在Android上启用SSL套接字的自签名证书?

我有一个自签名的服务器证书(cert.pem),需要在Android应用程序中为SSL套接字启用它。 理想情况下,我想将代码打包为.jar文件,而不需要外部证书文件(即将其包含在代码中)。 有了这个代码,我可以接受所有证书,这不是我想要的: SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, new TrustManager [] { new MyTrustManager() }, new SecureRandom()); 我是否需要将证书添加到自定义KeyManager或自定义TrustManager? 我遇到的一个问题是,Android不接受JKS密钥库(KeyStore.getDefaultType()返回“BKS”):“ java.security.KeyStoreException:KeyStore JKS实现未find ” 任何想法如何进行将不胜感激!

SSL Socket连接

我如何创build一个SSL套接字连接? 我真的需要创build一个密钥库? 这个密钥库应该与我的所有客户端应用程序共享? 我用下面的代码创build了一个服务器: SSLServerSocketFactory sslserversocketfactory = (SSLServerSocketFactory) SSLServerSocketFactory .getDefault(); SSLServerSocket sslserversocket = (SSLServerSocket) sslserversocketfactory .createServerSocket(ServerProperties.getInstance() .getVSSPAuthenticationPort()); 我已经在android上创build一个客户端与下面的代码: 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) […]

带有https loadUrl的webView显示空白页面

我使用webview访问https链接。 该页面始终显示空白。 我find了用它来莳萝的方法 public class WebViewClient extends Object { public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } } 这很好。 但是我使用API​​ Android 2.1,上面的方法属于Android 2.2。 任何人都可以给我一些build议吗?