lsv*_*lsv 94 windows openssl certificate trusted
我需要一个用于在Stunnel的CApath目录中发布的文件的哈希名称.我在这个目录中有一些证书,他们运作良好.我还有一个服务器sert和服务器密钥:
cert = c:\Program Files (x86)\stunnel\server_cert.pem
key = c:\Program> Files (x86)\stunnel\private\server_key.pem
Run Code Online (Sandbox Code Playgroud)
当我尝试计算新证书的哈希时,我收到一个错误:
/ etc/pki/tls/misc/c_hash cert.pem
无法加载证书140603809879880:错误:0906D06C:PEM例程:PEM_read_bio:无起始行:pem_lib.c:703:期望:TRUSTED CERTIFICATE
据我所知,我必须签署我的证书,但我不明白我该怎么做.请提供解决方案.
PS:
消息
无法加载证书140603809879880:错误:0906D06C:PEM例程:PEM_read_bio:无起始行:pem_lib.c:703:期望:TRUSTED CERTIFICATE:
当我为cert.pem制作c_hash时发布这不是server_cert.pem,这是Root_CA,它的内容类似于
----- BEGIN CERTIFICATE -----
... 6UXBNSDVg5rSx60 = ..
-----结束证书-----
当我写作
openssl x509 -noout -text -in cert.pem
在控制台面板中,我看到这个信息:
/etc/pki/tls/misc/c_hash cert.pem
unable to load certificate 140603809879880:error:0906D06C:PEM
routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Run Code Online (Sandbox Code Playgroud)
nra*_*aus 41
由于您使用的是Windows,请确保您的Windows中的证书"兼容",最重要的是它^M
在每行的最后都没有
如果你打开它,它将如下所示:
-----BEGIN CERTIFICATE-----^M
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
Run Code Online (Sandbox Code Playgroud)
解决"这个"用Write
或Notepad ++ 打开它并将其转换为Windows"风格"
尝试运行openssl x509 -text -inform DER -in server_cert.pem
并查看输出是什么,私钥/密钥不可能不受信任,只有从密钥库导出密钥时才需要信任,是吗?
Ron*_*ndo 29
另一个可能的原因是尝试在不是x509的东西上使用x509模块
服务器证书是x509格式,但私钥是rsa
所以,
openssl rsa -noout -text -in privkey.pem
openssl x509 -noout -text -in servercert.pem
Run Code Online (Sandbox Code Playgroud)
小智 12
我的情况有点不同.解决方案是从CERTIFICATE和PRIVATE KEY部分之外的所有内容中剥离.pem并反转它们出现的顺序.从pfx转换为pem文件后,证书看起来像这样:
Bag Attributes
localKeyID: ...
issuer=...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Bag Attributes
more garbage...
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
纠正文件后,它只是:
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
我的错误只是使用CSR文件而不是CERT文件。
如果你天真地尝试这样做,你可能会得到这个误导性的错误:
[clear] -> Private Key Encrypt -> [encrypted] -> Public Key Decrypt -> [clear]
Run Code Online (Sandbox Code Playgroud)
设计上不允许使用私钥加密数据。
您可以从看到开放SSL命令行选项是唯一的选择,以encrypt -> decrypt
在一个方向走public -> private
。
-encrypt encrypt with public key
-decrypt decrypt with private key
Run Code Online (Sandbox Code Playgroud)
另一个方向是故意阻止的,因为公钥基本上“可以猜到”。因此,使用私钥加密意味着您唯一获得的是验证作者是否可以访问私钥。
该private key encrypt -> public key decrypt
方向被称为“签名”,以区别于实际可以保护数据的技术。
-sign sign with private key
-verify verify with public key
Run Code Online (Sandbox Code Playgroud)
注意:为了清楚起见,我的描述是一个简化。阅读此答案以获取更多信息。
归档时间: |
|
查看次数: |
350730 次 |
最近记录: |