Certificates
如何驗證根證書?
我編寫了一些擁有自己的私有/公共證書密鑰的證書頒發機構。該 CA 簽署使用者的公鑰。例如,如果我的使用者擁有由 CA 簽署的公共證書。如果他擁有 CA 的公共證書,我以後如何驗證使用者的證書是否確實由該 CA 簽名?我在 Python 中使用密碼學模組,我可以使用一些功能,但我不確定如何使用: 兩個證書的表示形式都是X. 509,這意味著可以獲取使用者的公鑰並使用驗證方法,這就是我使用它的方式:
caCert.public_key().verify(clientCert.signature,clientCert.tbs_certificate_bytes,padding.PSS( mgf=padding.MGF1(hashes.SHA256()),salt_length=padding.PSS.MAX_LENGTH),clientCert.signature_hash_algorithm)
但我仍然收到無效簽名錯誤
您的程式碼應該可以工作。
但是,您(隱含地?)假設證書使用 PSS 填充作為 RSA 簽名。雖然這是可能的,但在實踐中極為罕見,您應該嘗試使用 PKCS#1 v1.5 簽名填充進行驗證。
將我的最後一條評論轉換為答案,因為它顯然解決了問題。