ESP8266 – WiFiClientSecure库 – setKnownKey

位置导航: ESP8266库 / WiFiClientSecure库 / 本页

说明

在使用ESP8266实现HTTPS协议物联网通讯时,我们可以使用服务器公钥进行服务器身份认证。setKnownKey函数用于安装服务器公钥,以便ESP8266进行服务器身份认证。(公钥是服务器认证的关键。请确保服务器公钥正确,否则您的物联网通讯可能受到安全威胁。)

如需获取网站服务器公钥,可以先使用浏览器将服务器证书下载(注意这里下载的是服务器证书而不是根证书)。

如需了解具体如何获取服务器证书,请点击此处进入查看网站证书和公钥

请注意:在使用本函数前需要先建立PublicKey对象。并且将该对象作为setKnownKey的参数。如需了解具体操作方法,请见本函数页面的示例程序部分。

语法

httpsClient.setKnownKey(key);

参数

key: 公钥信息(类型:PublicKey*)

返回值

示例程序

以下程序将实现ESP8266建立与网站的HTTPS通讯,并且将网站服务器响应状态码以及响应头信息显示于串口监视器中。

请将以下示例程序中的Wifi联网信息进行调整并将程序上传给ESP8266。程序上传完毕后,ESP8266将会自动连接 WiFi并通过HTTPS协议与必应网站服务器进行通讯。服务器响应状态码以及响应头信息显示于串口监视器中以便我们查阅。程序运行结果如下图所示。

ESP8266-setKnownKey-Example-Result
ESP8266-setKnownKey-Example-Result

通过以上截屏,我们可以看到服务器响应状态码为200 OK。这一信息说明必应网站服务器已经成功地与ESP8266取得连接,另外服务器也已经成功的收到了ESP8266通过HTTPS协议发送的请求信息。

在以下示例程序中,我们使用了语句PublicKey key(pubkey)建立了公钥对象,并且将该对象作为参数应用在 httpsClient.setKnownKey(&key)语句中。具体操作方法请见以下示例程序中高亮语句部分。

注:此程序中的公钥是服务器公钥,而不是CA公钥。如需获取该服务器公钥,可以先使用浏览器将服务器证书下载,(如需了解如何执行这一操作,请参考太极创客网站查看网站证书和公钥页面)。假设此处下载的服务器证书名称为“bing.cer”,接下来可以使用OpenSSL工具软件通过以下指令从服务器证书中提取服务器公钥:
openssl x509 -pubkey -noout -in bing.cer。

位置导航: ESP8266库 / WiFiClientSecure库 / 本页