質問編集履歴

3

より適切に状況が伝わるように文章を校正

2024/07/17 14:31

投稿

nija-yirak
nija-yirak

スコア0

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
- と返ってくるのですが、PEMの内容はAlmaLinux8環境で成功するものと同じものを設定しており、
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

コメントでご紹介いただいた内容を追記

2024/07/17 06:06

投稿

nija-yirak
nija-yirak

スコア0

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()実行後のエラー詳細を追加しました

2024/07/17 04:31

投稿

nija-yirak
nija-yirak

スコア0

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(=検証失敗)** となるので、