使用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
相关产品推荐
相关产品推荐

