因此,主要问题是“我是否可以使用经过身份验证的加密来存储OpenSSL私钥(特别是RSA密钥)?”
OpenSSL支持广泛的密钥加密选项,但是其中许多选项似乎只支持作为输出,而不支持作为输入。例如,openssl genrsa -aes256
可以很好地工作,并创建一个您可以解密并在以后使用的密钥(但使用的是CBC模式),但是如果您使用openssl genrsa -aes-256-gcm
,则OpenSSL不能使用生成的密钥。确切的错误消息似乎因版本而异,最新的1.1.0h提供:
root@cb772d20894d:/# openssl genrsa -aes-256-gcm | openssl rsa
Generating RSA private key, 2048 bit long modulus
.................................................+++
................................................+++
e is 65537 (0x010001)
Enter pass phrase:
Verifying - Enter pass phrase:
Enter pass phrase:
unable to load Private Key
139772421357760:error:0906A065:PEM routines:PEM_do_header:bad decrypt:../crypto/pem/pem_lib.c:445:
而较旧的版本甚至不会走得那么远,因为:
140678952371864:error:0906B072:PEM routines:PEM_get_EVP_CIPHER_INFO:unsupported encryption:pem_lib.c:544:
aes-256-ocb
和aes-256-ccm
也显示了相同的错误。我想这就是所有可用的认证密码了?也许我在OpenSSL中的某个地方错过了允许这样做的选项?
发布于 2018-05-31 08:02:42
对OpenSSL代码的一些探索表明,EVP key加密层不理解auth标记,因此它们只是被丢弃,而不是像人们预期的那样存储在IV中。因此,目前没有AEAD密码与密钥加密系统一起工作。
https://stackoverflow.com/questions/50613896
复制相似问题