谁能告诉我从文件中提取/转换证书.crt和私钥.key文件的正确方法/命令.pem?我刚读过它们是可以互换的,但不是如何.
我有一个.key文件
openssl rsa -text -in file.key
我明白了
unable to load Private Key
140000419358368:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY
Run Code Online (Sandbox Code Playgroud)
我也有一个.cer文件,当我这样做
openssl x509 -text -in file.cer
我明白了
unable to load certificate
140387178489504:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Run Code Online (Sandbox Code Playgroud)
但如果在这里指出我运行命令,如:
openssl x509 -text -inform DER -in file.cer
我明白了
Certificate:
Data:
Version: 3 (0x2)
Some more information
...
-----BEGIN CERTIFICATE-----
MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NjcwDQYJKoZIhvcNAQEF
...
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
但这似乎与关键不起作用,因为当我跑
openssl rsa -text -inform DER -in aaa010101aaa__csd_10.key
我明白了
unable to load Private Key
140004844304032:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1337: …Run Code Online (Sandbox Code Playgroud) [免责声明:我知道,如果你对加密有任何了解,你可能会告诉我为什么我做错了 - 我已经做了足够的谷歌搜索,知道这似乎是典型的反应.]
假设以下内容:您有一个中央权限,想要为给定域发出登录cookie.在此域上,您不一定信任所有人,但您有一些能够读取cookie的关键端点.我说了一些,但在实践中,这些"可信"的合作伙伴可能很大.Cookie不包含太多信息 - 用户名,时间戳,到期日,随机数.当然,出于性能原因,即使在加密后(在合理范围内),它仍应保持很小.现在,有两个安全问题:
1)我们不信任此域上的每个网络服务器都有用户数据.因此,读取cookie的能力应仅限于这些可信赖的合作伙伴.2)虽然我们相信这些合作伙伴能够保护我们用户的数据,但我们仍然希望权威的中心点是不可伪造的(同样在合理范围内).
现在,如果我们为权限生成私有RSA密钥并保密,并将公钥仅分发给"可信伙伴",我们应该能够使用私钥进行加密,并且任何拥有公钥的人都可以读取它. .我不清楚的是,是否仍然需要签署该消息,或者解密行为是否是使用私钥生成的证据?这种方案的优点还是比向所有相关方传播对称密钥并使用它加密更好或更差,而使用私钥只是为了签名?当然可以随意告诉我这是一个愚蠢的想法,但请记住,实际的论点可能比重塑爱丽丝和鲍勃更有说服力.
哦,并且实现指针是受欢迎的,尽管可以在Google上找到基础知识,如果有任何"陷阱"可能会有用!
我的Apache服务器中有一个php脚本,必须向合作伙伴的服务器发送curl请求.合作伙伴给我一个.pem文件,我必须附加到我对api做的每一个电话.
我的php脚本如下:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSLCERT, "test.pem" );
curl_setopt($ch,CURLOPT_SSLCERTTYPE,"PEM");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);
curl_setopt($ch, CURLOPT_POST, True);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);
if(!$result)
{
echo "Curl Error: " . curl_error($ch);
}
else
{
echo "Success: ". $result;
}
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
它返回:
卷曲错误:无法设置私钥文件:'test.pem'类型为PEM
考虑它发送给我.pem文件并说"它没有密码短语"
我正在尝试使用我的数据签名 Crypt::OpenSSL::RSA perl.这是我的代码
use Crypt::OpenSSL::RSA;
open $privfh, '>:encoding(UTF-8)', 'private_key';
$rsa = Crypt::OpenSSL::RSA->generate_key(1024);
$key_string=$rsa->get_private_key_string();
print $privfh $key_string;
$rsa_priv = Crypt::OpenSSL::RSA->new_private_key($key_string);
$rsa_pub = $rsa->get_public_key_string();
$plaintext="hello";
$signature = $rsa_priv->sign($plaintext);
print "Signed correctly\n" if ($rsa->verify($plaintext, $signature));
Run Code Online (Sandbox Code Playgroud)
这个程序运行正常,我能够正确签名数据.但问题是我必须签署大量数据,所以我写的key_string一个文件,以便我可以一次又一次地使用它,但问题是当我尝试再次使用它使用以下代码
use Crypt::OpenSSL::RSA;
open FILE ,'<','private_key';
{
local $/;
$keystring=<FILE>;
}
print "$keystring\n";
$rsa_priv = Crypt::OpenSSL::RSA->new_private_key($key_string);
Run Code Online (Sandbox Code Playgroud)
它抛出错误而不是生成$rsa_priv.该程序给出的错误是
RSA.xs:178: OpenSSL error: no start line at testperl.pl line 11, <FILE> line 1.我该怎么做才能在一次生成密钥后一次又一次地签名.
我正在 nodejs 应用程序中使用 googleapis,并且我正在尝试通过 gmail 帐户与日历进行交互。当我在本地机器上测试它时,它运行良好,但在部署它时出现错误
5|index | Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
5|index | at Sign.sign (crypto.js:331:26)
5|index | at Object.sign (/home/ec2-user/api/node_modules/jwa/index.js:55:45)
5|index | at Object.jwsSign [as sign] (/home/ec2-user/api/node_modules/jws/lib/sign-stream.js:23:24)
5|index | at GoogleToken.<anonymous> (/home/ec2-user/api/node_modules/gtoken/src/index.ts:251:13)
5|index | at step (/home/ec2-user/api/node_modules/gtoken/build/src/index.js:42:23)
5|index | at Object.next (/home/ec2-user/api/node_modules/gtoken/build/src/index.js:23:53)
5|index | at /home/ec2-user/api/node_modules/gtoken/build/src/index.js:17:71
5|index | at new Promise (<anonymous>)
Run Code Online (Sandbox Code Playgroud)
下面是我尝试使用它的控制器。
import { google } from 'googleapis'
import { Request, Response, NextFunction } from 'express';
export class HolidayController {
fetchHolidays(req: Request, res: Response, next: NextFunction) …Run Code Online (Sandbox Code Playgroud) openssl ×2
private-key ×2
ssl ×2
apache ×1
api ×1
certificate ×1
cookies ×1
cryptography ×1
curl ×1
encryption ×1
google-api ×1
google-oauth ×1
linux ×1
node.js ×1
perl ×1
php ×1
rsa ×1
sign ×1