验证上传的文件是否为有效的 PEM 文件

Validating that an uploaded file is a valid PEM file

我正在尝试找出一种 effective/elegant 方法来验证用户上传的文件是否是有效的 pem 文件,而不依赖于验证扩展名。有人完成这个或有任何想法吗?

使用"openssl rsa"并解析其输出

错误的文件:

$ openssl rsa -noout -modulus -in ./wrong.pem 
unable to load Private Key

140324790638432:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY

正确的密钥

$ openssl rsa -noout -modulus -in ../proper.pem
Modulus=98B139C27E3623E542CEC76ECEA0619D045746B2F99265F030391296C5DD83301A85C43A00C745DAB77DFC771CE5666CF81ED81C4561F945EF123D5CB5687500A243E1F87B707FFFC318EA8E9605B2047E2D790BB71B9AF04F385C2E40C18A40FE5FB5CBC96C0C05D4220E5C73564027C6CB0DEEDB8AD8460B78A54536ADB81D204FDDFDB388F6EEFD537E6C3D743A9C9C2FE00D9A819A9587EE359DAA48AD08FC06D99D8686C38B0BD684CC41F0B61115F65B005C53F472D648C2EB92AAFC6526E7F4FFE873FB0C3589C24CCCCA1DCA08B352F9893310F876C007E72B809FAB6738855C5C901C8C006E9E137BF340E8A6E204FC70864AE29D9009DC9CBBEAD9

因此您可以将 openssl 执行包装到 shell_exec(),解析输出并检查 "unable to load Private Key" 以检测错误的证书

我使用 php 文件按照以下步骤验证我的 pem,

  1. validate pem
  2. 下载文件
  3. 将扩展名从 FILENAME.txt
  4. 更改为 FILENAME.php
  5. 将其移动到保存.pem 文件的文件夹中。
  6. 写入设备令牌和 pem 文件名 .php 文件。
  7. 打开终端并运行命令"php FILENAME.php"

如果显示成功,说明.pem文件是正确的。