我需要一个用于在Stunnel的CApath目录中发布的文件的哈希名称。我在这个目录中有一些证书,他们运作良好。另外,我有一个服务器sert和服务器密钥:
cert = c:\Program Files (x86)\stunnel\server_cert.pem
key = c:\Program> Files (x86)\stunnel\private\server_key.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
据我所知,我必须签署我的证书,但我不明白我该怎么做。 请提供解决方案。
P.S:
消息
unable to load certificate 140603809879880:error:0906D06C:PEM
routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE:
当 cert.pem c_hash 时发布了这不是server_cert.pem,这是Root_CA,它的内容类似于
-----BEGIN CERTIFICATE-----
...6UXBNSDVg5rSx60=..
-----END CERTIFICATE-----
写作时
openssl x509 -noout -text -in cert.pem
在控制台面板中,我看到了以下信息:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=BE, ST=BB, L=BB, O=BANKSYS NV, OU=SCY, CN=TEST Root CA
Validity
Not Before: May 31 08:06:40 2005 GMT
Not After : May 31 08:06:40 2020 GMT
Subject: C=BE, ST=BB, L=BB, O=BB NV, OU=SCY, CN=TEST Root CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:82:c8:58:1e:e5:7a:b2:63:a6:15:bd:f9:bb:1f:
............
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
X509v3 Subject Key Identifier:
76:70:AB:92:9B:B1:26:CE:9E:93:D8:77:4F:78:0D:B8:D4:6C:DA:C6
Signature Algorithm: sha1WithRSAEncryption
2c:7e:bd:3f:da:48:a4:df:8d:7c:96:58:f7:87:bd:e7:16:24:
...............
答案 0 :(得分:36)
由于您使用的是Windows,请确保Windows中的证书“兼容”,最重要的是它在每行末尾没有^M
如果你打开它,它将如下所示:
-----BEGIN CERTIFICATE-----^M
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
要解决“this”,请使用Write
或Notepad ++将其打开并将其转换为Windows“style”
尝试运行openssl x509 -text -inform DER -in server_cert.pem
并查看输出是什么,私钥/密钥不可能不受信任,只有从密钥库导出密钥时才需要信任,是吗?
答案 1 :(得分:20)
另一个可能的原因是尝试在不是x509
的东西上使用x509模块服务器证书是x509格式,但私钥是rsa
所以,
openssl rsa -noout -text -in privkey.pem
openssl x509 -noout -text -in servercert.pem
答案 2 :(得分:11)
我的情况有点不同。解决方案是从CERTIFICATE和PRIVATE KEY部分之外的所有内容中剥离.pem并反转它们出现的顺序。 从pfx转换为pem文件后,证书看起来像这样:
Bag Attributes
localKeyID: ...
issuer=...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Bag Attributes
more garbage...
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
更正文件后,它只是:
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
答案 3 :(得分:6)
我在使用Windows时遇到了同样的问题,如果通过在Notepad ++中打开并修改了#34; UCS-2 LE BOM"到" UTF-8"。
答案 4 :(得分:6)
我的错误只是使用CSR文件而不是CERT文件。
答案 5 :(得分:4)
如果您天真地尝试这样做,您可能会遇到这种误导性错误:
[clear] -> Private Key Encrypt -> [encrypted] -> Public Key Decrypt -> [clear]
设计不允许使用私钥加密数据。
您可以从command line options for open ssl看到encrypt -> decrypt
的唯一选项朝一个方向public -> private
。
-encrypt encrypt with public key
-decrypt decrypt with private key
故意阻止另一个方向,因为公钥基本上“可以猜到”。因此,使用私钥进行加密意味着您获得的唯一功能就是验证作者是否可以访问私钥。
private key encrypt -> public key decrypt
方向称为“签名”,以区别于实际保护数据的技术。
-sign sign with private key
-verify verify with public key
注意:为简洁起见,我的描述是简化的。 Read this answer for more information 的
答案 6 :(得分:4)
更改记事本++中的编码带BOM的UTF-8 。这就是它对我有用的方式