首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修正UNITYTLS_X509VERIFY_NOT_DONE

如何修正UNITYTLS_X509VERIFY_NOT_DONE
EN

Stack Overflow用户
提问于 2020-10-23 03:39:49
回答 1查看 1.8K关注 0票数 1

对于类似的错误,我已经看到了几个答案,但没有看到我的具体错误。最好的例子是雷米对UNITYTLS_X509VERIFY_FLAG_NOT_TRUSTED的回答

我的错误如下:TlsException: Handshake failed - error code: UNITYTLS_INTERNAL_ERROR, verify result: UNITYTLS_X509VERIFY_NOT_DONE

  • Web Node.js / MongoDB
  • NGINX与CertBot
  • SSL LetsEncrypt

NGINX违约

代码语言:javascript
运行
复制
listen [::]:443 ssl ipv6only=on #managed by Certbot
listen 443 ssl
ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mysite.com/privatekey.pem # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem # managed by Certbot

根据Unity,我使用了CertificateHandler

代码语言:javascript
运行
复制
    internal class RequestCertificate : CertificateHandler
{

    private static string PUB_KEY = "SOME public key";


    protected override bool ValidateCertificate(byte[] certificateData)
    {
        X509Certificate2 certificate = new X509Certificate2(certificateData);
        string pk = certificate.GetPublicKeyString();
        if (pk.Equals(PUB_KEY))
        {
            Debug.Log("Validate Certificate");

            return true;
        }
        else
        {
            Debug.Log("Not Validate Certificate");

            return false;
        }

    }
}

我的注册方法

代码语言:javascript
运行
复制
protected IEnumerator Register()
{
    List<IMultipartFormSection> wwwForm = new List<IMultipartFormSection>();
    wwwForm.Add(new MultipartFormDataSection("name", uName.text));
    wwwForm.Add(new MultipartFormDataSection("email", uEmail.text));
    wwwForm.Add(new MultipartFormDataSection("screenName", uScreenName.text));
    wwwForm.Add(new MultipartFormDataSection("password", uConPass.text));

    UnityWebRequest www = UnityWebRequest.Post(EndPointManager.API_URL + "users/store-user", wwwForm);
    www.certificateHandler = new RequestCertificate();
    Debug.Log(www.certificateHandler.GetHashCode());
    yield return www.SendWebRequest();

    if (www.isNetworkError || www.isHttpError)
    {
        Debug.Log(www.error); // OUTPUT: Unable to complete SSL connection
        debugText.text += $"\n HTTP ERROR: {www.error} \n";
    }
    else
    {
        debugText.text += "Success";
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-24 21:32:20

这与证书颁发机构或NGINX无关。我决定建立一个前端表单来测试Chrome中的这个错误,一旦我做了,答案就击中了我的脸。我忘记在生产服务器上设置环境变量,得到了net::ERR_SSL_PROTOCOL_ERROR。由于联合返回了一个我不熟悉的错误,我不知道如何处理它。

我让我的app.js文件查找process.env.NODE_ENV,以便它可以设置protocol = 'https',但没有设置它。我一做完,Node.js就使用了https.createServer(app)而不是http.crateServer(app),一切都很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64493528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档