1

是否可以在不使用 sun.* 或 com.sun.* 包且不使用外部库的情况下使用 Java 代码生成证书签名请求?如果我需要使用像 BouncyCastle 这样的库,我会研究它,但到目前为止,我的所有搜索都只显示了使用 sun 包或 BouncyCastle 的示例,如果可能的话,我更愿意坚持使用原始 API。

而且,如果我正在尝试的事情是不可能的,那么最好的方法是什么?

4

2 回答 2

2

我不认为这是可能的。接受这一点,直到有人有更好的答案或它成为可能。

FWIW,我最终使用外壳调用keytool来执行此操作。

于 2012-12-11T03:15:52.110 回答
0

很抱歉回复得太晚了,但我想我还是会尝试的。Bouncy Castle 或 Java 库让您的工作轻松完成这项任务。但是,如果您不能将这些库用于您的项目,那么我对您的回答仍然是“是”,但您必须非常熟悉 ASN1 编码。我认为你没有理由不能从现有的 CSR 中学习。当我不得不做类似的事情时,这个站点 ( http://lapo.it/asn1js/ ) 极大地帮助了我理解 ASN1。一旦您了解了 CSR 的格式,在我之前提到的 ASN1 工具的帮助下,如何重新利用示例 CSR 以供您使用就变得很清楚了。在高层次上,你会

  1. 读入示例文件
  2. 通过 TLV(类型-长度-值)编码解析
  3. 用您想要的数据替换字段
  4. 数字签名
  5. 嵌入签名
  6. 将内容写回文件

java.security.Signature 对象应该能够帮助您完成签名部分。

于 2016-08-04T02:24:59.773 回答