问题背景描述:在使用jmeter进行测试时,尝试抓取一个使用HTTPS协议的web端口,设置jmeter协议为HTTPS,运行时出现"javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection"的错误。问题:为何会出现此错误?解释:1 错误出现频率较高场景:通常发生在试图使用SSLSocket连接HTTP端口或用普通...
jmeter报错:javax.net.ssl.SSLException
问题背景描述:在使用jmeter进行测试时,尝试抓取一个使用HTTPS协议的web端口,设置jmeter协议为HTTPS,运行时出现"javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection"的错误。
问题:为何会出现此错误?
解释:
1 错误出现频率较高场景:通常发生在试图使用SSLSocket连接HTTP端口或用普通socket连接HTTPS服务端口时。
2 初步判断原因:使用Socket请求HTTPS协议服务导致错误,因服务端提供的端口并非HTTP服务。
3 深层原因分析:
3.1 HTTPS与HTTP协议差异大
HTTPS协议通过加密确保了通信数据安全性,要求通信双方共享密钥(通常基于对称加密算法)。
3.2 HTTPS中的SSL层实现原理
HTTPS协议架构内有SSL层,通过非对称RSA加密实现密钥交换,构建安全数据传输通道。理解RSA加密原理简单,即服务器A与客户端B和可信第三方C之间,A生成RSA公私钥对,C使用私钥加密DES密钥,并与RSA公钥一起发给客户端证书。A将C的证书(包含C私钥对应的公钥)、客户端证书和RSA私钥发给B,B首先验证C证书确保数据由A发出,然后使用C的公钥加密DES密钥,可安全发送,只有A具有对应的RSA私钥,能解密获取DES密钥,完成对称密钥交换。
3.3 题目中报错问题解释原理
一般HTTP协议无安全层,无需加密通信双方信息,故无对称加密算法设计,无处理HTTPS请求的程序,向使用HTTP协议的web服务器发送HTTPS请求自然会报错。
4 解决方案:将HTTPS安全协议改为HTTP协议。
运行成功
5 关联学习资源:SSLsocket原理和实现,适用于实际应用的SSLsocket编程教程。2024-11-16