Пример SSL-клиента Arduino MKR GSM 1400 не удается подключиться

mkr-gsm-1400

Я использую пример GsmSSLWebClient, который поставляется с библиотекой MKRGSM. Исходный пример работает отлично, я получаю логотип arduino ascii. Но когда я меняю URL-адрес, Arduino не получает ответа:

//char server[] = "arduino.cc"; 
//char path[] = "/asciilogo.txt";
char server[] = "wepardi.fi"; 
char path[] = "/robots.txt";

Starting Arduino web client.
connecting...
connected
GET /robots.txt HTTP/1.1
Host: wepardi.fi
Connection: close


disconnecting.

Из Firefox https://www.wepardi.fi/robots.tx t отображается правильно. Я пробовал также некоторые другие сайты, и с некоторых из них я правильно получаю содержимое файла ascii, а с некоторых - нет.

Что-то не так с моими настройками?

Печать из режима отладки:

connecting...

...

AT+USECMNG=0,0,"VeriSign_Class_3_Public_Primary_Certification_Authority_G5",1239
>
+USECMNG: 0,0,"VeriSign_Class_3_Public_Primary_Certification_Authority_G5","cb17e431673ee209fe455793f30afa1c"

OK
AT+USOCR=6

+USOCR: 0

OK
AT+USOSEC=0,1,0

OK
AT+USECPRF=0,0,1,4,"www.wepardi.fi"

OK
AT+USOCO=0,"www.wepardi.fi",443

ERROR

+UUSOCL: 0
AT+USOCL=0

ERROR
connected
GET /robots.txt HTTP/1.1
Host: www.wepardi.fi
Connection: close


disconnecting.

Команда AT+USOCO=0,"www.wepardi.fi",443 не получается

Пример GsmWebClient (без SSL) отлично работает на всех хостах, которые я пробовал.

, 👍0

Обсуждение

в браузере вы вводите www.wepardi.fi, а в Arduino только wepardi.fi, @Juraj


2 ответа


0

У вас проблема с перенаправлением.

Вы подключаетесь к wepardi.fi и запрашиваете файл /robots.txt с этого хоста. Он сразу же скажет вам: «Хорошо, но на самом деле этот файл находится на www.wepardi.fi/robots.txt. Возьмите его оттуда».

Но этого не произойдет.

Вам необходимо обратиться непосредственно к источнику.

Вот след:

GET /robots.txt HTTP/1.1
Host: wepardi.fi
Connection: close

HTTP/1.1 302 Found
Date: Tue, 08 Jan 2019 14:26:51 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.0.32
Strict-Transport-Security: max-age=63072000; includeSubdomains;
X-Powered-By: PHP/7.0.32
Location: https://www.wepardi.fi/
Cache-Control: max-age=1296000
Expires: Wed, 23 Jan 2019 14:26:51 GMT
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

И когда вы перейдете на www.wepardi.fi:

GET /robots.txt HTTP/1.1
Host: www.wepardi.fi
Connection: close

HTTP/1.1 200 OK
Date: Tue, 08 Jan 2019 14:27:49 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.0.32
Strict-Transport-Security: max-age=63072000; includeSubdomains;
X-Powered-By: PHP/7.0.32
X-Robots-Tag: noindex, follow
Link: <https://www.wepardi.fi/wp-json/>; rel="https://api.w.org/"
Cache-Control: max-age=300
Expires: Tue, 08 Jan 2019 14:32:49 GMT
Content-Length: 67
Connection: close
Content-Type: text/plain; charset=utf-8

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
read:errno=0
,

Спасибо, но я все равно не получаю содержимое файла: Запуск веб-клиента Arduino. подключение... связанный ПОЛУЧИТЬ /robots.txt HTTP/1.1 Хост: www.wepardi.fi. Соединение: закрыть отключение., @Tiina

Можете ли вы получить какой-либо ответ на запрос?, @Majenko


1

Наконец-то я нашел решение этой проблемы. Отключение проверки сертификата в библиотеке MKRGSM обеспечивает успешное SSL-соединение и с этим сайтом. В MKRGSM/src/GSMClient.cpp я изменил

//     MODEM.sendf("AT+USECPRF=0,0,1,4,\"%s\"", _host);
       MODEM.sendf("AT+USECPRF=0");

чтобы использовать заводские настройки модема. Я до сих пор не знаю, в чем была проблема с сертификатами. Спасибо всем, кто пытался помочь с этим.

,