You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

导入SSL证书至浏览器仍无法消除安全警告问题求助

导入SSL证书至浏览器仍无法消除安全警告问题求助

嗨,我来帮你拆解一下这个问题~

你遇到的MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY错误,核心原因是你生成的证书同时扮演了CA证书和终端实体(服务器)证书的角色,这不符合浏览器的证书信任逻辑。

咱们先理清楚逻辑:自签证书要让浏览器信任,正确的姿势应该是先创建一个自定义的CA证书,再用这个CA去签发专门的服务器证书(给ESP32用)。而你直接用openssl req -x509生成的证书,本质上是一个兼具CA属性的证书,当你把它导入浏览器作为信任的CA后,却又把它当作服务器证书用在ESP32上,浏览器就会认为“这是个CA证书,怎么能直接当服务器证书用?”,于是抛出这个错误。

正确的证书生成步骤应该是这样的:

  1. 生成自定义CA的私钥和证书
    先创建一个专门的CA身份,这个证书是用来导入浏览器的:

    openssl genrsa -out ca.key 2048
    openssl req -x509 -new -nodes -key ca.key -days 3650 -out ca.crt -subj "/CN=My Custom CA"
    

    这里的CN可以随便起,但最好和服务器的标识区分开,比如叫“My Custom CA”。

  2. 生成ESP32服务器的私钥和证书签名请求(CSR)
    给你的ESP32生成专属的服务器私钥和签名请求:

    openssl genrsa -out server.key 2048
    openssl req -new -key server.key -out server.csr -subj "/CN=你的ESP32访问地址"
    

    重点!这里的CN必须和你访问ESP32时用的域名/IP完全一致,比如你用192.168.1.100访问,就填/CN=192.168.1.100,不然浏览器会报域名不匹配的错误。

  3. 用自定义CA签发服务器证书
    用刚才生成的CA证书,给服务器的CSR签名,得到合法的服务器证书:

    openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
    

后续操作:

  • server.keyserver.crt部署到你的ESP32 HTTPS服务器上
  • ca.crt导入浏览器的受信任的根证书颁发机构区域(注意不是导入到“其他证书”之类的地方)

这样操作后,浏览器会信任你自定义的CA,进而信任这个CA签发的ESP32服务器证书,就不会再弹出警告啦。

最后说说导入证书的意义:正常情况下浏览器只信任全球公认的CA机构签发的证书,自签证书不在信任列表里,所以会警告。导入自定义CA证书后,相当于告诉浏览器“我信任这个CA签发的所有证书”,只要你的服务器证书是这个CA签的,浏览器就会认可它的合法性,这才是导入证书的正确打开方式~

备注:内容来源于stack exchange,提问作者Mark

火山引擎 最新活动