gpt4 book ai didi

node.js - 唯一标识HTTPS证书

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:52 24 4
gpt4 key购买 nike

在 NodeJS 中,您可以使用 req.connection.getPeerCertificate() 从 HTTPS 连接获取客户端证书。这会产生如下结构(通过 this code 生成的自签名证书):

{ subject:
{ C: 'US',
ST: 'Utah',
L: 'Provo',
O: 'ACME App Client',
CN: 'client.example.net' },
issuer:
{ C: 'US',
ST: 'Utah',
L: 'Provo',
O: 'ACME Signing Authority Inc',
CN: 'example.com' },
modulus: 'A1E576A9017A839A8986664FE3159A8E2199D35AFCD0D55F27E1169C8D2C9E90E634F353C143EB05C03C297390070F9AF0752727AA7F5212CACE5B2B503418584392F4CF3D2669EE394EE310572E0C26EAF1D9FF4AB14B7F1CF155AF4DBA48263357FDC99778E568F39F8D68AA34496F2D10A66CC1ED99EB17CDE8D10FBE850B386D593CC3AD42A8AF0FC25EFABB14018418EE7E56111E073D81447EE14D0D242F242B4507B2325F06D5ABF0FFCD986958D4E843D700FA97E88C6BBCB91958FCA142EFE4D85D6A0FBE8A0C74BBED001C6B9F4452C926AD77858C71057096A07E056BE33F8568B84373930CFD489C4E7FA1B09F63413114F2AC97EA0C0CF3B98B',
exponent: '10001',
valid_from: 'Jul 8 19:26:10 2015 GMT',
valid_to: 'Jul 7 19:26:10 2018 GMT',
fingerprint: 'F1:40:33:5E:D0:9F:1A:F0:07:3B:B9:6C:BA:90:26:33:3F:A0:2D:F0',
serialNumber: 'FF164CD2E63BFDF7',
raw: <Buffer 30 82 03 46 30 82 02 2e 02 09 00 ff 16 4c d2 e6 3b fd f7 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 67 31 0b 30 09 06 03 55 04 06 13 02 55 53 31 ... > }

这些字段中的哪些(如果有的话)适合视为客户端的加密安全身份,就像我的 SSH 公钥可能被视为我的身份一样?

根据 How do you test a public/private DSA keypair? ,比较 modulus 可确保证书与身份匹配。这将使我相信 modulus 将是调用“身份”的适当字段,并且同意 RSA Encryption (Key generation),其中不同的 key 对将始终具有不同的模数。然而,我还没有找到任何可靠的信息让我相信模数在所有情况下都是完全唯一的(例如,指纹通常应该是唯一的,但由于它更短,所以更容易找到碰撞[并伪造身份] 如果我将指纹视为 UUID)。

理想情况下,我正在寻找有关证书中包含的信息的性质的更多信息。我的大部分搜索结果都是关于如何使用 openssl 的信息,而不是所涉及的概念。

最佳答案

fingerprint: 'F1:40:33:5E:D0:9F:1A:F0:07:3B:B9:6C:BA:90:26:33:3F:A0:2D:F0',

指纹对于证书来说是唯一的,相当于SSH中 key 的指纹。

关于node.js - 唯一标识HTTPS证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31302252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com