好的,这是一个很长的问题。据我所知,问题的根源是消息“抱歉,您为此操作提供了错误的密钥类型!您提供了null,但需要java.security.PrivateKey。”您正尝试使用公钥签名邮件。这是不可能的。只是在逻辑上看它,使用公钥进行签名不会提供任何证明签名者的意图,因为每个人都可以使用。
您需要做的是使用私钥进行签名。在您的情况下,您已在计算机上生成公钥和私钥,然后将CSR发送到CA并收到CA签名的证书。 您应该使用本地计算机上的privat密钥对邮件进行签名,并将CA签名证书发送给收件人,以便他们可以使用它来确认您的签名。
在 我的这篇博文 我将解释如何获取凭据,包括Java密钥库中的私钥。