我想使用OpenPGP authentication over TLS,但缺乏實現讓我使用臨時解決方案:OpenPGP/X.509橋接證書。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私鑰簽署請求。
我用的是「轉換」因爲OpenPGP的和OpenSSL密鑰格式是不兼容的:我必須從中提取OpenPGP的關鍵的關鍵參數,並利用它們形成新的X.509兼容( OpenSSL)密鑰。儘管如此,它按預期工作。
結果是X.509證書與X.509證書的公共密鑰使用的PGP公鑰參數,但無需用戶ID和公共密鑰簽名,從而使其不能用於認證目的。
這裏缺少的是服務器認證。服務器先前已經簽署了用戶的PGP公鑰,但是如何通過X.509橋證書驗證?
即使我使用我的PGP用戶ID作爲我的CN(公用名稱),我如何證明它與原始OpenPGP密鑰中使用的用戶ID相同?
X.509橋證書上沒有公鑰簽名,只有相同的關鍵參數。我可以安全地檢查這些嗎?
儘管我必須在Python中這樣做,但關於如何進行一般操作的任何建議都會非常有用。