为了账号安全,请及时绑定邮箱和手机立即绑定

通过JNI调用C ++的Java 1.8本机System.load会产生TLSv1。

通过JNI调用C ++的Java 1.8本机System.load会产生TLSv1。

慕容3067478 2021-03-31 16:30:25
我有一些简单的Java代码:public class Test1 {     static { System.load("D://HelloWorld.dll"); }    public native String displayHelloWorld(String aaa);    public static void main (String[] args) {        Test1 t = new Test1();        String aaa = "Hello World";        String output = t.displayHelloWorld(aaa);        System.out.println(output);    }}而且我有一些简单的C ++代码可以制作HelloWorld.dll。 源代码链接错误启动之后,C ++代码将正常运行。但是,我正在使用的C ++代码链接到.dll(我不控制),并且该.dll进行了安全的Web服务调用。问题是,如何控制该安全Web服务调用的TLS版本。如果我使用相同的C ++代码,并使用4.6版的.NET目标版本进行编译,则在控制台应用程序中,它将使用TLSv1.2发出Web服务请求(根据wireshark)。但是,如果我将相同的代码移到动态DLL(上面的HelloWorld.dll)中,然后从上面的Java调用该.dll,则Web服务请求将使用TLSv1。为什么?我认为Java JNI中一定有某些东西将TLS限制为TLSv1,但是那又是什么呢?如何获得JNI以使用TLSv1.2。我尝试利用以下资源:Java 1.8默认TLS应该为v1.2(我使用的是Java版本“ 1.8.0_171”)Java命令行标志:-Dhttps.protocols =“ TLSv1.2” -Djdk.tls.client .protocols =“ TLSv1.2”(这些似乎没有影响)感谢您的任何建议。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 190 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信