質問編集履歴
3
より適切に状況が伝わるように文章を校正
test
CHANGED
File without changes
|
test
CHANGED
@@ -7,19 +7,20 @@
|
|
7
7
|
```php
|
8
8
|
$result = openssl_verify($receipt, $signature, $key, OPENSSL_ALGO_SHA1)
|
9
9
|
```
|
10
|
-
を実行すると問題なく実行でき、$resultは **1** となるのですが、
|
10
|
+
を実行すると問題なく実行でき、$resultは **1(=検証成功)** となるのですが、
|
11
11
|
AlmaLinux9のOpenSSL/3.0.7の環境下で完全に同じソースを実行すると
|
12
12
|
$resultは **-1(=エラー)** になります。
|
13
13
|
|
14
|
-
openssl_error_string()
|
14
|
+
openssl_error_string()を使用してエラーの内容を確認したところ、
|
15
15
|
```openssl_error_string
|
16
16
|
error:0480006C:PEM routines::no start line
|
17
17
|
error:03000098:digital envelope routines::invalid digest
|
18
18
|
```
|
19
|
+
とありました。
|
19
|
-
|
20
|
+
※PEMなどの内容はAlmaLinux8環境で成功するものとまったく同じものとなっており、
|
20
|
-
|
21
|
+
環境差による結果の差異を考慮しなくて良いように値はすべてリテラルな文字列で定義しています。
|
21
22
|
|
22
|
-
OPENSSL_ALGO_SHA1 を OPENSSL_ALGO_SHA256 に変えると
|
23
|
+
**OPENSSL_ALGO_SHA1** を **OPENSSL_ALGO_SHA256** に変えると
|
23
24
|
$resultは **0(=検証失敗)** となるので、
|
24
25
|
- OPENSSL_ALGO_SHA1 ⇒ 非推奨のレガシーアルゴリズムのため検証処理の実行に失敗
|
25
26
|
- OPENSSL_ALGO_SHA256 ⇒ レシートはSHA1が採用されているため、検証した結果、不一致
|
2
コメントでご紹介いただいた内容を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -68,6 +68,13 @@
|
|
68
68
|
```
|
69
69
|
が通らずに困っております。
|
70
70
|
|
71
|
+
### 追記
|
72
|
+
コメントにてご紹介いただいた記事にあった
|
73
|
+
```shell
|
74
|
+
update-crypto-policies --set DEFAULT:SHA1
|
75
|
+
```
|
76
|
+
を実行し、update-crypto-policies --show の結果が DEFAULT:SHA1 と表示される状況で動作確認をしてみましたが、結果は変わりませんでした。
|
77
|
+
--追記終了
|
71
78
|
|
72
79
|
そもそもSHA1で検証しようとしているのが間違いで、
|
73
80
|
「新しいエンドポイントにアクセスしてSHA256を採用したAndroidの決済レシートを受信する」など、
|
1
openssl_verify()実行後のエラー詳細を追加しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,6 +10,14 @@
|
|
10
10
|
を実行すると問題なく実行でき、$resultは **1** となるのですが、
|
11
11
|
AlmaLinux9のOpenSSL/3.0.7の環境下で完全に同じソースを実行すると
|
12
12
|
$resultは **-1(=エラー)** になります。
|
13
|
+
|
14
|
+
openssl_error_string()でエラーの内容を捕捉すると
|
15
|
+
```openssl_error_string
|
16
|
+
error:0480006C:PEM routines::no start line
|
17
|
+
error:03000098:digital envelope routines::invalid digest
|
18
|
+
```
|
19
|
+
と返ってくるのですが、PEMの内容はAlmaLinux8環境で成功するものと同じものを設定しており、
|
20
|
+
処理結果の微妙な違いがあるのがこわいので、渡している変数の中身はすべてリテラルな文字列で定義しています。
|
13
21
|
|
14
22
|
OPENSSL_ALGO_SHA1 を OPENSSL_ALGO_SHA256 に変えると
|
15
23
|
$resultは **0(=検証失敗)** となるので、
|