You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java ProcessBuilder执行openssl ca签名CSR文件遇阻求助

Java调用OpenSSL签名CSR的交互流程问题

我正在自动化生成Web授权所需的.p12签名证书流程,已通过JDK的keytool工具生成密钥对(.p12)和证书请求(.csr)文件,现在需要使用OpenSSL通过中间证书对.csr进行签名。但与使用ProcessBuilder或Runtime.getRuntime().exec(...)执行keytool命令的顺畅情况不同,通过Java Process对象调用openssl时出现了问题。

需要执行的命令如下:

openssl ca -config ./CA_config.cnf -extensions my_client_cert -infiles ./CA_certreqs/MY_CLIENT_AAAAAA.csr

该命令执行过程中需要3处手动输入:

  • 输入CA_config.cnf指向的CA_certificate.crt的密码;
  • 确认是否签名证书 - [y/n];
  • 确认是否提交结果 - [y/n]。

我编写了对应的Java代码,但程序无法完成整个流程,甚至无法进入第一个输入密码的环节,最多只能捕获到输出行Using configuration from ./CA_config.cnf。

已确认环境配置无异常:

  • openssl目录已加入%PATH%;
  • 所有所需文件和文件夹均存在,若配置或文件有误能正常捕获错误信息。

已尝试的解决方法包括:忽略控制台输出、多种等待方式、直接调用openssl.exe而非cmd.exe、调整字符串编码等,但均未解决问题。现寻求不通过.bat文件的解决方案,希望得到关于Process对象流交互的正确方法指导。

操作系统:Windows 10 x64


内容的提问来源于stack exchange,提问作者Dmytro Moskovchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:05:21