当前位置: 首页 > 知识库问答 >
问题:

openssl理解链路本地IPv6地址吗?

申屠宗清
2023-03-14

我无法理解为什么这个命令不起作用:

openssl s_client -connect [fe80::xxxx:xxxx:xxxx:xxxx]:yyyy

注意:我已经用x把上面的链接本地地址弄错了,但我有一些有效的链接本地ipv6地址yyy是端口号。

我得到了一个错误:

1995535248:error:02002016:system library:connect:Invalid argument:../crypto/bio/b_sock2.c:108:
1995535248:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:109:
connect:errno=22

我也试着放单引号/双引号,但结果是同样的错误:

openssl s_client -connect '[fe80::xxxx:xxxx:xxxx:xxxx]:yyyy'

我使用的是OpenSSL 1.1.0f版本,它应该支持IPv6。

使用IPv4地址,它可以工作。

共有1个答案

谢飞舟
2023-03-14

IPv6链路本地地址需要作用域ID,但您似乎没有。因此,您的地址无效,而您收到的错误,无效参数,实际上就是问题所在。

要修复它,请添加正确的作用域ID,即您要连接的接口。例如:

# openssl s_client -connect "[fe80::e1f5:ba3f:9ae5:4fe9%wlp5s0]:443"
CONNECTED(00000003)
depth=0 C = --, ST = SomeState, L = SomeCity, O = SomeOrganization, OU = SomeOrganizationalUnit, CN = localhost.localdomain, emailAddress = root@localhost.localdomain
verify error:num=18:self signed certificate
verify return:1
depth=0 C = --, ST = SomeState, L = SomeCity, O = SomeOrganization, OU = SomeOrganizationalUnit, CN = localhost.localdomain, emailAddress = root@localhost.localdomain
verify return:1
 类似资料:
  • 我检查了下面的代码以获取ipv6地址,这段代码返回了全局单播地址,比如“2001:x:x…”。但我想获得链接本地地址,比如“fe80:…”。如何使用以下代码获取链接本地地址?

  • 此外,如果我在设备中启用IPv4,那么也会生成IPv6链路本地地址。 有谁能解释一下,为了生成本地链接地址,Android设备实际上是在消耗什么?根据我的理解,链接本地地址应该始终存在,无论什么情况下,当链接打开。

  • 所以有几个网站会为你计算你的链接本地ipv6地址,就像这里的这个。 尽管如此,它并没有给出任何有用的关于这个地址是如何计算的,也没有输入参数是什么。那么,如果一个人知道自己的ipv4地址、子网掩码和网关地址,计算链路本地ipv6地址的过程(或算法)是什么?我正在使用SCTP套接字做一个项目,该项目使用ISATAP网络隧道和LL ipv6地址用于构建ISATAP地址。

  • 问题内容: 我有使用地址的应用程序(它存储它们的时间很长),因此它只了解地址。 可以将地址转换为with 吗? 问题答案: 尽管IPv4地址范围具有等效的IPv6,但是您不能将所有IPv6地址都转换为IPv4-IPv6地址比IPv4地址更多。 解决此问题的唯一明智的方法是更新您的应用程序,以便能够理解和存储IPv6地址。

  • 我在服务器上执行如下命令: netstat -anp | grep 6379 查看redis的6379端口情况,结果如下所示: 上面的192.168.0.11是内网地址,41.92.250.40是公网地址(当然为了安全我这边是随便改了不是真实的地址) 阿某云买的服务器,上面有两个ip 41.92.250.40(公) 192.168.0.11(私有) 现在我对Local Address 本地地址还有

  • 此函数创建sockaddr_in6: 基本上,如果地址是IPv4地址,我会在它前面加上,并将该族设置为af_inet。 这有可能做到。如果是,我做错了什么?