Добрый день!
Подключаемся к стороннему сервису по 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 дали мне неполный набор сертификатов
Заранее благодарю за ответ
точно также openssl x509 покажет тебе серт то что они дали там видно будет
> точно также 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:12X509v3 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).crlAuthority 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).crlX509v3 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-----
А что это дает?
есть мнение что спрашивающий некомптентен и вообще не в курсе что ему дали и зачем
есть мнение что это клиентский сертификат для авторизации на ресурсе и подписан он собственной CA ресурса> Непонятно, что теперь делать? Можно ли как то обмануть систему. Или владельцы сервиса https дали мне неполный набор сертификатов
нанять админа
> есть мнение что спрашивающий некомптентен и вообще не в курсе что ему
> дали и зачем
> есть мнение что это клиентский сертификат для авторизации на ресурсе и подписан
> он собственной CA ресурсаОчевидно.
>> Непонятно, что теперь делать? Можно ли как то обмануть систему. Или владельцы сервиса https дали мне неполный набор сертификатов
> нанять админаВаше мнение очень важно для меня. Но похоже вы тоже, не очень понимаете, что сказать, поэтому к чем сотрясать воздух - не понятно.
> Ваше мнение очень важно для меня. Но похоже вы тоже, не очень
> понимаете, что сказать, поэтому к чем сотрясать воздух - не понятно.я понимаю и что сказать и даже угадал что сертификат для авторизации клиента
а вы вообще нифига не понимаете как это работает, иначе не стали бы страдать ерундой пытаясь использовать _клиентский_ серт для верификации https сервера, посему настоятельно рекомендую вашему работаделю нанять компетентного админа, а не мальчика по объявлянию
>> есть мнение что спрашивающий некомптентен и вообще не в курсе что ему
>> дали и зачем
>> есть мнение что это клиентский сертификат для авторизации на ресурсе и подписан
>> он собственной CA ресурса
> Очевидно.
>>> Непонятно, что теперь делать? Можно ли как то обмануть систему. Или владельцы сервиса https дали мне неполный набор сертификатов
>> нанять админа
> Ваше мнение очень важно для меня. Но похоже вы тоже, не очень
> понимаете, что сказать, поэтому к чем сотрясать воздух - не понятно.Остался без работы? Ну не печалься. Все образуется
>>> есть мнение что спрашивающий некомптентен и вообще не в курсе что ему
>>> дали и зачем
>>> есть мнение что это клиентский сертификат для авторизации на ресурсе и подписан
>>> он собственной CA ресурса
>> Очевидно.
>>>> Непонятно, что теперь делать? Можно ли как то обмануть систему. Или владельцы сервиса https дали мне неполный набор сертификатов
>>> нанять админа
>> Ваше мнение очень важно для меня. Но похоже вы тоже, не очень
>> понимаете, что сказать, поэтому к чем сотрясать воздух - не понятно.
> Остался без работы? Ну не печалься. Все образуетсяТихо сам с собой ведет беседу... :)
Нужно только для curl? Опции --cert и --key:
> Нужно только для curl? Опции --cert и --key:
> https://everything.curl.dev/usingcurl/tls/clientcertК сожалению не только для curl.
Еще есть приклад который прекрасно работает по http, но никак не может работать по https
>> Нужно только для 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
> 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 достаточно.
>>> Нужно только для 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Не зная о каком приложении идет речь - самый разумный совет -это все таки нанять админа.
Потому что если у него не получится- виноваты окажетесь вы...
Человек не понимает о каком сертификате идет речь. Человек не понимает зачем ему выдали сертификат..Следовательно он не понимает как работает приложение...
Нанять человека который просто сделает это за деньги - самый разумный выход. В противном случае выбранный подход означает что задача вообще говоря не сильно нужная.
>> Нужно только для curl? Опции --cert и --key:
>> https://everything.curl.dev/usingcurl/tls/clientcert
> К сожалению не только для curl.
> Еще есть приклад который прекрасно работает по http, но никак не может
> работать по httpsВы посмотрите повнимательнее, что вам выдали, простым блокнотом к примеру, там могут лежать, как клиентский сертификат, так и ключ к нему, так и сертификат центра сертификации, который все это выдал...
>update-ca-trust
>curl --cacertА ему выдали сертификат
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client AuthenticationЕсли софтина не умеет авторизоваться сертификатом (curl и Firefox умеют), то самый простой вариант, как уже сказали, stunnel. Но для начала - в школу, за учебники. Надо как минимум понимать разницу между СА и клиентским сертификатом
Слов было много. Тебе дали не ca сертификат, найди от него ca и добавь в файл a trust сертификатами
права файлов проверьте, логи
> Добрый день!
> Подключаемся к стороннему сервису по https. Нам владельцы сервиса https дали сертификат
> для взаимодействия, в формате cer. Перевел в формат pem успешно.в этом ошибка в cer оба ключа и приватный и публичный, в pem ты получил что-то одно.
конвертируй в p12
в cer может быть насколько сертификатов и ключей, для https авторизация по ключу у тебя в системе должен быть сертификат CA и твой подписанный этим CA сертификат. Все это могли и одним cer файлом предать.а pem это просто один ключ
> а pem это просто один ключэто формат такой. там может быть сколько угодно чего угодно...
====
Файл Pem начинается с:
-----BEGIN -----
Кодированные блоки данных Base64
-----END -----
Данные кодируются с помощью base64 между этими тегами.
Файл pem состоит из нескольких блоков.
Назначение каждого блока или файла pem объясняется в заголовке, который сообщает вам, как используется данный блок.
====
>[оверквотинг удален]
> ====
> Файл Pem начинается с:
> -----BEGIN -----
> Кодированные блоки данных Base64
> -----END -----
> Данные кодируются с помощью base64 между этими тегами.
> Файл pem состоит из нескольких блоков.
> Назначение каждого блока или файла pem объясняется в заголовке, который сообщает вам,
> как используется данный блок.
> ====ты прав глупостей понаписал некоторых :) но для "TLS Web Client Authentication" кроме самого сертификата в котором есть публичный ключ, нужен еще и приватный ключ. Я генерю это все через easyrsa3, и для браузеров пакую в p12 сертификат и ключ и савлю на клаинтах.
у ТС какая-то такая же проболема, чтоб авторизоваться по https одного сертификата мало, надо еще и приватный ключ как то указывать
процедура ведь:
1. создать ключ приватный и публичный
2. создать запрос используя ключ, чтоб CA дал подписанный клиентский сертификат
3. дальше CA на основании запроса формирует клиентский подписанный сертификат.И как бы CA приватный ключ не знает, и в клиентском сертификате его нет, но для авторизации он нужен.
не занаю как для curl, но для браузеров надо объединить сертификат и приватный ключ в один файлик p12 и тогда уже добавлять, для curl скорей всего еще один параметр нужен какой-то :)