LinuxForum.Fans
Тема

сертификат безопасности

Автор: konstantin_v 10 сообщений 1286 просмотров
21.11.2019 09:00 #433483

Добрый день!

Сертификат client.p12, конвертирую из p12 в pem, openssl pkcs12 -in client.p12 -out client.pem -nodes
устанавливается без ошибок
при подключении curl (curl http://xx.xx.xx.xx:xxx/) выдает ошибку curl: (35) gnutls_handshake() failed: Certificate is bad

?

21.11.2019 21:08 #433493

Должно быть как то так:
[console]curl --cacert /path/to/CA/certificate \
--cert /path/to/client/certificate \
--key /path/to/client/certificate/key \
https://127.0.0.1 -v[/console]
(надеюсь не нужно пояснять что "\" означает что строка не кончилась а продолжается на следующей для удобства разбито на несколько строк таким образом при выполнении команды данных символов не должно быть и вся команда в одну строку.)

22.11.2019 07:07 · отредактировано #433494

mozgfx,
Ну почему же «данных символов не должно быть», можно прямо так и набирать (или копировать и вставлять) и в командной строке, и в сценарии, главное — символ "\" должен быть последним в строке, после него не должно быть даже пробела.

22.11.2019 18:17 #433496

bormant, писал со смартфона может непонятно написал....
Имелось ввиду, что при выполнении данной команды символы не учитываются, а вся команда выполняется как будто написана в одну строку.
К примеру в OpenSUSE чтобы написать такое в командной строке не вставляя из буфера обмена используется символ \ и комбинация SHIFT+ENTER.
Пишем:
Команда \(жмем Shift+Enter*)
Аргумент 1 \(жмем Shift+Enter)
Аргумент 2 и т.д.\(жмем Shift+Enter*)
Аргумент последний после него жмем Enter
Команда выполнится так как будто записана в одну строку...
* если символа \ нет перед курсором, то команда работает как обычный Enter.

22.11.2019 21:13 #433497

mozgfx,
В OpenSUSE нет bash или другой оболочки, совместимой с ним?

man bash


A non-quoted backslash (\) is the escape character. It preserves the literal value of the next character that follows, with the exception of <newline>. If a \<newline> pair appears, and the backslash is not itself quoted, the \<newline> is treated as a line continuation (that is, it is removed from the input stream and effectively ignored).
25.11.2019 05:48 #433500
mozgfx написал:
Должно быть как то так:
[console]curl --cacert /path/to/CA/certificate \
--cert /path/to/client/certificate \
--key /path/to/client/certificate/key \
https://127.0.0.1 -v[/console]
(надеюсь не нужно пояснять что "\" означает что строка не кончилась а продолжается на следующей для удобства разбито на несколько строк таким образом при выполнении команды данных символов не должно быть и вся команда в одну строку.)

Добрый день!

должен быть корневой сертификат, клиентский и ключ?

25.11.2019 19:50 #433501
bormant написал:
mozgfx,
В OpenSUSE нет bash или другой оболочки, совместимой с ним?

Есть как в оригинальной так и в OpenSuse запускаемой в WSL на Windows 10.
Добавлено: 25.11.2019 19:50:51

"konstantin.v" написал:
должен быть корневой сертификат, клиентский и ключ?

В примере указано именно так. На практике не приходилось применять.

26.11.2019 05:48 #433502

curl --cacert /usr/local/local/local/client.crt https://127.0.0.1:0000 -v
Rebuilt URL to: ://127.0.0.1:0000
Trying 127.0.0.1...
Connected to 127.0.0.1 (127.0.0.2) port 0000 (#0)
found 1 certificates in /usr/local/local/local/client.crt
ALPN, offering http/1.1
gnutls_handshake() failed: Certificate is bad
Closing connection 0
curl: (35) gnutls_handshake() failed: Certificate is bad

получается что-то с сертификатом?

26.11.2019 17:39 #433503
"konstantin.v" написал:
curl --cacert /usr/local/local/local/client.crt https://127.0.0.1:0000 -v

Ничего не смущает?
Указан корневой сертификат cacert, а используется сертификат клиента.
Тогда уже нужно использовать cert вместо cacert.

27.11.2019 05:37 #433504

если использовать cert выходит следующее
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.

а если добавить -k то curl: (35) error reading X.509 key or certificate file: Error while reading file.

Войдите или зарегистрируйтесь, чтобы ответить.