HTTPS证书在使用openssl生成后不起作用

hivapdat  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(146)

我运行了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提供的)在长度和标题上都是相同的。

oknrviil

oknrviil1#

在阅读用户主席James K. Polk的评论后,我深入了解了openssl生成的文件,我发现Expressif的官方文档是错误的
README报告:

openssl req -newkey rsa:2048 -nodes -keyout prvtkey.pem -x509 -days 3650 -out cacert.pem -subj "/CN=ESP32 HTTPS server example"

字符串
但项目的CMakeLists.txt包含:

idf_component_register(SRCS "main.c"
                    INCLUDE_DIRS "."
                    EMBED_TXTFILES "certs/servercert.pem"
                                   "certs/prvtkey.pem")


事实上,cert目录也包含这些文件。因此,openssl创建了cacert.pem而不是servercert.pem
要发出的正确命令是:

openssl req -newkey rsa:2048 -nodes -keyout prvtkey.pem -x509 -days 3650 -out servercert.pem -subj "/CN=ESP32 HTTPS server example"


这导致了预期的行为。

相关问题