我正在尝试通过 shell 进行自动化/脚本编写,这是为我们的一个团队构建服务器后配置的方法,也是安装完毕后的最后步骤之一,即生成 SSL 密钥和 csr 文件,以便上传到我们的内部证书管理/签名工具。
现有流程让他们运行以下 2 个命令并手动输入所有详细信息(密码、可分辨名称详细信息、属性等):
#create private key
openssl genrsa -des3 -out filename.key 2048
#generate csr
openssl req -new -key filename.key -out filename.csr
我选择使用以下流程来尝试实现自动化:首先生成一个配置文件,其中包含所需的详细信息,例如
[ req ]
default_bits = 2048
distinguished_name = disname
.....
[ disname ]
C = NN
ST = name
.....
然后运行组合命令,使用一些定义的变量来生成文件
openssl req -newkey rsa:2048 -passout pass:${passPhrase} -config config.file\
-keyout filename.key -out filename.csr
这个命令似乎很管用,但是……我们注意到这个组合命令的密钥输出与原始命令不同。原始方法是-des3
创建一个密钥文件,在前面说明以下内容:
----BEGIN RSA PRIVATE KEY----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC, nnnnnnnnnnnnn
通过组合方法创建的文件仅包含:
----BEGIN ENCRYPTED PRIVATE KEY----
问题是,这是否是一样的,只是一种方法在开头放置了不同的信息,还是根本上不同,我需要恢复到旧方式或做其他事情才能获得相同级别/方法的加密?
答案1
我找到了做我需要做的事情的方法。
2 步骤流程:
1-密钥创建(无提示)
openssl genrsa -passout:${passphrase} -des3 -out filename.key 2048
2 - 无需提示即可通过密钥创建 csr
openssl req -passin pass:${passphrase} -config config.file -new\
-key filename.key -out filename.csr