OpenSSL:PEM例程:PEM_read_bio:无起始行:pem_lib.c:703:预计:TRUSTED CERTIFICATE

我需要在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

无法加载证书140603809879880:错误:0906D06C:PEM例程:PEM_read_bio:无起始行:pem_lib.c:703:预计:TRUSTED CERTIFICATE

据我所知,我必须签署我的证书,但我不明白我该怎么做。 请提供解决scheme。

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

在控制台面板中,我看到这个信息:

  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: ............... 

1)既然你是在Windows上,请确保你的证书在Windows中是“兼容的”,最重要的是它没有^M在每行的结尾

如果你打开它会看起来像这样:

 -----BEGIN CERTIFICATE-----^M MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M 

要解决“这个”打开它与Write或记事本++,并将其转换为Windows“样式”

2)尝试运行openssl x509 -text -inform DER -in server_cert.pem并查看输出是什么,私钥/私钥不可能是不可信的,如果从密钥库中导出密钥,则只需要信任,你是否?

我的情况有点不同。 解决办法是从证书和私钥部分以外的所有东西中剥离.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----- 

我使用Windows时遇到了同样的问题,如果通过在Notepad ++中打开并将编码从“UCS-2 LE BOM”更改为“UTF-8”得到修复。

另一个可能的原因是尝试在x509以外的东西上使用x509模块

服务器证书是x509格式,但私钥是rsa

所以openssl rsa -noout -text -in privkey.pem openssl x509 -noout -text -in servercert.pem

你可以得到这个误导性的错误,如果你天真地尝试这样做:

 Plain text -> Private Key encrypt -> <enc text> -> Public Key decrypt -> 

devise不允许使用私钥encryption数据。

你可以从命令行中看到打开ssl的选项,唯一的选项是encrypt -> decrypt在一个方向上去public -> private

  -encrypt encrypt with public key -decrypt decrypt with private key 

另一个方向是故意阻止的,因为公钥基本上是“可以猜到的”。 所以,使用私钥进行encryption意味着您唯一能够validation作者是否可以访问私钥。

private key encrypt -> public key decrypt方向被称为“签名”,以区别于实际上可以保护数据的技术。

  -sign sign with private key -verify verify with public key 

注:我的描述是一个简单的清晰。 阅读这个答案了解更多信息 。

用记事本更改notepad ++ UTF-8中的编码。 这是如何为我工作

Interesting Posts