Windows密钥库和证书
我最近继承了一个项目,其中包含执行文档数字签名的最少文档,我收到了一个让我感到有些困惑的变更请求.
该应用程序是基于Java的,并且使用Java Keystores(JKS)并使用指定为命令行操作的别名的私钥来对输入文档进行数字签名.这一切对我来说都相当简单,但是变更请求让我感到困惑. 客户端已请求使用“Windows”密钥库(更具体地说,就我所知,与个人证书相关的Windows-MY密钥库).现在,我最初的假设是客户端请求的内容根本不可能,因为此密钥存储区将只包含证书,这些证书不能用于以任何身份签署文档.我不正确,或者Windows-MY密钥库是否只包含公共证书?我不相信私钥会嵌入其中一个证书中. 不幸的是,有一些沟通困难,所以我想确保我的推理是正确的,然后继续进行. 以下是支持我案例的更多证据(来自客户的沟通): 创建Windows密钥库(从Java密钥库导出)步骤在这里 – >生成RSA密钥 keytool -genkey -alias mykey -keyalg RSA -keystore my.jks -keysize 2048 >从以上密钥库导出证书: keytool -export -alias mykey -file mykey.crt -keystore my.jks Enter keystore password: temp123 Certificate stored in file <mykey.crt> >在Windows密钥库中安装上述证书. 一个.双击“mykey.crt”并单击“安装证书” 湾选择“将所有证书放在以下商店中”单选按钮,然后单击“浏览”按钮将其添加到Windows证书库中. 除非我错了,否则keytool只生成证书类型而不是实际的公钥/私钥对? 任何协助甚至肯定都会受到高度赞赏,对于问题缺乏明确性表示道歉,但不幸的是,这是我现在必须处理的全部内容. 提前致谢 解决方法
您可能希望查看SunMSCAPI提供程序上的Oracle文档[
1],该文档可用于访问存储在Windows-MY(个人)和Windows-ROOT(受信任的根证书颁发机构)存储中的证书和密钥.
还有一些代码片段,它似乎非常合理地满足您的需求: KeyStore ks = KeyStore.getInstance("Windows-MY"); // Note: When a security manager is installed,// the following call requires SecurityPermission // "authProvider.SunMSCAPI". ks.load(null,null); byte[] data = ... String alias = "myRSA"; PrivateKey privKey = (PrivateKey) ks.getKey(alias,null); Certificate cert = ks.getCertificate(alias); Provider p = ks.getProvider(); Signature sig = Signature.getInstance("SHA1withRSA",p); sig.initSign(privKey); sig.update(data); byte[] signature = sig.sign(); System.out.println("tGenerated signature..."); sig.initVerify(cert); sig.update(data); if (sig.verify(signature)) { System.out.println("tSignature verified!"); } 总结:Windows-My商店包含证书和私钥,两者都可以使用SunMSCAPI提供程序从Java读取,并可用于签署数字文档. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 记忆管理 – WinRT是否有垃圾收集?
- Windows批处理脚本来取消隐藏病毒隐藏的文件
- 如何在Windows Workstation或Server上强制同步时间?
- 在Windows中逐步描述文件执行
- DNS服务详解
- windows-7 – 在关闭程序之前在Windows 7关闭时运行批处理文
- windows环境:idea或者eclipse指定用户名操作hadoop集群
- windows下用idea编写wordcount单词计数项目并打jar包上传到
- windows-phone-7 – 我们可以在Microsoft App Store上使用学
- .net – 什么是Microsoft.Contracts以及它来自哪里?
- win10上安装keras
- microsoft-metro – 平铺中的Appname – 更新
- windows下安装memcached,报错:Failed to ignor
- 编程Windows Phone 7与正常的.NET编程不同吗?
- 当我在Microsoft Windows PC上打开MATLAB [7.0(R
- 从Windows批处理文件调用powershell cmdlet
- Windows下安装Memcached的步骤说明
- windows – 完全禁用Hyper-V VM中的日期和时间同
- Microsoft .NET 3.5完全下载[已关闭]
- windows-server-2008-r2 – Windows Server 2008