首先介绍一下在linux命令行里需要执行的三步操作:
1.openssl genrsa -out /opt/tomcat/webapps/Test_RSA/rsa_test10_key.pem 1024
第一句命令执行后会生成一个文件名为:rsa_test10_key.pem
2.openssl rsa -in /opt/tomcat/webapps/Test_RSA/rsa_test10_key.pem -pubout -out /opt/tomcat/webapps/Test_RSA/rsa_public_test10_key.pem
第二句命令执行后会生成一个名为:rsa_public_test10_key.pem 的公钥文件
3.openssl pkcs8 -topk8 -inform PEM -in /opt/tomcat/webapps/Test_RSA/rsa_test10_key.pem -outform PEM -nocrypt -out /opt/tomcat/webapps/Test_RSA/private_key_test10_pkcs8.pem
第三句命令执行后会生成一个名为:private_key_test10_pkcs8.pem 的私钥文件
下面用java代码执行linux命令生成.pem证书
try {
Process process = Runtime.getRuntime().exec("openssl genrsa -out /opt/tomcat/webapps/Test_RSA/rsa_test10_key.pem 1024");
InputStreamReader reader = new InputStreamReader(process.getInputStream());
LineNumberReader line = new LineNumberReader(reader);
String str;
while ((str = line.readLine()) != null) {
System.out.println(str);
}
Process process1 = Runtime.getRuntime().exec("openssl rsa -in /opt/tomcat/webapps/Test_RSA/rsa_test10_key.pem -pubout -out /opt/tomcat/webapps/Test_RSA/rsa_public_test10_key.pem");
InputStreamReader reader1 = new InputStreamReader(process1.getInputStream());
LineNumberReader line1 = new LineNumberReader(reader1);
String str1;
while ((str1 = line1.readLine()) != null) {
System.out.println(str1);
}
Process process2 = Runtime.getRuntime().exec("openssl pkcs8 -topk8 -inform PEM -in /opt/tomcat/webapps/Test_RSA/rsa_test10_key.pem -outform PEM -nocrypt -out /opt/tomcat/webapps/Test_RSA/private_key_test10_pkcs8.pem");
InputStreamReader reader2 = new InputStreamReader(
process2.getInputStream());
LineNumberReader line2 = new LineNumberReader(reader2);
String str2;
while ((str2 = line2.readLine()) != null) {
System.out.println(str2);
}
} catch (Exception e) {
e.printStackTrace();
}
Process 是执行linux命令后返回的对象,可以用流的方式把结果打印出来。