- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个运行 https 网络服务器的服务器。当我用我的浏览器输入它时,我得到域不匹配的错误(因为我使用服务器的 IP)并且证书不受信任。现在我需要使用 apache httpclient 4.2.1 向该服务器发送 GET 请求。我在网上找到了一段代码,对我有帮助:
httpClient = new DefaultHttpClient(a, b);
SSLSocketFactory sslSocketFactory = new SSLSocketFactory(
new TrustStrategy() {
@Override
public boolean isTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
return true;
}
}, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
httpClient.getConnectionManager().getSchemeRegistry().register(new Scheme("https", 443, sslSocketFactory));
因为我不完全理解这段代码,所以我想问一些问题。
1) 我是否正确理解 SSlSocetFactory 的第一个参数是绕过我的证书问题的“不可信”部分?它基本上只是返回每个证书都是可信的?
2) 可能需要第二个参数,因为我的证书主机名没有匹配 URL?
3)这个SchemeRegistry和Scheme究竟是什么?我正在制作一个带有参数“https”、443 和我之前创建的 SSLSocketFactory 的新方案。我知道这个方案是针对 https 连接的,它使用我在 sslSocketFactory 中定义的规则,但是端口是做什么用的?这是否适用于仅在端口 443 或其他端口上的 https 连接?如果我的端口不同,我应该在那里输入不同的端口吗?
4) 最重要的问题:如果我要使用受信任的证书,那么我怎么能只跳过主机名验证而不更改信任策略?
最佳答案
1) Do i understand correctly that the first parameter of SSlSocetFactory is to bypass the "not trusted" part of my certificate problem? It basically just returns that every certificate is trusted?
是的。这是一个非常糟糕的主意。
2) The second parameter is probably needed because my cerificate hostname does not mach the URL?
是的。这也是一个非常糟糕的主意。
... but whats the port for
这是协议(protocol)的默认端口,即如果您提供 https://host/
URL 而不是 https://host:port/
知道端口将是 443。
4) The most important question: if i were to use a trusted certificate then how could i only skip hostname verification and not change the trust strategy?
禁用验证的这一重要部分将是一个非常糟糕的主意。实际上,您将允许使用由受信任的 CA 签署的任何 证书,而不是您自己的证书。由于拥有某个域并为其获取受信任的证书很容易,因此您很容易遭受中间人攻击。
如果真的不可能使用正确的证书(为什么你使用 IP 而不是名称呢?)那么你应该使用证书或公钥锁定来只信任这个证书。参见 OWASP了解更多信息,包括示例代码。
关于java - 信任不信任的证书并跳过主机名验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29546834/
我在这里想做的是将所有连接转发到机器一上端口 3306 上的本地主机到本地主机上端口 3306 上的机器二。因此,如果您连接到机器一上的 mysql,它的行为就像您正在连接一样在二号机器上。 我认为
通过Kibana界面,如何获得 flex IP /主机? 我的意思是,与kibana连接的Elastic主机。 那有可能吗?我在这个上挣扎了好几个小时,却一无所获:( 附:不确定此问题是否是题外话,应
我知道这听起来很奇怪,但我有一个情况,Deno 需要关闭自己的主机(并因此杀死自己的进程)。这可能吗? 我特别需要这个用于 linux (lubuntu),如果相关的话。我想这需要 sudo 权限,这
我知道这听起来很奇怪,但我有一个情况,Deno 需要关闭自己的主机(并因此杀死自己的进程)。这可能吗? 我特别需要这个用于 linux (lubuntu),如果相关的话。我想这需要 sudo 权限,这
我有一个基本问题,但谷歌并没有为我产生很多结果(反正不是英文的)。基本上我想做的就是: 我有一个图形需要用作整个应用程序的持久 header ,例如:我不能让它在新的 Intent 调用时从屏幕上滑出
您好,我正在使用 xampp,我正在尝试使用 php 进行连接。 $sql_connections = mysql_connect("$server, $username, $password")
我目前正在尝试一些多人游戏的想法,并正在尝试创建一个 Java 应用程序来为基于网络浏览器的多人游戏提供服务。 我的开发环境是主机上的Eclipse, native 上的notepad + Googl
今天为大家分享一篇关于SSH 的介绍和使用方法的文章。本文从SSH是什么出发,讲述了SSH的基本用法,之后在远程登录、端口转发等多种场景下进行独立的讲述,希望能对大家有所帮助。 什么是SSH?
我已经完成了在裸机 Centos 7 上运行的测试 Kubernets 主机的设置。这将用作测试系统,因为我们将在 IBM Bluemix Kubernetes 服务中部署所有内容。 从 Bluemi
我正在尝试通过带有 4.2(果冻 bean )的 android 设备“nexus 7”通过 USB 与我的 freeduino 板进行通信,该板类似于 arduino uno。 几个月后,我使用开发
我正在使用 nginx,但在设置反向代理时遇到问题。 我的 nginx.conf 是默认的(没有对其进行任何更改),我的站点可用配置是: upstream backend_hosts { se
我在 projectlocker(免费 svn 主机)上有一个帐户,但我不知道如何将我的项目文件上传到它。 我在我的仪表板中找不到任何选项。 我在我的电脑上使用tortoiseSvn,那么如何上传文件
设置batchSize = 1有意义吗?如果我想一次处理一个文件? 尝试过batchSize = 1000和batchSize = 1 - 似乎具有相同的效果 { "version": "2.0"
我只想知道.. docker中现在有任何可用的工具吗?我已经阅读了Docker中有关多主机功能的一些文档,例如, Docker群 Docker服务(带有副本) 我也知道群模式下的volume问题,容器
我想将文件从 Docker 的容器挂载到我的 docker 主机。 数据卷不是我的解决方案,因为它们是从 docker 主机到 docker 容器的装载,我需要相反的方法。 谢谢 最佳答案 当 doc
我是新手。我无法正确理解RMI。互联网上有大量教程,但据我所知,它们都是针对本地主机的。服务器和客户端都运行在同一台机器上。 我想在任何计算机上运行客户端,并且主机将位于一台计算机上,让我们考虑IP
我无法从客户端“A”SSH 到服务器“B”(但我可以从同一子网上的许多其他 ssh 客户端而不是“A”——所有都是 *nux 机器) serverA>ssh -v -p 端口用户@serverB Op
设置batchSize = 1有意义吗?如果我想一次处理一个文件? 尝试过batchSize = 1000和batchSize = 1 - 似乎具有相同的效果 { "version": "2.0"
由于我不是天生的编码员,请多多包涵。 这是我尝试使用HAproxy来实现的目标,但是经过数小时的检查后,我无法以某种方式使其工作。 从 domain.com/alpha domain.com/beta
我正在使用 tomcat 运行 Java Web 应用程序,通过电子邮件将生成的报告发送给用户。我可以发送电子邮件,但几个小时后服务器停止发送电子邮件,并出现以下错误。 javax.mail.Mess
我是一名优秀的程序员,十分优秀!