Как отредактировано, большая часть вашего вопроса, вероятно, является перекрестным дублированиемhttps://superuser.com/questions/903247/ssl-root-ca-certificate-is-not-recognized-although-present-in-the-trust-storeиhttps://serverfault.com/questions/607233/how-to-make-openssl-s-client-using-default-c.
Я не подтвердил исходный код Ubuntu, но Ubuntu 14.04 номинально использует OpenSSL 1.0.1f, в восходящем потоке которого есть ошибка, из-за которойs_client
(и некоторые другие )не используют хранилище доверенных сертификатов по умолчанию, если вы не укажете какой-либо -CA{path,file}
, а в версии 16.04 используется версия 1.0.2g, в которой это исправлено. (По-видимому, то же самое произошло и с версией 16.10, но это была не LTS, и она больше не поддерживается.)
Файл конфигурации не имеет значения; s_client
не использует никаких настроек файла конфигурации, кроме «библиотеки -global» для ENGINE и addOID, ни один из которых не имеет отношения к этой проблеме.
Но обратите внимание, что www.tcell.io
(, куда ваш wget
был перенаправлен, )и api.tcell.io
(, куда вы сказали openssl s_client
подключиться ), — это разные машины. По данным www.ssllabs.com/ssltest:
api.tcell.io
52.8.231.1 правильно обслуживает сертификат GoDaddy -SecureG2 (серийный номер 00c8c641d43c76286c )с необходимыми сертификатами цепочки (, а точнее #2 и #3; #4 является корнем и не является обязательным, но допустимым)
www.tcell.io
13.57.73.170 обслуживает тот же сертификат, но НЕ цепные сертификаты, в нарушение RFC (, которые могут снизить его класс, за исключением того, что он ТАКЖЕ использует DH -1024, который уже ограничивает его до B ). Без цепных сертификатов wget
не удалось проверить сертификат. Если установленный вами «пакет» добавил сертификаты цепочки в ваше хранилище доверенных сертификатов, что не соответствует тому, как должна работать веб--PKI, то wget
с помощью OpenSSL можно построить цепочку и проверить Это.
DEVPATH
на самом деле существует в sysfs
, поэтому вы можете найти все дочерние устройства в каталоге с таким именем. Если вы точно знаете, что прямо под вашим DEVPATH
находится одно устройство TTY, echo /sys/devices/pci0000:00/0000:00:13.1/usb6/6-3/*/tty/*
покажет его имя(ttyUSBx
).
Однако, когда появляется ваше родительское устройство и запускается ваш сценарий, обнаружение этого подустройства может быть еще не завершено, а это означает, что это устройство TTY может еще не существовать, когда вы его ищете. Поэтому вам лучше создать правило udev, соответствующее самому подустройству.