距离我来这里已经有一段时间了。
我的环境中有300台新服务器,我的组织希望使用“ OpenSSL”生成证书。我有系统的名称,在此之前我曾使用过OpenssL,事实是,我不想整日坐着反复输入每条信息超过300次。我想使它自动化。到目前为止,一切正常,直到我必须输入有关州,通用名称,位置,组织等的信息为止。
我的问题是使用Powershell;如何将这些信息输入Openssl?
仅供参考,最近两天我一直在搜索互联网。我经常遇到bash脚本,Openssl手册,“如何做”(没有自动化)来生成证书,尤其是使用powershell时。
我确实遇到了一个结果,该人员使用了一个函数,但是它所做的只是生成一个请求,而不是多个请求,并且他根本没有输入任何信息。但是他最终获得了企业社会责任,所以我感到困惑。
这是我当前的代码,为了保护隐私,我已将其清除:
_handler
图片1:
答案 0 :(得分:2)
在深入探讨如何将主题参数传递给openssl
之前,我必须警告您,预定的方法很可能 一个非常糟糕的主意 !
公钥密码学背后的整个思想是,大多数密钥材料必须保持为秘密(或 private ),并且验证者仅需要一小部分(公钥)来加密只有私钥持有者才能解密的数据,而该数据又可以用于身份验证。
如果私钥的副本存在于多台计算机上,则多台计算机可以声明与相应证书关联的身份(即服务器或网站名称)。
由于这个原因,我会强烈建议编写脚本以在本地生成单个密钥+证书,然后在每台计算机上执行该脚本-这样,私钥材料就不必离开主机。
openssl req
假设您使用的是openssl
的最新可用版本,则req
上下文应具有一个-subj
开关,您可以将完整的主题传递给该开关:
openssl req -new -key $key_out -sha256 -out $Pem_out -verify -newhdr -subj "/C=US/ST=NY/L=Albany/O=SuperCorp Ltd./CN=server.fqdn"
所有您需要做的就是从已经准备好的变量构造主题字符串:
$subject = "/C=${Country_Name}/ST=${State_Name}/L=${Locality_Name}/O=${Org_Name}/OU=${Org_Unit_Name}/CN=server.fqdn"
openssl req -new -key $key_out -sha256 -out $Pem_out -verify -newhdr -subj $subject