DotNet SSL TLS证书问题分析排障

问题说明

前几天运维同事反馈开发同事代码在Windows 2008 R2 Datacenter服务器上跑会出现无法正常建立SSL/TLS连接的情况,在自己的电脑上跑是OK的,代码也没有变动过。于是我问他改了服务器上什么配置没有,他说改了注册表也不行。接过这个坑,心里有一万条艹,没事改注册表,这还能够回滚吗?这坑还可以越得过去吗?连忙问了一下,改注册表有记录吗?他说还在服务器桌面上,松了一口气,还可以回滚。先根据对应注册表修改文件改回了注册表配置,重启服务器。

再通过DotNet Framework代码测试接口出现以下错误:

1
2
3
4
5
时间:2020-03-23 12:07:44 执行开始。。。
时间:2020-03-23 12:07:44 接口出现异常WebException:
Response报文:请求被中止: 未能创建 SSL/TLS 安全通道。
时间:2020-03-23 12:07:44 执行结束。。。
时间:2020-03-23 12:07:44 总耗时:428毫秒

排查错误

于是写了一个Python脚本测试了一把是正常的,又通过Chrome浏览器访问接口也可以正常响应,但使用DotNet Framework写的代码就是不行。于是Google了一下,希望能够尽快解决问题,回复基本上都是修改DotNet代码,添加对于4.0对TLS1.2的支持,还有就是改注册表,开启TLS1.2的支持。前者我觉得是有可能的,根据微软官方信息显示DotNet Framework 4.0需要手动配置TLS1.2的支持才能够响应TLS1.2。
于是加了以下代码:

1
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 |(SecurityProtocolType)768 | (SecurityProtocolType)3072;

测试OK,OK问题解决了?找了另一台服务器一测试,还是不行。怎么可能一台服务器可以,另一台不行了?没有道理啊。本以为这个问题就这么简单就解决了,但实际结果并非如此,查看日志还是一样的报错Response报文:请求被中止: 未能创建 SSL/TLS 安全通道。。看来只能够通过抓包解决问题了,于是分别在行与不行的服务器上安装了Wireshark,进行抓包分析。
先在正常服务器上抓包,从下图可以看到,是很正常的。

问题说明

前几天运维同事反馈开发同事代码在Windows 2008 R2 Datacenter服务器上跑会出现无法正常建立SSL/TLS连接的情况,在自己的电脑上跑是OK的,代码也没有变动过。于是我问他改了服务器上什么配置没有,他说改了注册表也不行。接过这个坑,心里有一万条艹,没事改注册表,这还能够回滚吗?这坑还可以越得过去吗?连忙问了一下,改注册表有记录吗?他说还在服务器桌面上,松了一口气,还可以回滚。先根据对应注册表修改文件改回了注册表配置,重启服务器。

再通过DotNet Framework代码测试接口出现以下错误:

1
2
3
4
5
时间:2020-03-23 12:07:44 执行开始。。。
时间:2020-03-23 12:07:44 接口出现异常WebException:
Response报文:请求被中止: 未能创建 SSL/TLS 安全通道。
时间:2020-03-23 12:07:44 执行结束。。。
时间:2020-03-23 12:07:44 总耗时:428毫秒

排查错误

于是写了一个Python脚本测试了一把是正常的,又通过Chrome浏览器访问接口也可以正常响应,但使用DotNet Framework写的代码就是不行。于是Google了一下,希望能够尽快解决问题,回复基本上都是修改DotNet代码,添加对于4.0对TLS1.2的支持,还有就是改注册表,开启TLS1.2的支持。前者我觉得是有可能的,根据微软官方信息显示DotNet Framework 4.0需要手动配置TLS1.2的支持才能够响应TLS1.2。
于是加了以下代码:

1
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 |(SecurityProtocolType)768 | (SecurityProtocolType)3072;

测试OK,OK问题解决了?找了另一台服务器一测试,还是不行。怎么可能一台服务器可以,另一台不行了?没有道理啊。本以为这个问题就这么简单就解决了,但实际结果并非如此,查看日志还是一样的报错Response报文:请求被中止: 未能创建 SSL/TLS 安全通道。。看来只能够通过抓包解决问题了,于是分别在行与不行的服务器上安装了Wireshark,进行抓包分析。
先在正常服务器上抓包,从下图可以看到,是很正常的。

而在非正常的服务器上抓包,报错(因为在测试过程中,没有保存抓包数据,只记录了报错关键字):

1
Level: Fatal, Description: HandShake Failure

一般来说,这种错误是因为加密套件不匹配造成的,所以开始比较两台服务器之间加密套件的区别。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#因为没有截图保存,只导出了Cipher Suites进行比较,发现正常的服务器支持28种Cipher Suites,而非正常的服务器只支持21种Cipher Suites,相差7种Cipher Suites。
#非正常服务器
Cipher Suites (21 suites)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
#正常服务器
Cipher Suites (28 suites)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f)Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)

再仔细查看了一下正常响应的服务器,在发送Server Hello时使用的加密套件(Cipher Suite)是:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

而非正常的服务器响应的是:TLS 1.2 Alert(Level: Fatal, Description:Handshake failure),从这里就可以很清楚的看到原因了,是因为客户端不支持Cipher Suite:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384造成的,所以HTTPS请求连接建立才会失败。

解决问题

找到问题,解决问题就简单了,Windows IIS Cipher Suites问题,我们可以通过IIS Crypto工具进行解决。下载工具IIS Crypto,然后查看当前服务器的加密套件:

我们会发现在这里面并没有证书支持的加密套件,于是我手动添加了证书所支持的加密套件,重启服务器。

再请求对接接口,现在可以正常获取数据了。

1
2
3
4
5
6
7
8
9
时间:2020-03-23 14:55:30 执行开始。。。
时间:2020-03-23 14:55:45 {"current_page": 1,"data": [{"id": xxx,"PID": "xxxx","totalCount": "0"},

正常响应抓包:

扩展思考

怎么知道对应证书支持哪些加密套件了?

我们可以通过这个工具的Site Scanner,输入对应URL,然后Scan,这时候会打开ssllabs,进行网站证书检测,我们可以拉到最后面,有一个Cipher Suites就可以看到对应的TLS 1.2加密套件支持。

这里我们可以看到此证书是支持5种加密套件的,而我们的服务器完美的错过了这5种加密套件,但也并非所有的服务器都错过了,所以出现有些服务器可以正常访问接口,有些服务器不正常。

还有一种方法,就是我们通过Chrome,按F12,选择Security,也可以查看到对应的安全连接设置。

或者通过nmap命令查看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
~ » nmap -p 443 --script ssl-enum-ciphers www.oubayun.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-23 17:23 CST
Nmap scan report for www.oubayun.com (xxx.xxx.xxx.xxx)
Host is up (0.065s latency).PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) A
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) A
|       TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (secp256r1) A
|     compressors:
|       NULL
|     cipher preference: client
|     warnings:
|       Key exchange (dh 2048) of lower strength than certificate key
|       Key exchange (secp256r1) of lower strength than certificate key
|_  least strength: ANmap done: 1 IP address (1 host up) scanned in 18.84 seconds

另外还可以通过sslScan命令查看其它推荐的加密套件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
b~ » sslscan www.oubayun.com
Version: 1.11.13-static
OpenSSL 1.0.2f  28 Jan 2016Connected to xxx.xxx.xxx.xxxTesting SSL server www.oubayun.com on port 443 using SNI name www.oubayun.comTLS Fallback SCSV:
Server supports TLS Fallback SCSVTLS renegotiation:
Session renegotiation not supportedTLS Compression:
Compression disabledHeartbleed:
TLS 1.2 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.0 not vulnerable to heartbleedSupported Server Cipher(s):
#这里我们可以看到首选的是: ECDHE-RSA-AES256-GCM-SHA384
Preferred TLSv1.2  256 bits  ECDHE-RSA-AES256-GCM-SHA384   Curve P-256 DHE 256
Accepted  TLSv1.2  256 bits  DHE-RSA-AES256-GCM-SHA384     DHE 2048 bits
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  DHE-RSA-AES128-GCM-SHA256     DHE 2048 bitsSSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    4096Subject:  www.oubayun.com
Altnames: DNS:www.oubayun.com
Issuer:   Let's Encrypt Authority X3Not valid before: Feb 29 09:35:16 2020 GMT
Not valid after:  May 29 09:35:16 2020 GMT

当然查看Cipher Suites的方法不仅仅只有这些,还有很多其它的方法。

怎么开启TLS 1.2支持?

这是我们也可以通过这个工具,点击Schannel,然后勾选TLS 1.2,选择Apply,再重启服务器即可。

TLS 1.2支持37种加密套件,但建议使用以下种类:

1
2
3
4
#Nginx设置
AESGCM+ECDH
ARIAGCM+ECDH
CHACHA20+ECDH


而在非正常的服务器上抓包,报错(因为在测试过程中,没有保存抓包数据,只记录了报错关键字):

1
Level: Fatal, Description: HandShake Failure

一般来说,这种错误是因为加密套件不匹配造成的,所以开始比较两台服务器之间加密套件的区别。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#因为没有截图保存,只导出了Cipher Suites进行比较,发现正常的服务器支持28种Cipher Suites,而非正常的服务器只支持21种Cipher Suites,相差7种Cipher Suites。
#非正常服务器
Cipher Suites (21 suites)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
#正常服务器
Cipher Suites (28 suites)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f)Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)

再仔细查看了一下正常响应的服务器,在发送Server Hello时使用的加密套件(Cipher Suite)是:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

而非正常的服务器响应的是:TLS 1.2 Alert(Level: Fatal, Description:Handshake failure),从这里就可以很清楚的看到原因了,是因为客户端不支持Cipher Suite:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384造成的,所以HTTPS请求连接建立才会失败。

解决问题

找到问题,解决问题就简单了,Windows IIS Cipher Suites问题,我们可以通过IIS Crypto工具进行解决。下载工具IIS Crypto,然后查看当前服务器的加密套件:

我们会发现在这里面并没有证书支持的加密套件,于是我手动添加了证书所支持的加密套件,重启服务器。

再请求对接接口,现在可以正常获取数据了。

1
2
3
4
5
6
7
8
9
时间:2020-03-23 14:55:30 执行开始。。。
时间:2020-03-23 14:55:45 {"current_page": 1,"data": [{"id": xxx,"PID": "xxxx","totalCount": "0"},

正常响应抓包:

扩展思考

怎么知道对应证书支持哪些加密套件了?

我们可以通过这个工具的Site Scanner,输入对应URL,然后Scan,这时候会打开ssllabs,进行网站证书检测,我们可以拉到最后面,有一个Cipher Suites就可以看到对应的TLS 1.2加密套件支持。

这里我们可以看到此证书是支持5种加密套件的,而我们的服务器完美的错过了这5种加密套件,但也并非所有的服务器都错过了,所以出现有些服务器可以正常访问接口,有些服务器不正常。

还有一种方法,就是我们通过Chrome,按F12,选择Security,也可以查看到对应的安全连接设置。

或者通过nmap命令查看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
~ » nmap -p 443 --script ssl-enum-ciphers www.oubayun.com
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-23 17:23 CST
Nmap scan report for www.oubayun.com (xxx.xxx.xxx.xxx)
Host is up (0.065s latency).PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) A
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) A
|       TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (secp256r1) A
|     compressors:
|       NULL
|     cipher preference: client
|     warnings:
|       Key exchange (dh 2048) of lower strength than certificate key
|       Key exchange (secp256r1) of lower strength than certificate key
|_  least strength: ANmap done: 1 IP address (1 host up) scanned in 18.84 seconds

另外还可以通过sslScan命令查看其它推荐的加密套件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
b~ » sslscan www.oubayun.com
Version: 1.11.13-static
OpenSSL 1.0.2f  28 Jan 2016Connected to xxx.xxx.xxx.xxxTesting SSL server www.oubayun.com on port 443 using SNI name www.oubayun.comTLS Fallback SCSV:
Server supports TLS Fallback SCSVTLS renegotiation:
Session renegotiation not supportedTLS Compression:
Compression disabledHeartbleed:
TLS 1.2 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.0 not vulnerable to heartbleedSupported Server Cipher(s):
#这里我们可以看到首选的是: ECDHE-RSA-AES256-GCM-SHA384
Preferred TLSv1.2  256 bits  ECDHE-RSA-AES256-GCM-SHA384   Curve P-256 DHE 256
Accepted  TLSv1.2  256 bits  DHE-RSA-AES256-GCM-SHA384     DHE 2048 bits
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  DHE-RSA-AES128-GCM-SHA256     DHE 2048 bitsSSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    4096Subject:  www.oubayun.com
Altnames: DNS:www.oubayun.com
Issuer:   Let's Encrypt Authority X3Not valid before: Feb 29 09:35:16 2020 GMT
Not valid after:  May 29 09:35:16 2020 GMT

当然查看Cipher Suites的方法不仅仅只有这些,还有很多其它的方法。

怎么开启TLS 1.2支持?

这是我们也可以通过这个工具,点击Schannel,然后勾选TLS 1.2,选择Apply,再重启服务器即可。

TLS 1.2支持37种加密套件,但建议使用以下种类:

1
2
3
4
#Nginx设置
AESGCM+ECDH
ARIAGCM+ECDH
CHACHA20+ECDH

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 92反转链表||-中等

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;[1,4,3,2,5] 示例 2&#xf…

oppo手机html文件,OPPO手机怎么传输数据包括文档和图片,有哪些传输方式

在工作和学习中&#xff0c;我们每天都需要传输大量的数据包括文档和图片等&#xff0c;对于大文件和大量文件的传输&#xff0c;既要保证传输的质量还要操作简单&#xff0c;省时省力&#xff0c;这也就成了一个令人头疼的问题。不同的传输方式有着不同的特点&#xff0c;那么…

如何让Docker镜像飞起来

前言Docker用起来非常爽&#xff0c;尤其是用于DevOps实践时。但是&#xff0c;当你在国内或者本地拉取镜像时&#xff0c;经常会碰到各种“便秘”——要么镜像拉取缓慢&#xff0c;要么时断时连&#xff0c;要么连接超时&#xff01;当我们的镜像又比较大时&#xff08;比如某…

C++ class类 实现搜索二叉树(BST)

代码如下: #include <iostream> using namespace std;class BSTNode {private:double key;BSTNode *lchild;BSTNode *rchild;BSTNode *parent;friend class BSTree;public:BSTNode(double k 0.0, BSTNode *l nullptr, BSTNode *r nullptr, BSTNode *p nullptr): key…

Nuget多项目批量打包上传服务器的简明教程

本篇不会介绍Nuget是什么&#xff0c;如何打包上传Nuget包&#xff0c;怎么搭建私有Nuget服务器。这些问题园子里都有相应的文章分享&#xff0c;这里不做过多阐述。另外本文假设你已经下载了Nuget.exe&#xff0c;并且已经设置好了环境变量。什么&#xff1f;你还不会&#xf…

C++ struct结构体 实现搜索二叉树(BST)

代码如下: #include <iostream> using namespace std;struct BSTNode {double v 0.0;BSTNode *lc nullptr;BSTNode *rc nullptr;BSTNode *par nullptr; };void inorder_tree(BSTNode *t) {if (t ! nullptr) {inorder_tree(t->lc);cout << t->v <<…

如何用 Blazor 实现 Ant Design 组件库(二)

前言前两周&#xff0c;我发表了上一篇文章《如何用 Blazor 实现 Ant Design 组件库&#xff1f;》&#xff0c;得到了很多朋友的响应&#xff0c;也有很多朋友加入我的钉钉群&#xff0c;并收听了我在第二天的直播。这次直播是我人生第一次做直播&#xff0c;以至于没做什么准…

计算机蠕虫是一个程序或程序系列,它采取截取口令并试图在系统中,计算机蠕虫病毒是一个程序或程序系列,它采取截取口令并试图在系统中做非法动作的方式直接攻击计算机。...

采用FCA条件时&#xff0c;计算机蠕计算机卖方应负的责任是( )某资本家制衣厂内&#xff0c;虫病程序工人一个月工作30天&#xff0c;虫病程序其月工资为1500元。据工厂统计&#xff0c;每天每位工人能生产5件衣服&#xff0c;每件价值100元&#xff0c;每件衣服生产时产生的费…

.NET 5 中的正则引擎性能改进(翻译)

前言System.Text.RegularExpressions 命名空间已经在 .NET 中使用了多年&#xff0c;一直追溯到 .NET Framework 1.1。它在 .NET 实施本身的数百个位置中使用&#xff0c;并且直接被成千上万个应用程序使用。在所有这些方面&#xff0c;它也是 CPU 消耗的重要来源。但是&#x…

以个人身份加入.NET基金会

.NET 走向开源&#xff0c;MIT许可协议。微软为了推动.NET开源社区的发展&#xff0c;2014年联合社区成立了.NET基金会。一年前 .NET 基金会完成第一次全面改选&#xff0c;2014年 .NET基金会的创始成员中有六位创始人&#xff0c;均非微软公司员工&#xff0c;随着微软的收购动…

计算机连接拒绝访问,Win10系统下Windows无法连接到打印机,拒绝访问的解决办法...

我们在办公的时候&#xff0c;经常会使用打印机共享的功能&#xff0c;近期有一位Win10用户在共享打印机的时候&#xff0c;系统提示了“Windows无法连接到打印机&#xff0c;拒绝访问”的错误。原因是用户和组没有everyone&#xff0c;才会导致打印机拒绝访问的情况。那么我们…

十问十答 BSD 许可证

BSD 许可证或原始 BSD 许可证&#xff08;the original BSD License&#xff09;及其两个变体——修改的 BSD 许可证&#xff08;又称 The 3-clause BSD License&#xff09;和简化的 BSD 许可证/FreeBSD 许可证&#xff08;又称 BSD 2-Clause "Simplified" License&…

C++ class实现单向循环链表(完整代码)

注意: 写Delete_all要稍微注意一下&#xff0c;先判断tail是否为空&#xff0c;只有不为空时才能拿某个指针指向其next域 代码如下: #include <iostream> using namespace std; typedef int ElemType; #define NO 0class Node {friend class LinkList;public:Node(): …

这一次,终于弄懂了协变和逆变

一、前言刘大胖决定向他的师傅灯笼法师请教什么是协变和逆变。刘大胖&#xff1a;师傅&#xff0c;最近我在学习泛型接口的时候看到了协变和逆变&#xff0c;翻了很多资料&#xff0c;可还是不能完全弄懂。灯笼法师&#xff1a;阿胖&#xff0c;你不要被这些概念弄混&#xff0…

大一计算机专业学期计划范文,大一学习计划范文4篇

大一学习计划范文4篇时间的脚步是无声的&#xff0c;它在不经意间流逝&#xff0c;我们又将迎来新的学习任务&#xff0c;写一份学习计划&#xff0c;为接下来的学习做准备吧&#xff01;但是学习计划要写什么内容才是正确的呢&#xff1f;以下是小编精心整理的大一学习计划范文…

C++ class实现双向循环链表(完整代码)

写Delete_all的时候注意一下就好了&#xff0c;先判断空白头结点是不是为NULL 代码如下: #include <iostream> using namespace std; typedef int ElemType; #define NO 0class Node {friend class LinkList;public:Node(): next(NULL), prior(NULL) {};private:ElemTy…

5分钟看懂微服务架构下的Consul 特性及搭建

一、前言虽然说牛逼的公司都有那么几个牛逼的运维团队&#xff0c;牛逼的运维团队都有着神秘黑科技般敲代码的姿势&#xff1b;本人虽然不是一个运维工程师&#xff0c;但是自己比较爱倒腾这些东西&#xff0c;会那么一点点运维姿势&#xff0c;虽然不算专业&#xff0c;但是还…

win7 计算机定时关机脚本,win7定时关机设置及命令

电脑定时关机是一个常用的功能&#xff0c;定时关机的小软件也有不少&#xff0c;但 Win7 也为我们提供了定时关机的功能&#xff0c;额外下载软件不如就地取材。win7定时关机可通过两种方式实现&#xff0c;一种是创建计划任务&#xff0c;另一种是用win7定时关机命令 shutdow…

ASP.NET Core分布式项目实战(客户端集成IdentityServer)--学习笔记

任务9&#xff1a;客户端集成IdentityServer新建 API 项目dotnet new webapi --name ClientCredentialApi控制器添加验证using Microsoft.AspNetCore.Authorization;namespace ClientCredentialApi.Controllers {[ApiController][Route("[controller]")][Authorize]p…

C++ class实现顺序栈(完整代码)

代码如下: #include <iostream> using namespace std; typedef int ElemType;class SeqStack {public:SeqStack(int stacksize 100) {base new ElemType[stacksize];top base;size stacksize;};~SeqStack() {delete[] base;top NULL;base NULL;};int Empty_Stack(…