Java 相互认证的工作原理

Java 相互认证的工作原理,java,ssl,Java,Ssl,我有一个java项目,它要求我们使用相互身份验证证书。我们的代码应该与具有给定ip地址的服务器通信 socket = new Socket("00.000.000.000", 0002); 由于我们的代码正在与远程系统通信:- 如果我在未连接到internet的计算机(pc)中创建自签名证书,则如果我使用此证书,则相互身份验证是否有效 如果我使用Letsencrypt生成一个证书,相互身份验证将起作用。我计划在我的digital ocean droplet中生成Letsencrypt证书 如果

我有一个java项目,它要求我们使用相互身份验证证书。我们的代码应该与具有给定ip地址的服务器通信

socket = new Socket("00.000.000.000", 0002);
由于我们的代码正在与远程系统通信:-

  • 如果我在未连接到internet的计算机(pc)中创建自签名证书,则如果我使用此证书,则相互身份验证是否有效

  • 如果我使用Letsencrypt生成一个证书,相互身份验证将起作用。我计划在我的digital ocean droplet中生成Letsencrypt证书

  • 如果我在未连接到internet的计算机(pc)中创建自签名证书,则如果我使用此证书,则相互身份验证是否有效

    除非对方信任它。互联网连接部分是不相关的。您需要将自签名证书导出到对等方,并让他们将其导入信任库

    如果我使用Letsencrypt生成一个证书,相互身份验证将起作用。我计划在我的digital ocean droplet中生成Letsencrypt证书

    如果对等方的truststore信任LetsEncrypt的证书,那么它将起作用

    潜在的问题是,相互认证是否总是适用于从普通PC签名的自签名证书

    不,见上文

    或者由公认的权威机构签署后,它会起作用吗


    通常,您应该避免使用自签名证书。它们不值打印在纸上的钱。

    作为旁注:您确定要在第二个参数中使用八进制数吗?在这种情况下,这并不重要,但是一旦你的端口号超过8,你可能会有一些惊喜…端口号是9002,我只是放了零,以不显示真正的端口号。我想根本的问题是,相互身份验证是否始终适用于从普通pc签名的自签名证书,还是在由公认的权威机构签名时有效。