ESP8266 SSL problemi

Başlatan strom, 17 Ocak 2019, 21:39:25

strom

Herkese iyi günler.
ESP8266-01 modül var elimde. Bununla gmail smtp sunucusuna bağlanarak mail göndermeye çalışıyorum. Bunu yapabilmek için AxTLS kütüphanesini kullanıyorum.

Öncelikle denemek amaçlı PC üzerinde, AxTLS kütüphanesini kullanan iki proje oluşturdum.
1. Proje, winsock fonksiyonlarını ve AxTLS kütüphanesini kullanarak gmail üzerinden mail göndermeye çalışıyor
2. Proje, 1.projenin tamamen aynısı sadece WinSock send, recv fonksiyonları yerine seri port üzerinden ESP8266-01 modülüyle iletişim kuran fonksiyonları kullanıyor.

2 proje tcp fonksiyonları hariç birebir aynı. 1.Proje başarılı bir şekilde mail'i gönderiyor. Ancak 2.proje SSL handshake aşamasında, "Client Key Exchange (16)" aşamasında kalıyor. Program başarılı bir şekilde serverdan key bilgisini alıyor. O aşamaların tamamını geçiyor ve gelen verileri 1. projeden gelen verilerle karşılatırıyorum tamamen aynı. Ancak "Client Key Exchange (16)" aşamasından sonra server bana 70 koduyla "protocol version" hatasını gönderiyor ve kendisini kapatıyor.

Debug yatığımda iki projede "Client Key Exchange" aşamasına kadar aynı dataları alıyor. İki projede bire bir aynı. Sorunu günlerdir arıyorum ama bulamadım. Daha önce başına benzer bir sorun gelen oldu mu? ESP8266 TLS desteklemiyor diyeceğim ama zaten tüm şifrelemeyi PC tarafında AxTLS kütüphanesini kullanarak yapıyorum. ESPnin görevi sadece TCP datalarını taşımak. Hem hata veren aşamaya kadar da tamamen doğru veriler alıyorum. Google'un certificalarını görebiliyorum ve bu sertifika ve geri kalan bilgiler 1.Projedeki sonuçlarla aynı.

Ayrıca TLS versiyonunu da kontrol ediyorum. Kullandığım kütüphane TLS1.2yi destekliyor. Kaldı ki 1.proje de aynı kütüphaneyi kullanıyor ve başarılı larak iletişim kuruyor. "Client Hello" mesajımda da TLSv1.2 kullanacağımı söylüyorum ve bunun doğruluğunu debug edebiliyorum.

Sadece gmailin smtp servisi değil, www.google.com:443, aws.amazon.com:443 adreslerini de deniyorum. Onlarda da aynı sonucu alıyorum. Aynı aşamada server iletişimi kapatıyor ve 70 kodlu "protocol version" hatasını veriyor.