【发布时间】:2014-02-17 23:14:11
【问题描述】:
到目前为止,我已经为用户生成了证书
try {
Security.addProvider(new BouncyCastleProvider()); // adding provider
// to
String pathtoSave = "D://sureshtest.cer";
KeyPair keyPair = generateKeypair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
X509Certificate trustCert = createCertificate(null, "CN=CompanyName",
"CN=Owner", publicKey, privateKey);
java.security.cert.Certificate[] outChain = { trustCert, };
trustCert.checkValidity();
KeyStore outStore = KeyStore.getInstance("PKCS12");
outStore.load(null, null);
outStore.setKeyEntry("my own certificate", privateKey,
"admin123".toCharArray(), outChain);
OutputStream outputStream = new FileOutputStream(pathtoSave);
outStore.store(outputStream, "admin123".toCharArray());
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
以上代码生成带有私钥和公钥的证书。
现在我想使用由证书颁发机构 (CA) 颁发的签名证书签署该证书。之后我会将该证书授予用户。
我收到了一些输入 from here,这似乎不是我的案例所需的答案。
不需要完整的实现,只需一个有效的过程或一些提示就会有很大帮助。
【问题讨论】:
-
好的,它会生成证书——您需要帮助的具体是什么?
-
@chrylis 现在我想在颁发给用户之前签署该证书。
-
太好了。您是在询问如何使用 BouncyCastle 编写 Java 代码来做到这一点,还是想了解如何将 CSR 提交给 CA?请注意,除非您正在实施密钥托管系统,否则 CA 生成密钥通常被认为是错误的形式,因为它不需要知道私钥。
-
不向 CA 提交 CSR。我已经有一个有效的 CA 证书,使用该有效证书我想签署这个生成的证书。我在概念上是在错误的方向吗?还是做不到?
-
链接的问题如何使它不适合您的情况?它正在执行您所询问的确切操作。
标签: java security encryption x509certificate bouncycastle