我正在尝试遵循此文档(请参阅创建代码签名证书部分)以加密 p12 文件,但我总是收到相同的警告。
未知选项“Cert.p12”
难道我做错了什么?这是我正在运行的命令
openssl enc -aes-256-cbc -a -salt -k -in "Cert.p12" -out "Cert.p12.encrypted"
答案1
您的命令有错误。该-k
选项需要密码。
从man enc
页面:
-k 密码 派生密钥的密码。这是为了与以前版本的 OpenSSL 兼容。被 -pass 参数取代。
正如您所看到的,该选项已被该选项取代-pass
。因此,对您来说更好的交互式命令是(请注意缺少该-k
选项):
openssl enc aes-256-cbc -a -salt -in "Cert.p12" -out "Cert.p12.encrypted"
此时它将提示输入密码。如果您必须在脚本中包含密码(这很危险),请使用该-k
选项或较新的-pass pass:<your password>
.请阅读man openssl
的PASS PHRASE ARGUMENTS
部分,了解更安全的密码传递方式。
请注意,您可以删除enc
,它是在您指定密码时隐含的,并且-salt
默认情况下处于启用状态。因此,您可以使用:
openssl aes-256-cbc -a -in "Cert.p12" -out "Cert.p12.encrypted"
默认选项openssl
是加密,因此您不需要指示它这样做。但是,要解密,您需要添加-d
选项:
openssl aes-256-cbc -d -a -in "Cert.p12.encrypted" -out "Cert.p12.copy"