回答編集履歴

1

解決用ソース追加

2020/01/24 03:27

投稿

XENO_SuperGamer
XENO_SuperGamer

スコア8

test CHANGED
@@ -5,3 +5,67 @@
5
5
  Unityではその検証機能はあるのですが、デフォルトではAndroidのみ出来なく(不便ですよね)
6
6
 
7
7
  検証する機能をつけないとダメです。
8
+
9
+
10
+
11
+
12
+
13
+ まず、証明書の検証するためのクラスを用意します。
14
+
15
+
16
+
17
+ class AcceptAllCertificatesSignedWithASpecificKeyPublicKey : CertificateHandler
18
+
19
+ {
20
+
21
+ // Encoded RSAPublicKey
22
+
23
+ private static string PUB_KEY = "証明証の公開鍵を入れる";
24
+
25
+ protected override bool ValidateCertificate(byte[] certificateData)
26
+
27
+ {
28
+
29
+ X509Certificate2 certificate = new X509Certificate2(certificateData);
30
+
31
+ string pk = certificate.GetPublicKeyString();
32
+
33
+ if (pk.Equals(PUB_KEY))//公開鍵があっているか検証
34
+
35
+ return true;
36
+
37
+ // Bad dog
38
+
39
+ return false;
40
+
41
+ }
42
+
43
+ }
44
+
45
+
46
+
47
+ そして、
48
+
49
+ UnityWebRequest が行われている次の処理で、上記の処理を呼び出します。
50
+
51
+
52
+
53
+ //UnityWebRequestを生成
54
+
55
+ //URLはセキュリティ上の問題で、伏せさせていただきます。
56
+
57
+ UnityWebRequest request = UnityWebRequest.Post("https://www.×××.com/××××××/×××.php", form);
58
+
59
+
60
+
61
+ request.certificateHandler = new AcceptAllCertificatesSignedWithASpecificKeyPublicKey();//追加
62
+
63
+
64
+
65
+ //タイムアウト
66
+
67
+ request.timeout = 5;
68
+
69
+
70
+
71
+ このような感じで接続できました。