相关疑难解决方法(0)

"BEGIN RSA PRIVATE KEY"和"BEGIN PRIVATE KEY"之间的差异

嗨,我正在编写一个程序,从一个.pem文件导入私钥,并创建一个私钥对象,以便以后使用它.我遇到的问题是一些pem文件头开头

-----BEGIN PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

而其他人开始

-----BEGIN RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

通过我的搜索我知道第一个PKCS#8格式化,但我不知道另一个格式是什么格式.

openssl rsa pem private-key

128
推荐指数
2
解决办法
11万
查看次数

如何使用openssl创建公钥和私钥?

我的问题是如何在Windows中使用OpenSSL创建公钥和私钥,以及如何将创建的公钥放在.crt文件中,将私有密钥放在.pcks8文件中,以便使用这两个密钥在Java中签署SAML断言

提前致谢

openssl rsa saml digital-signature

10
推荐指数
1
解决办法
2万
查看次数

如何用C语言在OpenSSL 3.0中从原始数据正确创建RSA密钥?

我对 OpenSSL 相当陌生,我当前的工作任务是将项目的代码从 OpenSSL 1.1.1 更新到 OpenSSL 3.0,但我遇到了一个非常奇怪的问题。

我正在尝试根据给定的原始数据、转换为 BIGNUM 的精确二进制模数和指数创建 RSA 密钥。我尝试按照手册中的描述进行操作,并且密钥创建工作正常,但问题是我尝试使用该密钥(或基于它的 CTX)执行的任何操作都会失败,无论是签名解密还是验证。

这是我创建密钥的代码:

    /* function set up above */
    ctx = EVP_PKEY_CTX_new_from_name(NULL, "RSA", NULL);
    if ( ctx == NULL) {
        ERROR("Error: failed to initialize CTX from name.\n");
        goto OPENSSL_ERROR;
    }

    modulus = BN_bin2bn(pubkey->data, pubkey->size, NULL);
    exponent = BN_bin2bn(exp_arr, 3, NULL);
    if ( modulus == NULL || exponent == NULL ) {
        goto OPENSSL_ERROR;
    }

    OSSL_PARAM params[] = {
        OSSL_PARAM_BN("n", &modulus, BN_num_bytes(modulus)*8),
        OSSL_PARAM_BN("e", &exponent, BN_num_bytes(exponent)*8),
        OSSL_PARAM_BN("d", NULL, 0),
        OSSL_PARAM_END …
Run Code Online (Sandbox Code Playgroud)

c openssl cryptography rsa

5
推荐指数
1
解决办法
1823
查看次数

由于嵌套的asn1错误,Rails无法从环境读取证书信息

我有一些证书文件,即.key文件,其中说:

-----BEGIN RSA PRIVATE KEY-----
IEpAIBAAKCAQEAwAwxt4edIh3UuK8r5
....blablabla..................
QSNoquaasdsaKDybrezemVqCxsQjg==
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

因此,这是RSA私钥。

我曾经从这样的文件加载它们:

@private_key = OpenSSL::PKey::RSA.new(File.read(private_key_file))
Run Code Online (Sandbox Code Playgroud)

但是,由于我使用的是Heroku,所以我打算将证书另存为它们在环境变量中的值。

所以我将它们粘贴到了我的.env文件中

COMPANY_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKC.....\n-----END RSA PRIVATE KEY-----"
Run Code Online (Sandbox Code Playgroud)

是的,我在Heroku中基于多行配置变量切换了\nfor显式。所以现在我的代码看起来像这样:\\n

@private_key = OpenSSL::PKey::RSA.new(ENV['COMPANY_KEY'])
Run Code Online (Sandbox Code Playgroud)

而且,如果我从控制台运行它,则会得到构建的对象。但是,如果我尝试从Web服务器(基于Rails 4.2.6的Puma 3.4.0,Ruby 2.2.3)运行它,它会惨不忍睹:Neither PUB key nor PRIV key:: nested asn1 error在尝试运行同一行时。

如果我使用调试控制台,则可以看到读取的文件看起来像 "Line 1\\nLine3\\nLinea3"这样……

我很确定这与文件格式有关,但是我全都没有想法,如果遇到像我这样的问题,也许可以帮上忙。

ruby ruby-on-rails heroku

2
推荐指数
1
解决办法
2867
查看次数

d2i_RSA_PUBKEY、d2i_RSAPrivateKey 和 d2i_RSAPublicKey 返回 NULL

我使用以下命令创建了 RSA 私钥:

 openssl genrsa -out keypair.pem 2048
Run Code Online (Sandbox Code Playgroud)

我必须在该项目中使用 DER 编码的密钥 (PKCS#1),因此我从这个 PEM 编码的私钥文件生成了两个 DER 文件 - 一个包含私钥,另一个包含公钥。

openssl rsa -inform PEM -in keypair.pem -outform DER -pubout -out public.der

openssl rsa -inform PEM -in keypair.pem -outform DER -out private.der
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我将这两个文件的内容加载到 char* 变量中。

以下均未按预期工作:

d2i_RSA_PUBKEY(NULL, &public_key_bytes, public_key_length);

d2i_RSAPublicKey(NULL, &public_key_bytes, public_key_length);

d2i_RSAPrivateKey(NULL, &private_key_bytes, private_key_length);
Run Code Online (Sandbox Code Playgroud)

我知道这一点,因为他们都回来了null。我还尝试了以下方法:

RSA * rsa = RSA_new();
d2i_RSA_PUBKEY(&rsa, &public_key_bytes, public_key_length);

RSA * rsa = RSA_new();
d2i_RSAPublicKey(&rsa, &public_key_bytes, public_key_length);

RSA * rsa = RSA_new();
d2i_RSAPrivateKey(&rsa, &private_key_bytes, private_key_length);
Run Code Online (Sandbox Code Playgroud)

皆归 …

c openssl rsa

1
推荐指数
1
解决办法
5534
查看次数