Перейти к содержанию
Fire Monkey от А до Я
  • 0

Подскажите про THTTPClient и SSL


krapotkin

Вопрос

Делаю приложение Android / IOS. Коллеги делают серверную сторону на PHP, предоставляющую API.

Все взаимодействует нормально, проверено.

Теперь мне нужно подключиться к этому серверу через HTTPS.  Текст сертификата публичного ключа мне выдали. На сервере сертификат самоподписанный, не покупной.

Как добавить этот сертификат/текст при запросе в событии HTTPClient.OnNeedClientCertificate?

Как проверить сертификат сервера в событии HTTPClient.OnValidateServerCertificate?

Доки пустые. Developer skill sprint просмотрел, там только в комментах обещали разобраться с этим вопросом, но до сих пор молчок.

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 1

Вот здесь, в самом низу вроде все расписано http://docwiki.embarcadero.com/RADStudio/XE8/en/Using_an_HTTP_Client#Handling_Client-side_Certificates 

Handling Server-side Certificates

If the server provides an SSL certificate, but this certificate is invalid, the OnValidateServerCertificate event occurs. Provide an event handler for OnValidateServerCertificate so that you can check the server certificate (Certificate) and determine whether or not you accept the server certificate. If you accept the server certificate, change the value of the Accept parameter to True.

Handling Client-side Certificates

If the server requires a client certificate, the OnNeedClientCertificate event occurs. Provide an event handler for OnNeedClientCertificate so that you can check your list of client certificates (ACertificateList), and determine which certificate you want to send to the server. To send a given certificate from the list, change the value of AnIndex to the index of the target certificate in ACertificateList.

Note: If the HTTP method of the first request to a server that requires a client-side certificate is not either HEAD or GET (e.g. it is POST), the status code of the server response is 413. Always send a HEAD or GET request first. Using a HEAD request is usually a better choice, since less data is transferred.

 

А вообще зачем вам возня с сертификатами? Просто делайте Accept:=True в OnValidateServerCertificate если доверяете серверу и все. Трафик будет шифроваться. Или вы пытаетесь авторизацию сделать и сервер будет требовать клиентский сертификат?

 

Ссылка на комментарий
  • 0

ээто я и сам читал...
ну, согласитесь, Accept:=true для всех подряд это не совсем проверка сертификата ))
сейчас там так и стоит до выяснения

дело именно в том, что требуется именно клиентский сертификат

как он должен выглядеть, в каком формате, где что брать? сейчас у меня только текст

----------------- BEGIN CERTIFICATE ------------------------
AAAADDJDLLKASBHDSLSDLKMNM!1239489012 и много всяких других букв
----------------- END CERTIFICATE ------------------------

то ли я должен создать запись TCetificate и добавить ее в List, то ли файл приложить куда-то...

Ссылка на комментарий
  • 0

Что то вообще TSertificate какой-то ущербный получился... Того что надо, не содержит...

А так да, скорее всего кроме onValidate.. никто и не сдвинулся с места. Да и Validate-то по-сути нельзя нормально сделать..

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...