【问题标题】:Unable to openssl verify SSL certificate无法 openssl 验证 SSL 证书
【发布时间】:2015-07-24 21:09:34
【问题描述】:

我想做什么: 使用openssl -connect 与远程站点建立干净的连接。

网站似乎是自签名的。

What I'm getting: CONNECTED(00000003)
depth=0 CN = DC01.home.pri
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = DC01.home.pri
verify error:num=27:certificate not trusted
verify return:1
depth=0 CN = DC01.home.pri
verify error:num=21:unable to verify the first certificate
verify return:1
...
...
Verify return code: 21 (unable to verify the first certificate)

我尝试过的:

echo -n | openssl s_client -connect DC01.home.pri:636 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ldapserver.pem
echo -n | openssl s_client -connect DC01.home.pri:636 -CAfile ldapserver.pem

sudo cp ldapserver.pem /etc/ssl/certs/ldapserver.pem
sudo c_rehash /etc/ssl/certs/
echo -n | openssl s_client -connect dc01.home.pri:636 -CApath /etc/ssl/certs/

我也试过

openssl verify -CAfile /etc/ssl/certs/ldapserver.pem ldapserver.pem 
openssl verify -CApath /etc/ssl/certs/ ldapserver.pem

结果

ldapserver.pem: CN = DC01.home.pri
error 20 at 0 depth lookup:unable to get local issuer certificate

我已更改 CN/主机名以保护自己。但是主机名也会添加到我的主机文件中,以防万一。

经过审查的 PEM 文件

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            64:c7:48:64:00:00:00:00:00:d0
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: DC=pri, DC=home, CN=home-HOMECA-CA
        Validity
            Not Before: Mar  7 22:41:45 2015 GMT
            Not After : Mar  6 22:41:45 2016 GMT
        Subject: CN=DC01.home.pri
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    <CENSORED>
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            1.3.6.1.4.1.311.20.2: 
                . .D.o.m.a.i.n.C.o.n.t.r.o.l.l.e.r
            X509v3 Extended Key Usage: 
                TLS Web Client Authentication, TLS Web Server Authentication
            X509v3 Key Usage: 
                Digital Signature, Key Encipherment
            S/MIME Capabilities: 
......0...`.H.e...*0...`.H.e...-0...`.H.e....0...`.H.e....0...+....0
..*.H..
            X509v3 Subject Alternative Name: 
                othername:<unsupported>, DNS:DC01.home.pri
            X509v3 Subject Key Identifier: 
                <CENSORED>
            X509v3 Authority Key Identifier: 
                keyid:<CENSORED>

            X509v3 CRL Distribution Points: 

                Full Name:
                  URI:ldap:///CN=home-HOMECA-CA,CN=HOMECA,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=home,DC=pri?certificateRevocationList?base?objectClass=cRLDistributionPoint
                  URI:http://homeca.home.pri/CertEnroll/home-HOMECA-CA.crl

            Authority Information Access: 
                CA Issuers - URI:ldap:///CN=home-CA-CA,CN=AIA,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=home,DC=pri?cACertificate?base?objectClass=certificationAuthority

    Signature Algorithm: sha1WithRSAEncryption
         <CENSORED>

【问题讨论】:

  • 站点似乎自签名,还是站点自签名?你能发帖ldapserver.pem吗?
  • 添加了审查的 pem 文件。除非您指的是 Base64,否则我无法粘贴它,因为它是不同的主机名,以保护相关人员。我已经更改了主机名和发行者名称以配合主题。

标签: ssl openssl ldap ssl-certificate ubuntu-14.04


【解决方案1】:

您发布的证书不是自签名的;发行者 (DC=pri, DC=home, CN=home-HOMECA-CA) 与主题 (CN=DC01.home.pri) 不同。

验证证书时,OpenSSL 无法找到用于验证签名的颁发者(或在 TLS 握手期间从 Web 服务器接收到的链中第一个证书的颁发者)的本地证书。

您需要向openssl verify 提供颁发者 证书(或将其保存在您的信任库中):

openssl verify -CApath /etc/ssl/certs/<issuer-cert>.pem

【讨论】:

  • 我希望我可以绕过颁发者验证,并使用它拥有的 pem 验证服务器。我最终获得了 CA 证书,看来这就是解决方案。
猜你喜欢
  • 2018-11-21
  • 2012-05-26
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 2021-11-10
  • 2013-12-06
  • 2010-11-30
  • 2011-08-19
相关资源
最近更新 更多