OpenSSL命令---s_time

本文深入解析了openssls_time工具的用途、用法及其参数说明,包括如何进行SSL连接性能测试,常见错误及调试方法,以及SSL协议版本、验证深度等关键配置项。

用途:

s_timeopenss提供的SSL/TLS性能测试工具,用于测试SSL/TSL服务。

用法:

openssl s_time [-connect host:port] [-www page] [-cert filename] [-key filename] [-CApath directory] 
[-CAfile filename] [-reuse] [-new] [-verify depth] [-nbio] [-time seconds] [-ssl2] [-ssl3] [-bugs] 
[-cipher cipherlist]

选项说明:

-connect host:port:设置服务器地址和端口号。如果没有设置,则默认为本地主机以及端口号4433

-www page:指定获取的web网页。

-cert filename:使用的证书文件。如果server不要求要证书,这个可以省略。默认为PEM格式。

 -key filename:使用的证书私钥文件。如果server不要求要证书,这个可以省略。默认为PEM格式。

-CApath directory:设置信任CA文件所在路径,此路径中的ca文件名采用特殊的形式:xxx.0,其中xxxCA证书持有者的哈希值,它通过x509 -hash命令获得。

-CAfile filename:某文件,里面是所有你信任的CA的证书的内容。当你要建立client的证书链的时候也需要用到这个文件。

-reuse:用同样地session ID多次请求,主要用于测试。

-new  新建链接。

-verify depth:设置验证深度。

-nbio:设置非阻塞模式的I/O

-time seconds:指定搜集数据的秒数,默认30秒。

-ssl2-ssl3:采用的SSL协议版本。

-bugs:打印调试信息值。

-cipher cipherlist:算法套件。

注意:

s_time可以被用于测量SSL连接过程中的性能。为了连接一个SSL HTTP服务器并获取默认页的命令如下:

openssl s_time -connect servername:443 -www / -CApath yourdir -CAfile yourfile.pem

-cipher commoncipher [-ssl3]

使用的端口号是443’ commoncipher’是一个被服务器和客户端所同意的算法组件。

如果握手失败,原因可能有以下几种:

1.          server需要验证你的证书,但你没有证书。

2.          如果肯定不是原因1,那么就慢慢一个一个set以下几个选项:-bugs -ssl2 -ssl3 -tls1-no_ssl2-no_ssl3 -no_dtls

3.          这可能是因为对方的server处理SSLbug

如果在命令行用B<-cert>选项来指定一个证书,它将不会被使用,除非服务器明确的请求一个客户端的证书。因此仅仅在客户端包含一个客户端证书时不能保证证书在工作。

BUGs

因为这个项目没有包含L<s_client(1)|s_client(1)>项目的所有选项来转换协议开和关,就不能够测量服务器端的所有协议的性能问题。

如果服务器验证失败,B<-verify>将会退出。

### 使用 OpenSSL 测试特定 IP 和端口的 SSL/TLS 连接问题 当尝试使用 `openssl s_client -connect 172.18.2.33:22142` 测试与特定 IP 和端口的 SSL/TLS 连接时,若目标服务器不支持客户端使用的 TLS 版本,可能会遇到 `unsupported protocol` 错误。这通常是因为客户端和服务器之间没有共同支持的 TLS 协议版本,可能是由于服务器配置或客户端使用的 OpenSSL 版本不支持某些较新的协议版本[^1]。 #### 测试 TLS 1.0 和 TLS 1.1 连接 OpenSSL 默认可能会使用较新的 TLS 版本(如 TLS 1.2 或 TLS 1.3),而某些服务器可能只支持较旧的协议版本(如 TLS 1.0 或 TLS 1.1)。在这种情况下,可以通过指定 `-tls1` 或 `-tls1_1` 选项来强制使用特定的 TLS 版本来进行连接测试。 ##### 使用 TLS 1.0 进行连接测试 ```bash openssl s_client -connect 172.18.2.33:22142 -tls1 ``` 此命令将尝试使用 TLS 1.0 协议建立连接。如果服务器支持 TLS 1.0,则连接应成功;否则,仍将收到 `unsupported protocol` 错误。 ##### 使用 TLS 1.1 进行连接测试 ```bash openssl s_client -connect 172.18.2.33:22142 -tls1_1 ``` 此命令将尝试使用 TLS 1.1 协议建立连接。如果服务器支持 TLS 1.1,则连接应成功;否则,仍将收到 `unsupported protocol` 错误。 #### 分析握手失败的原因 如果连接失败并出现 `unsupported protocol` 错误,可以通过以下方式进一步诊断问题: 1. **检查服务器支持的 TLS 版本**:确保服务器配置允许使用客户端尝试连接的 TLS 版本。例如,某些服务器可能仅支持 TLS 1.2 或更高版本,而不支持 TLS 1.0 或 TLS 1.1。 2. **检查 OpenSSL 版本**:确保使用的 OpenSSL 版本支持目标服务器所需的 TLS 版本。某些较旧的 OpenSSL 版本可能不支持 TLS 1.2 或 TLS 1.3。 3. **使用 `openssl ciphers -v` 查看支持的加密套件**:这可以帮助确认客户端支持的加密套件是否与服务器兼容。 4. **查看服务器日志**:服务器端的日志可能提供有关握手失败的详细信息,例如不支持的 TLS 版本或不匹配的加密套件。 #### 示例输出 如果连接成功,`openssl s_client` 命令将输出 SSL/TLS 握手的详细信息,包括使用的协议版本、加密套件、证书链等。例如: ``` New, TLSv1.0, Cipher is ECDHE-RSA-AES256-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1 Cipher : ECDHE-RSA-AES256-SHA Session-ID: ... Session-ID-ctx: ... Master-Key: ... Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None Start Time: 1698765432 Timeout : 7200 (sec) Verify return code: 0 (ok) ``` 如果连接失败,错误信息将类似于: ``` 14077410:error:14209102:SSL routines:tls_early_post_process_client_hello:unsupported protocol:../ssl/statem/statem_clnt.c:1012: ``` 这表明服务器不支持客户端使用的 TLS 版本。 #### 解决方案 如果服务器不支持 TLS 1.0 或 TLS 1.1,可以尝试以下方法: 1. **升级服务器配置**:确保服务器支持较新的 TLS 版本(如 TLS 1.2 或 TLS 1.3),并更新服务器的 SSL/TLS 配置以启用这些协议版本。 2. **使用支持 TLS 1.2 的客户端**:如果服务器支持 TLS 1.2,可以尝试使用 `-tls1_2` 选项进行连接测试: ```bash openssl s_client -connect 172.18.2.33:22142 -tls1_2 ``` 3. **禁用不支持的 TLS 版本**:如果客户端支持多个 TLS 版本,可以通过禁用不支持的版本来确保使用兼容的协议。例如,如果服务器仅支持 TLS 1.2,可以禁用 TLS 1.3: ```bash openssl s_client -connect 172.18.2.33:22142 -tls1_2 -no_tls1_3 ``` 通过上述方式,可以有效地测试和诊断特定 IP 和端口的 SSL/TLS 连接问题,特别是在尝试使用不同 TLS 版本(如 TLS 1.0 和 TLS 1.1)建立 HTTPS 连接时遇到的协议不支持错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值