Java请求使用证书签名的密码

Java请求使用证书签名的密码,java,certificate,keystore,Java,Certificate,Keystore,我们正在创建一个小程序,以便来自站点的用户可以使用安装在其浏览器中的证书签署文档 问题是,为了更高级别的安全性,我们希望请求用户引入证书的“密码”。浏览器中安装的证书均正确导入了所有p12文件(按照正常流程要求,已引入密码) 当我们运行此代码时 Java.Security.KeyStore key2 = obtainCertificates(); Java.Security.PrivateKey key = (Java.Security.PrivateKey) key2.getKey(alias

我们正在创建一个小程序,以便来自站点的用户可以使用安装在其浏览器中的证书签署文档

问题是,为了更高级别的安全性,我们希望请求用户引入证书的“密码”。浏览器中安装的证书均正确导入了所有p12文件(按照正常流程要求,已引入密码)

当我们运行此代码时

Java.Security.KeyStore key2 = obtainCertificates();
Java.Security.PrivateKey key = (Java.Security.PrivateKey) key2.getKey(alias,password.toCharArray());
System.out.println("PK is " + key);
System.out.println("alias " + alias);
if (key == null || key.equals("") || key.equals(" ")) {
    System.out.println("Password is wrong");
    return "CLAVEINCORRECTA";
}
无论“password”的值是……,它都有效

我们如何让系统检查引入的密码是否与浏览器中加载的证书的密码匹配


我们知道,这可以通过KeyStore.load()完成。。。但是我们不希望用户告诉我们证书的文件在哪里。。。我们只想使用浏览器中安装的证书。

您是否尝试过>Key Key=keyStore.getKey(别名,password.tocharray());String encodedKey=new Base64Encoder().encode(key.getEncoded());嗨,谢谢。我已经看过你的建议,我想你的建议是检查私钥。获取私钥这不是问题,我们希望从浏览器获取证书,然后向用户请求证书的密码(变量“password”),以确保用户可以使用此证书签署文档。我们可以获得证书的私钥,但是使用函数getKey,不管您引入什么密码,它总是有效的。如何要求用户输入密码并检查密码是否与证书匹配?。