我运行了Espressif HTTPS服务器example,提供了certificates。我能够成功连接到服务器,在浏览器中接受警告(如预期)。
然后,按照我在certs
文件夹中发布的上述README文件中包含的说明:
openssl req -newkey rsa:2048 -nodes -keyout prvtkey.pem -x509 -days 3650 -out cacert.pem -subj "/CN=My own certificate"
字符串
然后把新的固件上传到ESP32上。现在,我不能再连接了。Firefox说:
SEC错误签名
而Chrome说:
错误_SSL_PROTOCOL_ERROR
在服务器端,我收到以下消息:
E (1059558) esp-tls-mbedtls: mbedtls_ssl_handshake returned -0x7780
E (1059558) esp_https_server: esp_tls_create_server_session failed
E (1059558) httpd: httpd_accept_conn: session creation failed
W (1059568) httpd: httpd_server: error accepting new connection
型
我RFTM并按照他们的指示.什么可以防止创建与证书的安全连接我使用openssl
生成?
两个证书(我的和Expressif提供的)在长度和标题上都是相同的。
1条答案
按热度按时间oknrviil1#
在阅读用户主席James K. Polk的评论后,我深入了解了
openssl
生成的文件,我发现Expressif的官方文档是错误的。README报告:
字符串
但项目的CMakeLists.txt包含:
型
事实上,cert目录也包含这些文件。因此,
openssl
创建了cacert.pem
而不是servercert.pem
。要发出的正确命令是:
型
这导致了预期的行为。