Я использую Mac OS X, я попробовал встроенную openssl а также последнюю openssl из homebrew , но я все еще не мог найти способ привязать openssl s_server к определенному IP-адресу, например, 127.0.0.42 .

На этой странице написано:

-accept val Необязательный TCP-хост и порт для прослушивания соединений. Если не указано, используется *:4433.

Но это не работает:

$ openssl s_server -accept '127.0.0.42:4433' -cert my.crt -key my.key
getservbyname failure for 127.0.0.42:4433
usage: s_server [args ...]

 -accept arg   - port to accept on (default is 4433)
 -context arg  - set session ID context
 -verify arg   - turn on peer certificate verification
 -Verify arg   - turn on peer certificate verification, must have a cert.
 -cert arg     - certificate file to use
                 (default is server.pem)
 -crl_check    - check the peer certificate has not been revoked by its CA.
                 The CRL(s) are appended to the certificate file
 -crl_check_all - check the peer certificate has not been revoked by its CA
                 or any other CRL in the CA chain. CRL(s) are appended to the
                 the certificate file.
 -certform arg - certificate format (PEM or DER) PEM default
 -key arg      - Private Key file to use, in cert file if
                 not specified (default is server.pem)
 -keyform arg  - key format (PEM, DER or ENGINE) PEM default
 -pass arg     - private key file pass phrase source
 -dcert arg    - second certificate file to use (usually for DSA)
 -dcertform x  - second certificate format (PEM or DER) PEM default
 -dkey arg     - second private key file to use (usually for DSA)
 -dkeyform arg - second key format (PEM, DER or ENGINE) PEM default
 -dpass arg    - second private key file pass phrase source
 -dhparam arg  - DH parameter file to use, in cert file if not specified
                 or a default set of parameters is used
 -named_curve arg  - Elliptic curve name to use for ephemeral ECDH keys.
                 Use "openssl ecparam -list_curves" for all names
                 (default is nistp256).
 -nbio         - Run with non-blocking IO
 -nbio_test    - test with the non-blocking test bio
...

Ошибка говорит -accept может только указать порт, а не IP-адрес, это смешно.

Что тут происходит? есть ли обходной путь?

2 ответа2

0

Я уверен, что вы не должны указывать IP-адрес. Вы хотите разрешить соединения только с одного ip или почему вы пытаетесь это указать?
Номер порта должен быть достаточным, и для подключения к вашему серверу вы используете ip-адрес сервера или 127.0.0.1, если он локальный.

Это синтаксис опции -accept :-accept port - TCP-порт для прослушивания соединений.Если не указано, используется 4433.
Взято из https://www.openssl.org/docs/man1.0.2/man1/openssl-s_server.html.

0

Вам не нужно писать собственный код для этого - используйте stunnel. Stunnel сделает за вас все крипто и даст вам канал с открытым текстом на другом конце.

Настройте службу из launchd для запуска stunnel, когда кто-то подключается к нужному порту. launchd можно попросить прослушать желаемый IP-адрес, если вы хотите пролистать справочную страницу launchd.plist, чтобы понять это. В качестве альтернативы, запустите службу с помощью сценария оболочки, когда будете выполнять тестирование.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .