我想通过 TLS 使用 OpenPGP 身份验证,但由于缺乏实现,我使用了一个临时解决方案:OpenPGP/X.509 桥接证书。
该方法与 Foaf 中使用的方法非常相似:
https ://svn.java.net/svn/sommer~svn/trunk/misc/FoafServer/pgpx509/src/net/java/dev/sommer/foafserver/utils/ PgpX509Bridge.java
基本上,您从转换后的 PGP 私钥开始创建证书请求,包括您转换后的 PGP 公钥到证书请求中。然后使用转换后的 PGP 私钥签署请求。
我使用“ converted ”这个词是因为 OpenPGP 和 OpenSSL 密钥格式不兼容:我必须从 OpenPGP 密钥中提取密钥参数并使用它们来形成一个新的 X.509 兼容 (OpenSSL) 密钥。然而,它按预期工作。
结果是一个 X.509 证书,其中包含 X.509 证书的公钥中使用的 PGP 公钥参数,但没有用户 ID 和公钥签名,因此无法用于身份验证。
这里缺少的部分是服务器身份验证。服务器之前已经签署了用户的 PGP 公钥,但是我如何通过 X.509 桥接证书来验证呢?
即使我使用我的 PGP 用户 ID 作为我的 CN(通用名称),我如何证明它与原始 OpenPGP 密钥中使用的用户 ID 相同?
X.509 网桥证书上没有公钥签名,只有相同的密钥参数。我可以安全地检查这些吗?
尽管我必须在 Python 中执行此操作,但任何关于如何进行的建议都会非常有帮助。