Articles of https

无法validation证书签名?

我从这边使用SSL Socket和Trustmanager 自签名SSL 但我一直得到以下错误: 09-28 19:52:41.942:WARN / System.err(10101):javax.net.ssl.SSLHandshakeException:org.bouncycastle.jce.exception.ExtCertPathValidatorException:无法validation证书签名。 哪里不对? 我已经在stackoverflow上检查了不同的post,但我似乎无法让它工作。 我的代码: SchemeRegistry schemeRegistry = new SchemeRegistry(); // http scheme schemeRegistry.register(new Scheme(“http”, PlainSocketFactory.getSocketFactory(), 80)); // https scheme schemeRegistry.register(new Scheme(“https”, new EasySSLSocketFactory(), 443)); params = new BasicHttpParams(); params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 1); params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(1)); params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, “utf8”); CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(new AuthScope(“www.example.com”, AuthScope.ANY_PORT), new […]

Android:使用HttpsURLConnection的HTTPS(SSL)连接

我有2个应用程序,一个是Servlet / Tomcat服务器,另一个是Android应用程序。 我想使用HttpURLConnection在两者之间发送和接收XML。 码: private String sendPostRequest(String requeststring) { DataInputStream dis = null; StringBuffer messagebuffer = new StringBuffer(); HttpURLConnection urlConnection = null; try { URL url = new URL(this.getServerURL()); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoOutput(true); urlConnection.setRequestMethod(“POST”); OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream()); out.write(requeststring.getBytes()); out.flush(); InputStream in = new BufferedInputStream(urlConnection.getInputStream()); dis = new DataInputStream(in); int ch; long […]

生成和安装SSL证书

当我成功将自定义SSL证书添加到Android 6模拟器(我对system.img文件进行持久更改)时,我觉得我破解了primefaces。 但浏览器无法以任何方式识别它。 我遵循了这个很棒的教程 ,我认为我在散列方面做错了。 以下是我所做的全部步骤,以及到目前为止所做的工作。 我的系统 Windows 10,64 BIT 预建模拟器 名称:Nexus_64 API:23 目标:Android 6(Android API) CPU / ABI x86 / 64 磁盘大小3 GB 高级模拟器设置 RAM:512 MB VM堆:128 MB 内部存储2 GB (从右侧下拉菜单中选择) SD卡:Studio管理的2 GB 系统文件 从教程: 890c6016.0获取证书文件 创建用于将系统文件存储在c:\device_tmp空文件夹 公用事业: 来自/android_sdk/tools/emulator.exe emulator 来自/android_sdk/platform-tools/adb.exe adb 我做了什么 启动模拟器: emulator -avd Nexus_64 -no-snapshot-load 现在它启动,我打开命令行窗口 find外部存储的名称,因为sdcard没有足够的存储空间用于映像文件。 adb shell df 在我的情况下/storage/13E4-1F02/获得2GB空间 […]

HttpsURLConnection:SSL恢复无法正常工作

我正在尝试使用HttpsURLConnection和我自己的信任管理器设置SSL(使用SSL恢复)。 我只能进行ssl握手和连接。 没有SSL恢复 – 以前的会话永远不会被重用! 我搜索了一遍,但没有运气。 所有答案都是指HttpClient(这不是一个选项)。 我的设置如下: 我创建了一个SSL上下文,我将其存储供以后使用。 然后我使用这个SSL上下文创建一个SSL工厂,我也存储它以便与所有连接一起使用。 我开始一切顺利的连接:我收到一个sessionID ,一个完整的握手完成,连接被发送到服务器。 一分钟后,我开始另一个连接。 出于某些奇怪的原因,此连接不会发送我之前的sessionID 。 我打印SSLContext的会话 – 最后一个会话仍在那里并且有效。 由于某种原因,此新连接不使用它,因此会创建另一个会话并将其添加到会话的缓存中。 我在两个不同的设备上尝试了Android版本2.3和4.1。 在许多谷歌搜索结果之后,我甚至试图像一些用户提议的那样添加Keep-Alive,以及导致没有不同结果的其他伏都教。 有没有人碰到这个? 有什么我想念的吗? 什么可能导致我的连接不使用上一个会话? 提前致谢!

使用URL.openConnection()建立HTTPS连接

我正在尝试与证书设置为2013年4月到期的服务器建立HTTPS连接,并使用GlobalSign作为根证书。 HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); // urlConnection.setSSLSocketFactory(sslSocketFactory); urlConnection.setDoOutput(true); urlConnection.setChunkedStreamingMode(0); // Send the POST data OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream()); out.write(postParamString.toString().getBytes(“UTF8”)); // Read the reply InputStream in = urlConnection.getInputStream(); 就此而言,这会抛出javax.net.ssl.SSLHandshakeException: org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate signature. 当调用getOutputStream()时。 这个相同的站点和证书在HTC Web浏览器和桌面浏览器中都有效。 当我使用相同的代码访问谷歌它工作(但然后抱怨404错误)。 StackOverflow上的各种post暗示它应该“正常工作”而其他人说要设置你自己的密钥库(或禁用所有HTTPSvalidation!)我假设行为的差异归结为使用中的不同根密钥库(任何人都可以澄清这一点?)。 我现在尝试使用充气城堡创建一个密钥存储区,但我无法将其加载到我的设备上。 从Firefox导出证书后,我使用以下方法创建密钥库: keytool.exe -import -alias onlinescoutmanager -file www.onlinescoutmanager.co.uk.crt -storetype BKS -keystore res\raw\keystore 然后使用以下命令加载并在应用程序中使用: InputStream […]

Android / Java – 如何创建HTTPS连接?

我这里有代码,允许我连接到https服务器并传输数据。 它工作正常,但我想知道我是否正确地做到这一点,我实际上正在建立一个安全的连接。 请检查我的工作。 谢谢。 public class HTTPSClient extends DefaultHttpClient { public HTTPSClient() { } @Override protected ClientConnectionManager createClientConnectionManager() { SchemeRegistry registry = new SchemeRegistry(); HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER; final SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory(); socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier); //socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); registry.register(new Scheme(“http”, PlainSocketFactory.getSocketFactory(), 80)); registry.register(new Scheme(“https”, socketFactory, 80)); registry.register(new Scheme(“https”, socketFactory, 443)); HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier); HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, […]

如何从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应用程序接收CONNECT方法请求?

一些用户抱怨网络问题。 我们的Android应用程序通过https与我们的服务器通信。 我们的Apache日志显示了状态响应; “405方法不允许(CONNECT)”,此问题仅在特定IP地址上重现。 我不明白为什么Android应用程序试图通过CONNECT方法到达服务器,我从不在应用程序中使用此方法,我只使用GET,POST或PUT。 似乎代理可能涉及该问题,但我不知道如何解决它。 有人知道吗 ?

使用https $ http请求状态0

情况: 我正在开发一个从API接收数据的Ionic应用程序。 以前,API在http://地址上,一切正常。 然后我们将API移动到https://并且它不再起作用了。 或者,它仍然可以在浏览器中访问它,但不能在手机(或模拟器)中访问它。 我不确定可能是什么问题。 在控制台日志中,我看到请求的状态为0。 它可能与白名单,标题或CORS有关。 我尝试了几种方法但没有效果。 白名单: 在config.xml之前有这个白名单: 我曾尝试以多种方式修改它,但这并没有解决问题。 例如,我尝试过: 和 API请求: 这是API请求的一个示例: $http.get( ‘https://MY_DOMAIN.com/mobile/list_mobile_project/’ ,{},{“headers” : {“Content-Type” : “application/x-www-form-urlencoded; charset=UTF-8” }}) .success(function(data, status, headers, config) { // code }). error(function(data, status, headers, config) { console.log(‘Error with the API list_mobile_project’); console.log(data); console.log(status); console.log(headers); console.log(config); }); API响应: 这是API响应的一个例子: public function list_mobile_project() { header(‘Access-Control-Allow-Origin: […]

Android – 发送HTTPS获取请求

我想向谷歌购物api发送一个HTTPS获取请求,但是没有什么对我有用,例如这里是我正在尝试的内容: try { HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(); request.setURI(new URI(“https://www.googleapis.com/shopping/search/v1/public/products/?key={my_key}&country=&q=t-shirts&alt=json&rankByrelevancy=”)); HttpResponse response = client.execute(request); } catch (URISyntaxException e) { e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return response; } 如果有人对如何改进或更换它有任何建议,请提前告知我们。