X509Certificate2 と RSACryptoServiceProvider を PHP OpenSSL コマンドと一緒に使用して、双方向の相互セキュリティを実装しようとしています。
PHP から C# にメッセージを送信しても問題ないようです。.NET サーバー上の RSACryptoServiceProvider は、独自の秘密鍵を使用してメッセージを復号化し、PHP サーバーの公開鍵を使用して署名を検証できます。
しかし、逆に .NET から PHP に移行すると、「openssl_public_decrypt」を使用して .NET サーバーの署名を検証する際に問題が発生します。false を返すだけです。'openssl_private_decrypt' は正常に機能し、暗号化されたデータを PHP サーバーの秘密鍵で復号化します。
openssl (.key および .crt) を使用して両方のサーバー用の RSA (2048) 自己署名証明書を作成し、.NET コードで秘密鍵として使用する .pfx を作成しました。
ここで何が問題なのか疑問に思っています。.NET サーバーと PHP サーバーの両方で、暗号化/復号化のデフォルト設定を使用しています。.pfx で何かを暗号化した場合、暗号化/復号化メカニズムは同じではありませんか? または、openssl_public_decrypt は、RSACryptoServiceProvider が提供するものとは異なる暗号化を期待していますか?
問題がどこにあるのかよくわからないので、どんな助けも素晴らしいでしょう。