DEV Community


Posted on • Updated on


在 ESP8266/ESP32 使用 HTTPClient 連接 https 網站

HTTPClient 是個好用的程式庫, 只要叫用其中的 get()等方法就可以幫我們進行 HTTP 請求。不過如果你要連接的是 HTTPS 網站, 正規的作法是你得在程式中驗證連線的網站所提供的電子憑證, 這得在你的程式裡加上憑證相關的資訊, 而且因為憑證是有期限的, 這也表示現在可以正常運作的程式, 可能在一段時間後就會因憑證失效而出錯。

但如果你不那麼在意連線的是不是假網站, 不想驗證憑證的正確性, 那麼可以使用只要網址的 HTTPClient.begin(), 但提供 https 的網址, 不用提供憑證, 沒有提供憑證的情況下, 程式庫預設的方式就是略過檢查憑證:

    bool verify(WiFiClient& client, const char* host) override
        WiFiClientSecure& wcs = static_cast<WiFiClientSecure&>(client);
        if (_cacert == nullptr) {
        } else {
        return true;
Enter fullscreen mode Exit fullscreen mode

上面的 setInsecure() 會在連線時略過憑證的檢查

    if (insecure) {
        mbedtls_ssl_conf_authmode(&ssl_client->ssl_conf, MBEDTLS_SSL_VERIFY_NONE);
        log_i("WARNING: Skipping SSL Verification. INSECURE!");
    } else if (rootCABuff != NULL) {
Enter fullscreen mode Exit fullscreen mode

這當然不是正規的作法, 使用前請三思。

Oldest comments (0)

Timeless DEV post...

Git Concepts I Wish I Knew Years Ago

The most used technology by developers is not Javascript.

It's not Python or HTML.

It hardly even gets mentioned in interviews or listed as a pre-requisite for jobs.

I'm talking about Git and version control of course.

One does not simply learn git