Понимает ли openssl локальный IPv6-адрес канала?

Я не могу обернуть голову, почему эта команда не работает:

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

Примечание: я исказил локальный адрес ссылки выше xх, но у меня есть некоторые действительные ссылки локальный IPv6-адрес.yyyy это номер порта.

Я получаю ошибку:

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 ответ

Решение

Локальные адреса канала IPv6 требуют идентификатора области, но у вас его нет. Таким образом, ваш адрес недействителен, и ошибка, которую вы получили, Invalid argumentБуквально проблема.

Чтобы исправить это, добавьте правильный идентификатор области, то есть интерфейс, к которому вы подключаетесь. Например:

# 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
Другие вопросы по тегам