RSA 私钥切换 prime1/prime2 和 exponent1/exponent2

1 openssl rsa certificate private-key

我的 Firefox/Thunderbird 版本高于 31 时有证书问题。由于未知原因,导入失败。我可以在旧版本的 F/T 中导入证书并再次导出,之后它在当前版本中运行良好。我发现证书之间的唯一区别是私钥属性。证书采用 pkcs12 格式。

首先我提取了私钥

openssl pkcs12 -in certificate.p12 -nocerts -out privatekey.pem
Run Code Online (Sandbox Code Playgroud)

然后我打印出详细信息

openssl rsa -in privatekey.pem -text -noout
Run Code Online (Sandbox Code Playgroud)

我从我的旧证书和导出的证书中得到完全相同的输出,除了 prime1、prime2 和 exponent1、exponent2 被切换并且系数不同。

有没有简单的方法可以用命令解决问题?也许是一个 openssl 命令?

附加信息:
来自工作导出私钥的 prime1 和 prime2。在旧的私钥中,它的输出完全相同,但 prime1 和 prime2 相同,反之亦然。

prime1:
    00:f6:63:95:7c:1a:96:4f:33:c7:dd:3f:a4:dc:7d:
    00:5f:e3:0e:93:d7:2f:88:d1:44:f3:2b:75:38:00:
    18:bb:19:ba:af:ac:20:34:93:d0:42:fb:d7:73:66:
    f6:cc:d8:10:b1:31:ea:f8:79:5d:f5:08:56:2f:2d:
    d8:31:e6:6e:62:92:89:eb:1e:44:31:ed:92:0a:a1:
    02:ef:f5:f7:7c:2c:a0:26:60:5b:95:3a:a4:44:fa:
    dc:ce:99:88:88:d7:f2:25:1d:48:6f:c6:b4:72:d0:
    b0:50:59:18:e8:81:c7:13:45:e2:04:38:8f:d7:53:
    50:0a:7a:44:8f:21:e9:d4:bd

prime2:
    00:96:4a:84:35:b9:bd:0c:f4:00:e1:d4:2e:f7:49:
    ce:a5:0f:3d:90:83:ad:5b:7b:e0:06:a4:a1:6a:bd:
    2e:7c:3c:b8:1c:f1:b9:45:fc:41:00:ec:70:5b:ba:
    00:21:62:df:54:07:9a:b1:09:93:89:27:f8:29:55:
    bf:90:81:ea:07:ef:0f:dd:ca:11:da:d6:aa:e7:de:
    16:6c:68:52:fe:51:e6:20:46:3c:97:af:e2:a6:fd:
    ef:bb:e3:08:9d:13:18:88:51:73:ae:81:15:7c:1b:
    86:52:d5:16:cc:86:66:8e:b8:48:b9:6c:14:27:10:
    82:8e:04:e6:ea:25:af:20:53
Run Code Online (Sandbox Code Playgroud)

小智 8

这是答案。

prime1: p
prime2: q
modulus: N = p * q
publicExponent: e
privateExponent: d
Run Code Online (Sandbox Code Playgroud)

看看这篇关于使用中国余数算法的文章

exponent1 = dp
exponent2 = dq
coefficient = qInv
Run Code Online (Sandbox Code Playgroud)

请参阅此参考