第二十三章 TCP 客户端 服务器通信 - SSL TLS组件

文章目录

  • [第二十三章 TCP 客户端 服务器通信 - SSL TLS组件](#第二十三章 TCP 客户端 服务器通信 - SSL TLS组件)
    • [`SSL / TLS`组件](#SSL / TLS组件)
  • [`TCP` 设备的 `OPEN-Only` 命令关键字](#TCP 设备的 OPEN-Only 命令关键字)
        • [`TCP` 设备的` OPEN-only` 命令关键字](#TCP 设备的 OPEN-only 命令关键字)

第二十三章 TCP 客户端 服务器通信 - SSL TLS组件

SSL / TLS组件

TCP设备的OPENUSE /SSL或/TLS关键字参数的值为带引号的字符串。这个字符串可以有一个、两个或三个组件,由'|'字符分隔:

  • cfg - 用于此连接的SSL配置的名称。该组件是必需的。

  • pw - 可选 --- 本地私钥文件的密码。这仅适用于交互式应用程序,当提示用户在运行时输入密码时。它不应与永久存储的密码一起使用。使用 Security.SSLConfigs.PrivateKeyPassword 属性进行持久存储。

  • DNShost - 可选 --- 仅适用于 SSL 客户端。指定服务器选择的证书(用于主机名验证)或特定服务器的完全限定 DNS 主机名(用于服务器名称指示)。如果省略 pw,则必须指定占位符"|"特点。

    主机名验证是一项功能,允许客户端检查它从服务器接收的证书是否包含带有客户端尝试连接的主机名的字段。这是供客户端应用程序使用的,例如 %Net.HttpRequest(),它想要验证服务器 X.509 证书是否包含与 URL 中的服务器名称匹配的完全合格的服务器 DNS 主机名,无论是在 subjectAltName 扩展名还是主题 CN 字段。这允许客户端检测中间人攻击使用错误域的有效证书的情况。

    服务器名称指示 (SNI) 是一项允许客户端向服务器提交其请求的主机名的功能。这允许处理多个域的服务器选择其多个证书之一返回。服务器可以选择一个匹配客户端主机名检查的。

以下是有效 /TLS 关键字参数的示例:

java 复制代码
/TLS="Client"
/TLS="Client|password"
/TLS="Client||www.intersystems.com"
/TLS="Client|password|www.intersystems.com" 

TCP 设备的 OPEN-Only 命令关键字

下表描述了只能在 OPEN 命令中指定的用于控制 TCP 设备的关键字。还有一些额外的 OPEN/USE 关键字(在本章前面描述过)可以用 OPENUSE 命令指定。所有关键字参数都是可选的。

TCP 设备的 OPEN-only 命令关键字
Keyword Default Description
/BINDTO[=address] 绑定到启动连接时使用的指定本地地址。对于客户端,这是从 IRIS 打开 TCP/IP 连接时使用的源地址。对于服务器,这是 IRIS 进程在打开 TCP/IP 连接时接受连接的 IP 地址。 /BINDTO=address 用于控制连接将使用哪个网络接口。 /BINDTO/BINDTO="" 删除以前指定的地址。如果指定的地址不存在,则 OPEN 命令将超时。
/CLOSELISTEN (仅限服务器)防止多个远程连接到侦听端口。如果指定,则在接受第一个连接后关闭侦听套接字。尝试连接的其他客户端将在 OPEN 命令上超时。
/CONNECTIONS=n or /CON=n 5 对应于 queuesize 位置参数,它确定有多少客户端作业可以排队等待与服务器的连接。
/HOSTNAME=str or /HOS=str 无默认 对应于 hostname 位置参数,它可以是 IP 主机的名称,也可以是 IPv4IPv6 地址格式的 IP 地址。可以使用 /USEIPV6 关键字来指定要使用的协议。
/IBUFSIZE=n or /IBU[=n] 1024 对应于 ibufsiz 位置参数,它指定 TCP 输入缓冲区的大小,该缓冲区保存从网络读取但尚未交付给应用程序的数据。
/OBUFSIZE=n or /OBU[=n] 1024 对应于 obufsiz 位置参数,它指定 TCP 输出缓冲区的大小,该缓冲区包含在连续"SEND"操作之间保存的数据。
/PORT=n 无默认 对应于端口位置参数,它是用于连接的 TCP 端口号或服务名称。
/SOCKET=n or /SOC=n 无默认 对应于"G"模式参数字符,这导致端口位置参数被解释为已打开数据套接字的套接字描述符。此关键字将套接字描述符作为其值,并用于代替 /PORT=n 关键字。 (使用 IRIS 调用或调用机制,将套接字描述符从另一个编程环境(例如 C)传递到 ObjectScript。)
/USEIPV6 无默认 如果指定 /USEIPV6/USEIPV6=1,则对入站和出站连接使用 IPv6 地址,覆盖 IPV6 系统开关。如果指定 /USEIPV6=0,则对入站和出站连接使用 IPv4 地址,覆盖 IPv6 系统开关。 如果未指定 /USEIPV6,则 IPV6 系统开关控制行为。使用 IPV6 系统开关设置,出站连接首先尝试连接 IPv4 地址;如果失败,它会尝试连接 IPv6 地址。对于入站连接,TCP 设备会同时侦听 IPv4IPv6 连接。在未设置 IPV6 的情况下,只有 IPv4 地址用于入站和出站连接。

以下示例显示了使用关键字语法打开的 TCP/IP 设备:

java 复制代码
  SET dev="|TCP|"_123
  SET portnum=57345
  OPEN dev:(/PSTE:/HOSTNAME="128.41.0.73":/PORT=portnum)
相关推荐
繁华的地方不一定留下你的脚印6 分钟前
ubuntu18.04版本配置静态IP并且可以上网(解决配置静态IP不能额上网的问题)
运维·服务器
0和1的舞者20 分钟前
网络通信的奥秘:HTTP详解 (七)
服务器·网络·网络协议·http·okhttp·软件工程·1024程序员节
阿猿收手吧!2 小时前
windows本机vscode通过ssh免密登录远程linux服务器 && git push/pull 免密
服务器·windows·vscode
创业之路&下一个五年2 小时前
按照ip的转换为二进制的方式理解a\b\c类地址的边界
服务器·网络·tcp/ip
skywalk81632 小时前
尝试Auto-coder.chat使用星河社区AIStudio部署的几个大模型:文心4.5-21b、Deepseek r1 70b、llama 3.1 8b
linux·服务器·人工智能·大模型·aistudio
梁正雄4 小时前
6、prometheus资源规划
运维·服务器·服务发现·prometheus·监控
晨曦之旅4 小时前
零成本体验云计算!阿贝云免费服务器深度测评
运维·服务器·云计算
夜郎king5 小时前
UniHttp/Jsoup Https SSL证书验证失败:SunCertPathBuilderException解决方案详解
https·ssl·jsoup访问https·unihttp访问https
神仙别闹6 小时前
基于C语言 HTTP 服务器客户端的实验
服务器·c语言·http
AuroraDPY6 小时前
计算机网络:基于TCP协议的自定义协议实现网络计算器功能
网络·tcp/ip·计算机网络