小编Fel*_*lix的帖子

使用客户端证书和Android的HttpsURLConnection通过SSL上传文件

我正在尝试将文件上传到受SSL保护的Web服务,并且需要客户端证书(由内部CA签名).与上传文件相比,与Web服务的通信运行良好(下载文件,查询,运行命令和执行各种POST工作正常).

上传文件时,我得到一个SSLException(javax.net.ssl.SSLException),上面写着"写入错误:ssl = 0x5fe209c0:系统调用期间的I/O错误,同级连接重置".

我创建了一个重复的服务器并删除了SSL和客户端证书要求,并试图通过'vanilla'HTTP上传,并且它运行良好.

我尝试过使用setFixedLengthStreamingMode(int)setChunkedStreamingMode(int)但没有成功.使用它们时,会从该write方法抛出异常,并且在不使用它们时,会从调用中抛出相同的异常getResponseCode().

我找不到有关服务器中的错误的任何信息EventVwr.

我们的其他客户端(iOS客户端)能够在那里上传文件,因此它必须是我所做的 - 但我无法弄清楚是什么.

我不确定如何进一步调试此问题.

请帮忙.

编辑1

我们做了很多调试工作,发现:

  • 小文件按预期上传(44kb是成功上传的最大文件的大小,并在~1200ms上传).
  • 46kb文件无法上传.失败大约需要2分钟(134120ms).

编辑2

在你的评论中读到之后,现在我让Fiddler玩得很好(感谢这个问题).Fiddler得到了这个文件,但没有成功发送它.请求(原始)看起来像:

POST https://192.168.2.2/rest/transfer/strong/Upload/Full?Path=%5C20140807_113255_20.jpg&Root=2 HTTP/1.1
SessionToken: 1234 // We use this for session management
FileMetadata: {"FileSize":"1315496","FileName":"GrumpyCat.jpg"}
Connection: Keep-Alive
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.1; GT-N7100 Build/JRO03C)
Host: 192.168.2.2
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded
Content-Length: 1315496

;odiao;awriorijgoeijoeirj;oedfrvgerg... // The image
Run Code Online (Sandbox Code Playgroud)

Fiddler的回应(也是RAW)是:

HTTP/1.1 504 Fiddler - Send Failure
Date: Wed, 20 Aug 2014 …
Run Code Online (Sandbox Code Playgroud)

java ssl https android ssl-certificate

25
推荐指数
1
解决办法
1997
查看次数

如何更改焦点在WPF中的显示方式?

wpf在Windows 7上提供的焦点视觉提示是一条虚线,如下所示: FocusExample

现在,我该如何改变它的外观?我怎样才能控制它的外观?

谢谢!

.net c# wpf focus

11
推荐指数
1
解决办法
2万
查看次数

使用Android-UIL,如何停止下载?

我正在使用UIL(由Nosotra)下载服务器渲染的图像,并且服务器最多需要50秒来创建每个图像.服务器的超时设置为15秒,因此我们创建了一个在ImageDownloader.getStream()方法中实现的轮询机制.下载后,图像将显示在ViewPager中(android.support.v4.view.ViewPager就像样本一样).

当用户导航到其他页面时,我希望在不下载文件的情况下停止轮询,但似乎没有" "方法来打破下载流程.

getStream伪代码

1. Parse custom-style URI ("asdf://mypng|123455678945643563245");
2. Make a real world URL from it.
3. Poll the server for the image url (causes the server to render - could take up to 1m30s).
4. Get the stream from the URL, return the stream to caller. 
       Example Code: InputStream is = (InputStream) url.getContent();
Run Code Online (Sandbox Code Playgroud)

到目前为止尝试了什么

null从我的getStream方法返回会导致NullPointerException抛出,所以它与抛出异常基本相同.

抛出异常时,图像会停止,但是:

  1. 稍后我会得到一张图片OutOfMemoryError,所以我在屏幕上显示错误.我不应该得到错误.我已经尝试过这个SO问题的清单 …

java android universal-image-loader

6
推荐指数
1
解决办法
336
查看次数

Jenkins - 配置 JDK - 仅文本框,自动安装失败

我正在尝试为我们的 Android 应用程序创建一个基于 Jenkins 的构建服务器。我正在使用装有最新 Jenkins (1.638) 的 CentOS 机器(虚拟),但无法成功完成构建。

构建失败,因为它无法自动安装 JDK(在机器上,有 OpenJDK 24.91-b01 a-la 1.7.0_91)

java.io.IOException: JDK data is empty.
    at hudson.tools.JDKInstaller.locate(JDKInstaller.java:418)
    at hudson.tools.JDKInstaller.performInstallation(JDKInstaller.java:134)
    at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:68)
    at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:108)
    at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:206)
    at hudson.model.JDK.forNode(JDK.java:143)
    at hudson.model.AbstractProject.getEnvironment(AbstractProject.java:358)
    at hudson.model.Run.getEnvironment(Run.java:2232)
    at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:941)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1036)
    at hudson.scm.SCM.checkout(SCM.java:485)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1275)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:610)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:532)
    at hudson.model.Run.execute(Run.java:1741)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:410)
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

Manage Jenkins屏幕上,我没有看到 JDK(和其他自动安装程序:ANT、Maven、Gradle 等)的选择框

JDK 定义部分

所以:

  1. 为什么我没有选择框?我应该放入哪些值才能起作用?如何解决?
  2. 我担心我自己手动安装JDK将在全球安装它,这样就造成了一个詹金斯的JDK版本冲突(见有关CentOS安装)。这是我需要考虑的事情吗?

java android jenkins

5
推荐指数
1
解决办法
1187
查看次数

使用SpongyCastle从PKCS#10创建带有客户端证书的Https连接

目标

我正在努力实现与客户证书的沟通.

步骤1:创建PKCS#10请求(CSR)并将其提供给我的服务器进行签名.服务器联系人将CSR传递给CA,CA对其进行签名,并返回PKCS#7(带有签名的PKCS#10和CA的证书).

第2步:创建PKCS#12,将其安全地存储在Android设备上

步骤3:创建SSL连接,以便根据证书对客户端进行身份验证.

现在,第1步使用SpongyCastle 1.50.0.0完美运行,但是我坚持其他步骤......我目前正在获得SSL握手异常,但我觉得我应该重新思考我的实现.

这个问题

有谁知道如何实现流程?如何创建和存储客户端证书与Android的SSLContext一起使用所需的一切,以及如何创建这样的SSLContext?

到目前为止我尝试了什么

我的第一次尝试是使用KeyChain,但我们希望避免那里描述的用户交互.我的第二次尝试是遵循Rich Freedman的步骤,但我不知道如何从PKCS#7和私钥创建PKCS#12.对于持久性,我去了这个帖子,但(一)这是C#,(B),它是未加密和(c)我认为,Android系统平台拥有更好的按键持久性机制,一个是我还一无所知.最后,这段代码(用于从PEM和PKCS#7创建PKCS12)不起作用,因为我不知道如何获得CER文件以及它需要的其他东西.

谢谢!

security ssl android ssl-certificate spongycastle

3
推荐指数
1
解决办法
1669
查看次数