The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Помогите разобраться с сертификатами"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное / Linux)
Изначальное сообщение [ Отслеживать ]

"Помогите разобраться с сертификатами"  +/
Сообщение от Nightman_Shaemail (ok), 16-Июл-22, 17:16 
Добрый день!
Подключаемся к стороннему сервису по https. Нам владельцы сервиса https дали сертификат для взаимодействия, в формате cer. Перевел в формат pem успешно.
На моей стороне oracle linux . попробовал добавить сертификаты вот так:
--
update-ca-trust force-enable
cp /home/myhome/Keys/cert.pem /etc/pki/ca-trust/source/anchors
update-ca-trust extract
--

Потом взял думаю проверю :

NONPROD [root@xxxx]# openssl verify -show_chain cert.pem
C = KZ, ST = Чето, L =Чето, O = SomeOrg JSC, OU = Development, CN = *.xxx.com
error 20 at 0 depth lookup: unable to get local issuer certificate
error cert.pem: verification failed

Проверка curl
NONPROD [root@xxxxT]#  curl --cacert /home/myhome/Keys/cert.pem /home/ -v --connect-timeout 5 https://verylongname.com/ws/ptp_dbz.wsdl
*   Trying 1.1.1.1
* TCP_NODELAY set
* Connected verylongname.com (1.1.1.1) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /home/myhome/Keys/cert.pem
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

Непонятно, что теперь делать? Можно ли как то обмануть систему. Или владельцы сервиса https дали мне неполный набор сертификатов

Заранее благодарю за ответ

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от tester (??), 17-Июл-22, 02:15   +/
точно также openssl x509 покажет тебе серт то что они дали там видно будет
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #4

2. Сообщение от муу (?), 17-Июл-22, 11:27   +/
есть мнение что спрашивающий некомптентен и вообще не в курсе что ему дали и зачем
есть мнение что это клиентский сертификат для авторизации на ресурсе и подписан он собственной CA ресурса

> Непонятно, что теперь делать? Можно ли как то обмануть систему. Или владельцы сервиса https дали мне неполный набор сертификатов

нанять админа

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #3

3. Сообщение от Nightman_Shaemail (ok), 17-Июл-22, 11:44   +/
> есть мнение что спрашивающий некомптентен и вообще не в курсе что ему
> дали и зачем
> есть мнение что это клиентский сертификат для авторизации на ресурсе и подписан
> он собственной CA ресурса

Очевидно.

>> Непонятно, что теперь делать? Можно ли как то обмануть систему. Или владельцы сервиса https дали мне неполный набор сертификатов
> нанять админа

Ваше мнение очень важно для меня. Но похоже вы тоже, не очень понимаете, что сказать, поэтому к чем сотрясать воздух - не понятно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #9, #10

4. Сообщение от Nightman_Shaemail (ok), 17-Июл-22, 12:00   +/
> точно также openssl x509 покажет тебе серт то что они дали там
> видно будет

openssl x509 -in cert.pem -text
--

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            12:00:04:55:a7:aa:bb:8b:39:c0:3b:04:76:00:06:00:04:55:a7
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: DC = com, DC = someOutOrg, CN = someOutOrg-IssuingCA
        Validity
            Not Before: Nov  5 10:08:49 2019 GMT
            Not After : Nov  4 10:08:49 2022 GMT
        Subject: C = KZ, ST = Somewhere, L = Somewhere, O = someOutOrg JSC, OU = Development, CN = *.someOutOrg.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                  <skip>
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS:*.someOutOrg.com
            X509v3 Subject Key Identifier:
                91:88:AF:CA:AA:53:1E:88:40:67:A8:CB:A2:9A:1B:9A:15:26:BC:EE
            X509v3 Authority Key Identifier:
                keyid:5B:15:38:BA:4B:6D:61:E6:AA:80:5B:06:74:F8:24:4A:EF:15:2F:12

            X509v3 CRL Distribution Points:

                Full Name:
                  URI:ldap:///CN=someOutOrg-IssuingCA(5),CN=myCA,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=someOutOrg,DC=com?certificateRevocationList?base?objectClass=cRLDistributionPoint
                  URI:http://myCA.someOutOrg.com/CertEnroll/someOutOrg-IssuingCA(5).crl
                  URI:file:////myCA.someOutOrg.com/CertEnroll/someOutOrg-IssuingCA(5).crl

            Authority Information Access:
                CA Issuers - URI:ldap:///CN=someOutOrg-IssuingCA,CN=AIA,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=someOutOrg,DC=com?cACertificate?base?objectClass=certificationAuthority
                CA Issuers - URI:http://myCA.someOutOrg.com/CertEnroll/someOutOrg-IssuingCA(6).crl

            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            1.3.6.1.4.1.311.21.7:
                0-.%+.....7.........B.....X...@.F...z...i..d...
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            1.3.6.1.4.1.311.21.10:
                0.0
..+.......0
..+.......
    Signature Algorithm: sha256WithRSAEncryption
<skip>
-----BEGIN CERTIFICATE-----
<skip>
-----END CERTIFICATE-----


А что это дает?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

5. Сообщение от ннова (?), 17-Июл-22, 12:10   +/
Нужно только для curl? Опции --cert и --key:

https://everything.curl.dev/usingcurl/tls/clientcert

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6

6. Сообщение от Nightman_Shaemail (ok), 17-Июл-22, 12:19   +/
> Нужно только для curl? Опции --cert и --key:
> https://everything.curl.dev/usingcurl/tls/clientcert

К сожалению не только для curl.
Еще есть приклад который прекрасно работает по http, но никак не может работать по https

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #7, #13

7. Сообщение от ннова (?), 17-Июл-22, 12:34   +/
>> Нужно только для curl? Опции --cert и --key:
>> https://everything.curl.dev/usingcurl/tls/clientcert
> К сожалению не только для curl.
> Еще есть приклад который прекрасно работает по http, но никак не может
> работать по https

Ну если "приклад", и не удается ему подсунуть сертификат, то есть еще вариант проксировать используя forward proxy через Nginx или Apache:

приклад -> http://localhost:8080 -> https://service.com

Nginx (proxy_ssl_certificate), https://nginx.org/en/docs/http/ngx_http_proxy_module.html#pr...

Apache (SSLProxyMachineCertificateFile), https://httpd.apache.org/docs/current/mod/mod_ssl.html

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #8, #12

8. Сообщение от Ann None (?), 17-Июл-22, 15:16   +/

> Nginx (proxy_ssl_certificate), https://nginx.org/en/docs/http/ngx_http_proxy_module.html#pr...
> Apache (SSLProxyMachineCertificateFile), https://httpd.apache.org/docs/current/mod/mod_ssl.html

полновесный nginx, а тем более монструозный apache только для того чтобы поднять одну ssl сессию?
да вы гоните, для этого stunnel достаточно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

9. Сообщение от муу (?), 17-Июл-22, 15:28   +/
> Ваше мнение очень важно для меня. Но похоже вы тоже, не очень
> понимаете, что сказать, поэтому к чем сотрясать воздух - не понятно.

я понимаю и что сказать и даже угадал что сертификат для авторизации клиента
а вы вообще нифига не понимаете как это работает, иначе не стали бы страдать ерундой пытаясь использовать _клиентский_ серт для верификации https сервера, посему настоятельно рекомендую вашему работаделю нанять компетентного админа, а не мальчика по объявлянию

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

10. Сообщение от Nightman_Shaemail (ok), 17-Июл-22, 16:26   +/
>> есть мнение что спрашивающий некомптентен и вообще не в курсе что ему
>> дали и зачем
>> есть мнение что это клиентский сертификат для авторизации на ресурсе и подписан
>> он собственной CA ресурса
> Очевидно.
>>> Непонятно, что теперь делать? Можно ли как то обмануть систему. Или владельцы сервиса https дали мне неполный набор сертификатов
>> нанять админа
> Ваше мнение очень важно для меня. Но похоже вы тоже, не очень
> понимаете, что сказать, поэтому к чем сотрясать воздух - не понятно.

Остался без работы? Ну не печалься. Все образуется

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #11

11. Сообщение от ыы (?), 17-Июл-22, 21:14   +/
>>> есть мнение что спрашивающий некомптентен и вообще не в курсе что ему
>>> дали и зачем
>>> есть мнение что это клиентский сертификат для авторизации на ресурсе и подписан
>>> он собственной CA ресурса
>> Очевидно.
>>>> Непонятно, что теперь делать? Можно ли как то обмануть систему. Или владельцы сервиса https дали мне неполный набор сертификатов
>>> нанять админа
>> Ваше мнение очень важно для меня. Но похоже вы тоже, не очень
>> понимаете, что сказать, поэтому к чем сотрясать воздух - не понятно.
> Остался без работы? Ну не печалься. Все образуется

Тихо сам с собой ведет беседу... :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

12. Сообщение от ыы (?), 18-Июл-22, 08:21   +/
>>> Нужно только для curl? Опции --cert и --key:
>>> https://everything.curl.dev/usingcurl/tls/clientcert
>> К сожалению не только для curl.
>> Еще есть приклад который прекрасно работает по http, но никак не может
>> работать по https
> Ну если "приклад", и не удается ему подсунуть сертификат, то есть еще
> вариант проксировать используя forward proxy через Nginx или Apache:
> приклад -> http://localhost:8080 -> https://service.com
> Nginx (proxy_ssl_certificate), https://nginx.org/en/docs/http/ngx_http_proxy_module.html#pr...
> Apache (SSLProxyMachineCertificateFile), https://httpd.apache.org/docs/current/mod/mod_ssl.html

Не зная о каком приложении идет речь - самый разумный совет -это все таки нанять админа.

Потому что если у него не получится- виноваты окажетесь вы...
Человек не понимает о каком сертификате идет речь. Человек не понимает зачем ему выдали сертификат..Следовательно он не понимает как работает приложение...
Нанять человека который просто сделает это за деньги - самый разумный выход. В противном случае выбранный подход  означает что задача вообще говоря не сильно нужная.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

13. Сообщение от Сергей (??), 18-Июл-22, 10:42   +/
>> Нужно только для curl? Опции --cert и --key:
>> https://everything.curl.dev/usingcurl/tls/clientcert
> К сожалению не только для curl.
> Еще есть приклад который прекрасно работает по http, но никак не может
> работать по https

Вы посмотрите повнимательнее, что вам выдали, простым блокнотом к примеру, там могут лежать, как клиентский сертификат, так и ключ к нему, так и сертификат центра сертификации, который все это выдал...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

14. Сообщение от Тот Самый (?), 19-Июл-22, 03:03   +/
>update-ca-trust
>curl --cacert

А ему выдали сертификат
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication

Если софтина не умеет авторизоваться сертификатом (curl и Firefox умеют), то самый простой вариант, как уже сказали, stunnel. Но для начала - в школу, за учебники. Надо  как минимум понимать разницу между СА и клиентским сертификатом

Ответить | Правка | Наверх | Cообщить модератору

15. Сообщение от BarS (??), 20-Июл-22, 13:44   +/
Слов было много. Тебе дали не ca сертификат, найди от него ca и добавь в файл a trust сертификатами
Ответить | Правка | Наверх | Cообщить модератору

16. Сообщение от Аноним (16), 21-Июл-22, 13:31   +/
права файлов проверьте, логи
Ответить | Правка | Наверх | Cообщить модератору

17. Сообщение от cylon (?), 26-Июл-22, 14:54   +/
> Добрый день!
> Подключаемся к стороннему сервису по https. Нам владельцы сервиса https дали сертификат
> для взаимодействия, в формате cer. Перевел в формат pem успешно.

в этом ошибка в cer оба ключа и приватный и публичный, в pem ты получил что-то одно.
конвертируй в p12

Ответить | Правка | Наверх | Cообщить модератору

18. Сообщение от cylon (?), 26-Июл-22, 15:05   +/
в cer может быть насколько сертификатов и ключей, для https авторизация по ключу у тебя в системе должен быть сертификат CA и твой подписанный этим CA сертификат. Все это могли и одним cer файлом предать.

а pem это просто один ключ

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #19

19. Сообщение от ыы (?), 26-Июл-22, 22:00   +/

> а pem это просто один ключ

это формат такой. там может быть сколько угодно чего угодно...

====
Файл Pem начинается с:
-----BEGIN -----
Кодированные  блоки данных  Base64
-----END -----
Данные кодируются с помощью base64 между этими тегами.
Файл pem состоит из нескольких блоков.
Назначение каждого блока или файла pem объясняется в заголовке, который сообщает вам, как используется данный блок.
====

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #20, #21

20. Сообщение от cylon (?), 27-Июл-22, 14:28   +/
>[оверквотинг удален]
> ====
> Файл Pem начинается с:
> -----BEGIN -----
> Кодированные  блоки данных  Base64
> -----END -----
> Данные кодируются с помощью base64 между этими тегами.
> Файл pem состоит из нескольких блоков.
> Назначение каждого блока или файла pem объясняется в заголовке, который сообщает вам,
> как используется данный блок.
> ====

ты прав глупостей понаписал некоторых :) но для "TLS Web Client Authentication" кроме самого сертификата в котором есть публичный ключ, нужен еще и приватный ключ. Я генерю это все через easyrsa3, и для браузеров пакую в p12 сертификат и ключ и савлю на клаинтах.

у ТС какая-то такая же проболема, чтоб авторизоваться по https одного сертификата мало, надо еще и приватный ключ как то указывать

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

21. Сообщение от cylon (?), 27-Июл-22, 14:40   +/
процедура ведь:
1. создать ключ приватный и публичный
2. создать запрос используя ключ, чтоб CA дал подписанный клиентский сертификат
3. дальше CA на основании запроса формирует клиентский подписанный сертификат.

И как бы CA приватный ключ не знает, и в клиентском сертификате его нет, но для авторизации он нужен.

не занаю как для curl, но для браузеров надо объединить сертификат и приватный ключ в один файлик p12 и тогда уже добавлять, для curl скорей всего еще один параметр нужен какой-то :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру