SSL CA certificate errorについて
HTTPSの証明書の確認がうまくいきません。
何か間違えているところがあれば教えて頂けませんでしょうか。
特にエラーの「Curl error 60」と言うのがネットで検索しても特に同じ症状の方が少ないようで何か基本手な間違いをしているのかもしれません。
ご教授頂けませんでしょうか。
SSL証明書のLet'Enqliptがの仕様で「有効期限は2021年9月30日」にAndroidの証明書の仕様が変化したようですがエディタでの挙動には特に変化は無いと言われいています。
9月末でLet's Encryptルート証明書が期限切れ、古い製品は要注意
リンク内容
//追加 20211012
突然証明書エラーが発生した原因と対処
リンク内容
PCでも同じことが起こっているようです。
◆1
公開鍵確認スクリプト作成→オブジェクトに貼り付けずにプロジェクトに保管
using UnityEngine.Networking; using System.Security.Cryptography.X509Certificates; class AcceptAllCertificatesSignedWithASpecificKeyPublicKey : CertificateHandler { private static string PUB_KEY = "MIIFHTCCBAWgAwIBAgISBIc+L4++16gVL5w+M0+Avp2/MA0GCSqGSIb3DQEBCwUA" + "MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD" + //中略 "KJvIppn9PoP/AUwhQmUEC5g8sn8Xx4ZHQ+f3iut7bDltyzOSRSwnq1GXXLurXvyn" + "fQel91Qe4+/5LlqSMDi+QKQ="; protected override bool ValidateCertificate(byte[] certificateData) { X509Certificate2 certificate = new X509Certificate2(certificateData); string pk = certificate.GetPublicKeyString(); if (pk.Equals(PUB_KEY)) return true; // Bad dog return false; } }
◆2
チェック用スクリプト作成 ⇒ オブジェクトに貼付
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; public class Check_Cert : MonoBehaviour { private void Start() { Check(); } public void Check() { string url_ = "https://○○○○○○"; // 自作のHP StartCoroutine("GetRequest", url_); } IEnumerator GetRequest(string uri) { UnityWebRequest request = UnityWebRequest.Get(uri); request.certificateHandler = new AcceptAllCertificatesSignedWithASpecificKeyPublicKey(); yield return request.SendWebRequest(); Debug.Log("<color=blue>SendWebRequest </color>" + request.isHttpError); if (request.isNetworkError) { Debug.Log("Something went wrong, and returned error: " + request.error); //常にfalseが返ってくる } else { // Show results as text Debug.Log("<b>OK"); Debug.Log(request.downloadHandler.text); } } }
◆3
公開鍵はサーバーのLet'Enqliptの「 /etc/letsencrypt/live/ドメイン名/cert.pem
」
-----BEGIN CERTIFICATE----- MIIFHTCCBAWgAwIBAgISBIc+L4++16gVL5w+M0+Avp2/MA0GCSqGSIb3DQEBCwUA MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD //中略 KJvIppn9PoP/AUwhQmUEC5g8sn8Xx4ZHQ+f3iut7bDltyzOSRSwnq1GXXLurXvyn fQel91Qe4+/5LlqSMDi+QKQ= -----END CERTIFICATE-----
◆4
エディタのプレイボタンを押すと下記のエラー
i
Curl error 60: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_NOT_TRUSTED
ii
Debug:SendWebRequest False
iii
Something went wrong, and returned error: SSL CA certificate error UnityEngine.Debug:Log (object) Check_Cert/<GetRequest>d__2:MoveNext () (at Assets/Check_Cert.cs:27) UnityEngine.SetupCoroutine:InvokeMoveNext (System.Collections.IEnumerator,intptr)
Windows10
Unity 2019.4.31f1
証明書 Let's Enqlipt
プラットフォーム Android Pc
あなたの回答
tips
プレビュー