当前位置: 首页 > 知识库问答 >
问题:

部分客户端接受SSL证书;另一些人则拒绝

陆正奇
2023-03-14

有些HTTP客户端接受此证书,有些则不接受。什么能起到作用呢?

((html" target="_blank">javax.net.ssl.HttpsURLConnection)new java.net.URL("https://www.lucidpress.com")
    .openConnection())
    .getInputStream()
import requests
requests.get('https://www.lucidpress.com')

Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 55, in get
    return request('get', url, **kwargs)   File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)   File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 456, in request
    resp = self.send(prep, **send_kwargs)   File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 559, in send
    r = adapter.send(request, **kwargs)   File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 382, in send
    raise SSLError(e, request=request) requests.exceptions.SSLError: hostname 'www.lucidpress.com' doesn't match either of '*.lucidchart.com', 'lucidchart.com'
$ curl -v https://www.lucidpress.com
  • 即将连接()到www.lucidpress.com端口443(#0)
  • 尝试54.236.129.63...已连接
  • 成功设置证书验证位置:
  • cafile:none capath:/etc/ssl/certs
  • SSLv3、TLS握手、客户端hello(1):
  • SSLv3、TLS握手、服务器hello(2):
  • SSLv3、TLS握手,证书(11):
  • SSLv3、TLS握手、服务器密钥交换(12):
  • SSLv3、TLS握手,服务器已完成(14):
  • SSLv3、TLS握手、客户端密钥交换(16):
  • SSLv3、TLS更改密码,客户端您好(1):
  • SSLv3、TLS握手,已完成(20):
  • SSLv3、TLS更改密码,客户端您好(1):
  • SSLv3、TLS握手,已完成(20):
  • 使用DHE-RSA-AES256-SHA的SSL连接
  • 服务器证书:
  • 主题:OU=域控制已验证;cn=*.lucidpress.com
  • 开始日期:2014-05-12 16:20:34 GMT
  • 过期日期:2015-07-09 22:19:45 GMT
  • subjectaltname:www.lucidpress.com匹配
  • 发行人:C=US;ST=亚利桑那州;L=Scottsdale;O=GoDaddy.com,Inc.;ou=http://certs.godaddy.com/repository/;cn=Go Daddy安全证书颁发机构-G2
  • SSL证书验证确定。

wget拒绝它。

wget https://www.lucidpress.com

--2014-08-09 19:55:41--https://www.lucidpress.com/resolution www.lucidpress.com(www.lucidpress.com)...107.23.98.6,54.236.129.63,54.88.154.168连接到www.lucidpress.com(www.lucidpress.com)107.23.98.6:443....连接。错误:没有与请求的主机名“www.lucidpress.com”匹配的证书使用者替代名称。要安全地连接到www.lucidpress.com,请使用'--no-check-certificate'。

共有1个答案

艾学海
2023-03-14

有些HTTP客户端接受此证书,有些则不接受。什么能起到作用呢?

简单的答案是:负载均衡、虚拟主机和SNI。

很长的答案...首先,这里对证书进行分析。我们需要检查一下,以确保没有明显的错误。

相关:RFC 6125第6.4.3节也不允许*.lucidpress.comlucidpress.com匹配。CA/B BR在11.1.3节中介绍了通配符,但没有讨论匹配规则。

有了上面的背景资料和下面的证书,下面是怎么回事。

默认证书中有2个名称。默认情况下由Apache提供,因为它是配置文件中的第一个虚拟主机。

    null
    null

我认为区别在于服务器名称指示(SNI)。它是一个TLS扩展,所以您需要TLS1.0或更高版本。没有问题的,通过Lucid Press认证,使用TLS1.0及以上的SNI;那些有问题的用户将获得默认证书并使用SSLv3或不使用SNI。Windows XP将使用TLS1.0但不使用SNI,因此由于部署基础的原因,它经常在外地使用经验丰富。

浏览器接受它是因为它们正在使用TLS1.0或更高版本并发送SNI扩展。因为SNI允许Apache服务器在握手期间选择适当的证书,所以不存在名称匹配问题。

Java拒绝它,因为它使用SSLv3,即使您说sslcontext.getInstance(“tls”);。你必须跳过一些箍,以确保你真的得到TLS1.0和更高的版本。这里有一些关于堆栈溢出的问题。例如,请参见为SSL套接字启用哪些密码套件?。

在OpenSSL转储中,感兴趣的选项是-tls1-servername。您可以通过省略-servername来获得没有SNI的TLS。因此您既需要tls1又需要-servername

$ openssl s_client -tls1 -servername www.lucidpress.com \
     -connect www.lucidpress.com:443 | openssl x509 -text -noout
depth=3 C = US, O = "The Go Daddy Group, Inc.", OU = Go Daddy Class 2 Certification Authority
verify error:num=19:self signed certificate in certificate chain
verify return:0
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 12250220837273305 (0x2b8582cd6cfed9)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certs.godaddy.com/repository/, CN=Go Daddy Secure Certificate Authority - G2
        Validity
            Not Before: May 12 16:20:34 2014 GMT
            Not After : Jul  9 22:19:45 2015 GMT
        Subject: OU=Domain Control Validated, CN=*.lucidpress.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:c8:e0:f6:77:03:c9:5e:cb:51:e3:d3:7a:b6:60:
                    d9:3d:60:26:9c:4b:00:c5:cb:b1:55:2e:d9:ee:f5:
                    08:8d:b7:64:e9:31:2e:83:e4:24:f3:89:4e:46:87:
                    b8:55:b6:34:0a:c9:3b:55:08:10:77:13:7e:85:d6:
                    8c:fa:06:dd:c1:7f:fa:9e:13:c8:1a:d8:36:22:3c:
                    cb:16:9f:cb:c7:5b:7c:7c:0b:6d:c3:ef:24:45:15:
                    5a:7a:38:dd:df:83:eb:c3:ea:9b:57:d5:8f:d8:6c:
                    ff:33:4a:21:02:2a:92:9a:e0:5d:58:51:75:07:b6:
                    ad:21:8c:34:91:20:f5:00:9e:f6:dd:90:7e:a8:60:
                    0e:14:73:de:90:a1:f4:29:83:a0:d8:9d:29:e5:de:
                    c5:cb:b5:36:84:ba:30:d4:a9:9f:b9:bf:89:26:e5:
                    80:5a:f6:3b:27:cc:6d:3f:31:1e:cc:51:09:12:73:
                    a6:de:da:b9:a4:19:86:68:7f:e6:2b:c7:3b:a6:ce:
                    6a:5a:dd:c9:ac:61:18:80:f5:d4:f1:6a:70:2c:9f:
                    8f:af:a6:c5:1d:78:97:97:90:92:6c:21:61:39:ce:
                    f8:c9:99:e2:02:b5:ce:ba:dc:f4:46:ba:e3:1f:ec:
                    ce:a5:e4:6b:56:1e:e6:20:89:44:7b:2c:9f:3a:c4:
                    33:f1
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 CRL Distribution Points: 

                Full Name:
                  URI:http://crl.godaddy.com/gdig2s1-59.crl

            X509v3 Certificate Policies: 
                Policy: 2.16.840.1.114413.1.7.23.1
                  CPS: http://certificates.godaddy.com/repository/

            Authority Information Access: 
                OCSP - URI:http://ocsp.godaddy.com/
                CA Issuers - URI:http://certificates.godaddy.com/repository/gdig2.crt

            X509v3 Authority Key Identifier: 
                keyid:40:C2:BD:27:8E:CC:34:83:30:A2:33:D7:FB:6C:B3:F0:B4:2C:80:CE

            X509v3 Subject Alternative Name: 
                DNS:*.lucidpress.com, DNS:lucidpress.com
            X509v3 Subject Key Identifier: 
                CA:97:CC:32:09:20:3E:5F:23:05:4C:DD:F2:DA:4B:1C:E5:02:E8:69
    Signature Algorithm: sha256WithRSAEncryption
         4e:0c:8e:af:d5:c7:06:9e:b9:2c:36:97:d0:9e:1c:84:e8:e1:
         69:5a:36:a3:4f:9f:81:c9:78:5d:ca:35:df:63:be:23:88:4c:
         ba:eb:17:15:22:78:96:5d:5f:dc:3b:fa:cf:14:b6:e9:3a:fe:
         28:19:1c:85:d2:1b:23:b3:79:6d:b2:1d:76:6b:84:97:80:43:
         1b:c0:b7:14:78:75:f9:47:31:6e:21:56:0d:5e:73:ed:d3:b2:
         4b:ab:dc:b0:af:18:ee:2d:bb:65:ff:c7:cb:ff:53:64:8f:a5:
         e8:aa:45:da:fc:0f:b5:8f:da:0f:3e:b1:3b:d0:47:49:52:af:
         8d:f7:a3:42:3b:d3:a1:f4:a1:22:d5:fe:2f:4c:59:b4:18:3f:
         62:1e:4e:56:65:9b:2b:d6:76:cd:29:74:d6:74:a4:7b:bb:6f:
         b2:1d:45:12:67:14:b3:06:a7:36:ee:3a:48:d1:d6:80:2b:fa:
         6d:8b:64:01:0f:1e:51:48:0f:8b:e3:7d:13:86:79:a2:b2:04:
         05:cb:8d:07:35:d9:fa:7e:6d:5d:42:c0:a5:f4:b2:8e:57:53:
         24:b3:aa:e6:92:b1:70:07:73:98:00:91:9b:0f:3e:6e:fe:1d:
         78:7c:57:68:47:d7:8e:6f:1a:64:26:7b:69:f5:b1:13:c2:71:
         2d:ac:56:b6
$ dig www.lucidchart.com

; <<>> DiG 9.8.5-P1 <<>> www.lucidchart.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19608
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.lucidchart.com.        IN  A

;; ANSWER SECTION:
www.lucidchart.com. 8   IN  CNAME   chart-production-webserver-1858537325.us-east-1.elb.amazonaws.com.
chart-production-webserver-1858537325.us-east-1.elb.amazonaws.com. 10 IN A 107.23.98.6
chart-production-webserver-1858537325.us-east-1.elb.amazonaws.com. 10 IN A 54.236.129.63
chart-production-webserver-1858537325.us-east-1.elb.amazonaws.com. 10 IN A 54.88.154.168

;; Query time: 23 msec
;; SERVER: 172.16.1.10#53(172.16.1.10)
;; WHEN: Sun Aug 10 00:02:52 EDT 2014
;; MSG SIZE  rcvd: 160

$ dig www.lucidpress.com

; <<>> DiG 9.8.5-P1 <<>> www.lucidpress.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34260
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.lucidpress.com.        IN  A

;; ANSWER SECTION:
www.lucidpress.com. 599 IN  CNAME   chart-production-webserver-1858537325.us-east-1.elb.amazonaws.com.
chart-production-webserver-1858537325.us-east-1.elb.amazonaws.com. 59 IN A 54.88.154.168
chart-production-webserver-1858537325.us-east-1.elb.amazonaws.com. 59 IN A 107.23.98.6
chart-production-webserver-1858537325.us-east-1.elb.amazonaws.com. 59 IN A 54.236.129.63

;; Query time: 48 msec
;; SERVER: 172.16.1.10#53(172.16.1.10)
;; WHEN: Sun Aug 10 00:02:38 EDT 2014
;; MSG SIZE  rcvd: 160

如果感兴趣,这是来自SSLScan:

  Prefered Server Cipher(s):
    SSLv3  256 bits  DHE-RSA-AES256-SHA
    TLSv1  256 bits  DHE-RSA-AES256-SHA
    TLSv1.1  256 bits  DHE-RSA-AES256-SHA
    TLSv1.2  256 bits  DHE-RSA-AES256-GCM-SHA384
 类似资料:
  • 问题内容: 它看起来像一个标准问题,但是我在任何地方都找不到清晰的方向。 我有Java代码试图连接到可能带有自签名(或过期)证书的服务器。该代码报告以下错误: 据我了解,我必须使用keytool并告诉java允许这种连接是可以的。 解决此问题的所有说明均假定我完全精通keytool,例如 生成服务器的私钥并将其导入密钥库 是否有人可以发布详细说明? 我正在运行Unix,所以bash脚本是最好的。

  • 问题内容: 我们的系统与多个Web服务提供商进行通信。它们都是从单个Java客户端应用程序调用的。到目前为止,所有的Web服务都已通过SSL进行,但是没有一个使用客户端证书。好吧,一个新的合作伙伴正在改变这一现状。 使应用程序使用证书进行调用很容易;设置和将做到这一点。但是,现在的问题是如何制作它,使其仅在调用该特定Web服务时使用证书。我想更一般地说,我们希望能够选择要使用的客户端证书(如果有)

  • 问题内容: 我正在使用Java 6,并尝试使用客户端证书针对远程服务器创建一个。 服务器正在使用自签名的根证书,并且要求提供受密码保护的客户端证书。我已将服务器根证书和客户端证书添加到在中找到的默认Java密钥库中。密钥库文件的名称似乎表明不应将客户端证书放入其中? 无论如何,将根证书添加到此存储解决了臭名昭著的问题 但是,我现在停留在如何使用客户端证书上。我尝试了两种方法,但都无济于事。 首先,

  • 我创建了一个具有双向SSL认证的Spring Boot 2应用程序。 简而言之,它归结为以下配置: 该应用程序具有密钥库/信任库,可以与导入的客户端证书一起正常工作。 出乎意料的是,如果我尝试与未知客户端证书连接,由于SSL握手失败,连接无法建立 然而,我希望即使证书不被接受,也能到达应用层,并用应用程序的HTTP响应进行响应。 有没有办法做到这一点?

  • 问题内容: 我在Wildfly 9中配置有效的证书(非自签名!)时遇到了麻烦。我在Wildfly中配置了HTTPS连接器: 安全领域: 并使用以下命令生成密钥库: 现在,当我在浏览器中打开应用程序时,一切正常。浏览器将证书识别为有效证书,而不会提示出现自签名证书中的异常。 但是,当我尝试通过SSLPoke.java连接到相同的URL时,出现以下异常: 如果我在客户端中导入证书,此错误就会消失,但是

  • 我无法配置有效证书(不是自签名的!)在Wildfly 9中。我已经在WildFly中配置了HTTPS连接器: 如果我在客户端中导入证书,这个错误就会消失,但是我认为我不应该这样做,因为这是一个有效的证书。 测试代码如下: 为什么会发生这种情况?设置SSL证书的正确方法是什么?