Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java SSL中安全导入自签名证书?_Java_Ssl_Keytool_Self Signed - Fatal编程技术网

如何在Java SSL中安全导入自签名证书?

如何在Java SSL中安全导入自签名证书?,java,ssl,keytool,self-signed,Java,Ssl,Keytool,Self Signed,我正在编写一个程序来模拟SSL套接字上的安全连接。我希望客户机通过接口自行导入不受信任的证书(因此不在其信任库中)。这些证书是自签名的 到目前为止,我碰到了一堵墙,程序崩溃并报告收到致命警报:证书未知 由于服务器证书不驻留在客户端信任库中 我正在本地模拟连接。我发现了一些例子,其中truststore管理器被显式地用于覆盖所有SSL检查,但这对MITM攻击是非常开放的 我需要以某种方式包装truststore manager实现,以使其安全,并确保服务器证书得到验证。这里的链接给出了一个开放实现

我正在编写一个程序来模拟SSL套接字上的安全连接。我希望客户机通过接口自行导入不受信任的证书(因此不在其信任库中)。这些证书是自签名的

到目前为止,我碰到了一堵墙,程序崩溃并报告
收到致命警报:证书未知

由于服务器证书不驻留在客户端信任库中

我正在本地模拟连接。我发现了一些例子,其中truststore管理器被显式地用于覆盖所有SSL检查,但这对MITM攻击是非常开放的

我需要以某种方式包装truststore manager实现,以使其安全,并确保服务器证书得到验证。这里的链接给出了一个开放实现的示例,但我不知道如何安全地包装它

在trustmanager实现的情况下,当它定位到一个不受信任的证书时(从其
checkServerTrusted
方法),它仍然会触发一个
CertificateException
),我是否必须处理异常,然后从那里继续执行程序?我很不确定如何处理这种安全包装


非常感谢大家

问题是,使用自签名证书也容易受到MITM的攻击attacks@andrershov这是库的底层Java实现的一部分还是密码套件类型的一部分?最终,我想让它比开放SSL连接更安全,在分发自签名证书时,这是一个问题。分发期间存在MITM攻击的风险。但是我同意,当客户机拥有服务器证书并且他确信它不是伪造的,连接将是安全的。我在模仿来自可信和恶意方的自签名证书。在某个阶段,客户端需要接受一个真正的自签名证书,但它最初是不可信的,这就是我的困境。你真的需要使用自签名证书吗?在网上获得证书很容易(而且是免费的)。