OpenSSL

密码学和 SSL/TLS 工具包

openssl-s_server

名称

openssl-s_server - SSL/TLS 服务器程序

概要

openssl s_server [-help] [-port +int] [-accept val] [-unix val] [-4] [-6] [-unlink] [-context val] [-verify int] [-Verify int] [-cert infile] [-cert2 infile] [-certform DER|PEM|P12] [-cert_chain infile] [-build_chain] [-serverinfo val] [-key filename|uri] [-key2 filename|uri] [-keyform DER|PEM|P12|ENGINE] [-pass val] [-dcert infile] [-dcertform DER|PEM|P12] [-dcert_chain infile] [-dkey filename|uri] [-dkeyform DER|PEM|P12|ENGINE] [-dpass val] [-nbio_test] [-crlf] [-debug] [-msg] [-msgfile outfile] [-state] [-nocert] [-quiet] [-no_resume_ephemeral] [-www] [-WWW] [-http_server_binmode] [-no_ca_names] [-ignore_unexpected_eof] [-servername] [-servername_fatal] [-tlsextdebug] [-HTTP] [-id_prefix val] [-keymatexport val] [-keymatexportlen +int] [-CRL infile] [-CRLform DER|PEM] [-crl_download] [-chainCAfile infile] [-chainCApath dir] [-chainCAstore uri] [-verifyCAfile infile] [-verifyCApath dir] [-verifyCAstore uri] [-no_cache] [-ext_cache] [-verify_return_error] [-verify_quiet] [-ign_eof] [-no_ign_eof] [-no_etm] [-no_ems] [-status] [-status_verbose] [-status_timeout int] [-proxy [http[s]://][userinfo@]host[:port][/path]] [-no_proxy addresses] [-status_url val] [-status_file infile] [-ssl_config val] [-trace] [-security_debug] [-security_debug_verbose] [-brief] [-rev] [-async] [-max_send_frag +int] [-split_send_frag +int] [-max_pipelines +int] [-naccept +int] [-read_buf +int] [-bugs] [-no_tx_cert_comp] [-no_rx_cert_comp] [-no_comp] [-comp] [-no_ticket] [-serverpref] [-legacy_renegotiation] [-no_renegotiation] [-no_resumption_on_reneg] [-allow_no_dhe_kex] [-prefer_no_dhe_kex] [-prioritize_chacha] [-strict] [-sigalgs val] [-client_sigalgs val] [-groups val] [-curves val] [-named_curve val] [-cipher val] [-ciphersuites val] [-dhparam infile] [-record_padding val] [-debug_broken_protocol] [-nbio] [-psk_identity val] [-psk_hint val] [-psk val] [-psk_session file] [-srpvfile infile] [-srpuserseed val] [-timeout] [-mtu +int] [-listen] [-sctp] [-sctp_label_bug] [-use_srtp val] [-no_dhe] [-nextprotoneg val] [-alpn val] [-ktls] [-sendfile] [-zerocopy_sendfile] [-keylogfile outfile] [-recv_max_early_data int] [-max_early_data int] [-early_data] [-stateless] [-anti_replay] [-no_anti_replay] [-num_tickets] [-tfo] [-cert_comp] [-nameopt option] [-no_ssl3] [-no_tls1] [-no_tls1_1] [-no_tls1_2] [-no_tls1_3] [-ssl3] [-tls1] [-tls1_1] [-tls1_2] [-tls1_3] [-dtls] [-dtls1] [-dtls1_2] [-allow_proxy_certs] [-attime timestamp] [-no_check_time] [-check_ss_sig] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-partial_chain] [-policy arg] [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains] [-use_deltas] [-auth_level num] [-verify_depth num] [-verify_email email] [-verify_hostname hostname] [-verify_ip ip] [-verify_name name] [-x509_strict] [-issuer_checks] [-bugs] [-no_comp] [-comp] [-no_ticket] [-serverpref] [-client_renegotiation] [-legacy_renegotiation] [-no_renegotiation] [-no_resumption_on_reneg] [-legacy_server_connect] [-no_legacy_server_connect] [-no_etm] [-allow_no_dhe_kex] [-prefer_no_dhe_kex] [-prioritize_chacha] [-strict] [-sigalgs algs] [-client_sigalgs algs] [-groups groups] [-curves curves] [-named_curve curve] [-cipher ciphers] [-ciphersuites 1.3ciphers] [-min_protocol minprot] [-max_protocol maxprot] [-record_padding padding] [-debug_broken_protocol] [-no_middlebox] [-xkey infile] [-xcert file] [-xchain file] [-xchain_build file] [-xcertform DER|PEM]> [-xkeyform DER|PEM]> [-CAfile file] [-no-CAfile] [-CApath dir] [-no-CApath] [-CAstore uri] [-no-CAstore] [-rand files] [-writerand file] [-engine id] [-provider name] [-provider-path path] [-propquery propq] [-enable_server_rpk] [-enable_client_rpk]

描述

此命令实现了一个通用的 SSL/TLS 服务器,它使用 SSL/TLS 在给定端口上监听连接。

选项

除了以下选项之外,此命令还支持"SSL_CONF_cmd(3) 中支持的命令行命令"中记录的通用选项和服务器专用选项。

-help

打印帮助信息。

-port +int

监听连接的 TCP 端口。如果未指定,则使用 4433。

-accept val

监听连接的可选 TCP 主机和端口。如果未指定,则使用 *:4433。

-unix val

要接受的 Unix 域套接字。

-4

仅使用 IPv4。

-6

仅使用 IPv6。

对于 -unix,首先解除链接任何现有的套接字。

-context val

设置 SSL 上下文 ID。它可以被赋予任何字符串值。如果此选项不存在,将使用默认值。

-verify int, -Verify int

要使用的验证深度。这指定了客户端证书链的最大长度,并使服务器请求客户端的证书。使用 -verify 选项时,会请求证书,但客户端不必发送证书,使用 -Verify 选项时,客户端必须提供证书,否则会发生错误。

如果密码套件无法请求客户端证书(例如匿名密码套件或 PSK),则此选项无效。

-cert infile

要使用的证书,大多数服务器密码套件都需要使用证书,有些需要使用具有特定公钥类型的证书:例如,DSS 密码套件需要包含 DSS(DSA)密钥的证书。如果未指定,则使用文件名 server.pem

-cert2 infile

要用于服务器名的证书文件;默认为 server2.pem

-certform DER|PEM|P12

服务器证书文件格式;默认情况下未指定。有关详细信息,请参见openssl-format-options(1)

-cert_chain

尝试构建与通过 -cert 选项指定的证书相关的证书链时要使用的非信任证书文件或 URI。这些非信任证书将发送给客户端,并用于生成证书状态(又名 OCSP 钉扎)请求。输入可以是 PEM、DER 或 PKCS#12 格式。

-build_chain

指定应用程序是否应该构建要提供给客户端的服务器证书链。

-serverinfo val

包含一个或多个 PEM 数据块的文件。每个 PEM 块必须编码 TLS ServerHello 扩展(2 字节类型、2 字节长度,后跟“长度”字节的扩展数据)。如果客户端发送与类型匹配的空 TLS ClientHello 扩展,则将返回相应的 ServerHello 扩展。

-key filename|uri

要使用的私钥。如果未指定,则使用证书文件。

-key2 filename|uri

如果未通过 -cert2 给出,则要用于服务器名的私钥文件。

-keyform DER|PEM|P12|ENGINE

密钥格式;默认情况下未指定。有关详细信息,请参见openssl-format-options(1)

-pass val

私钥和证书文件密码源。有关 val 格式的更多信息,请参见openssl-passphrase-options(1)

-dcert infile, -dkey filename|uri

指定附加证书和私钥,它们的行为方式与 -cert-key 选项相同,只是如果它们未指定(未使用附加证书和密钥),则没有默认值。如上所述,一些密码套件需要包含特定类型密钥的证书。一些密码套件需要携带 RSA 密钥的证书,而另一些则需要 DSS(DSA)密钥。通过使用 RSA 和 DSS 证书和密钥,服务器可以通过使用适当的证书来支持仅支持 RSA 或 DSS 密码套件的客户端。

-dcert_chain

尝试构建服务器证书链时要使用的非信任证书文件或 URI,前提是使用通过 -dcert 选项指定的证书。输入可以是 PEM、DER 或 PKCS#12 格式。

-dcertform DER|PEM|P12

附加证书文件的格式;默认情况下未指定。有关详细信息,请参见openssl-format-options(1)

-dkeyform DER|PEM|P12|ENGINE

附加私钥的格式;默认情况下未指定。有关详细信息,请参见openssl-format-options(1)

-dpass val

附加私钥和证书的密码。有关 val 格式的更多信息,请参见openssl-passphrase-options(1)

-nbio_test

测试非阻塞 I/O。

-crlf

此选项将来自终端的换行符转换为 CR+LF。

-debug

打印大量的调试信息,包括所有流量的十六进制转储。

-security_debug

打印来自 SSL/TLS 安全框架的输出。

-security_debug_verbose

打印来自 SSL/TLS 安全框架的更多输出

-msg

显示所有协议消息,并带有十六进制转储。

-msgfile outfile

要将 -msg-trace 的输出发送到的文件,默认为标准输出。

-state

打印 SSL 会话状态。

-CRL infile

要使用的 CRL 文件。

-CRLform DER|PEM

CRL 文件格式;默认情况下未指定。有关详细信息,请参见openssl-format-options(1)

-crl_download

从证书的 CDP 扩展中给出的分发点下载 CRL

-verifyCAfile filename

PEM 格式的 CA 文件,其中包含用于验证客户端证书的可信证书。

-verifyCApath dir

包含用于验证客户端证书的可信证书的目录。此目录必须采用“哈希格式”,有关更多信息,请参见openssl-verify(1)

-verifyCAstore uri

包含用于验证客户端证书的可信证书的存储的 URI。

-chainCAfile file

PEM 格式的文件,其中包含尝试构建服务器证书链时要使用的可信证书。

-chainCApath dir

包含用于构建提供给客户端的服务器证书链的可信证书的目录。此目录必须采用“哈希格式”,有关更多信息,请参见openssl-verify(1)

-chainCAstore uri

包含用于构建提供给客户端的服务器证书链的可信证书的存储的 URI。URI 可以指示单个证书,也可以指示证书集合。对于 file: 方案中的 URI,它充当 -chainCAfile-chainCApath,具体取决于 URI 是否指示目录或单个文件。有关 file: 方案的更多信息,请参见ossl_store-file(7)

-nocert

如果设置了此选项,则不使用证书。这会将可用的密码套件限制为匿名密码套件(目前仅为匿名 DH)。

-quiet

禁止打印会话和证书信息。

-no_resume_ephemeral

如果使用短暂 (EC)DH,则禁用缓存和票证。

-tlsextdebug

打印从服务器接收到的任何 TLS 扩展的十六进制转储。

-www

在客户端连接时向其发送状态消息。这包括有关所用密码和各种会话参数的信息。输出采用 HTML 格式,因此此选项可以与 Web 浏览器一起使用。特殊 URL /renegcert 会打开客户端证书验证,而 /reneg 会告诉服务器请求重新协商。-early_data 选项不能与此选项一起使用。

-WWW, -HTTP

模拟一个简单的 Web 服务器。页面将相对于当前目录解析,例如,如果请求 URL 为 https://myhost/page.html,则将发送文件 ./page.html。如果使用 -HTTP 标志,则直接发送文件,并且应包含任何 HTTP 响应标头(包括状态响应行)。如果使用 -WWW 选项,则由服务器生成响应标头,并检查文件扩展名以确定 Content-Type 标头。htmlhtmphp 的扩展名为 text/html,所有其他扩展名为 text/plain。此外,特殊 URL /stats 将返回类似于 -www 选项的状态信息。这两个选项都不能与 -early_data 结合使用。

-http_server_binmode

在充当 Web 服务器(使用 -WWW-HTTP 选项)时,以二进制模式打开客户端请求的文件。

-no_ca_names

禁用 TLS 扩展 CA 名称。出于安全原因或为了与某些 Windows TLS 实现(在该扩展大于 1024 字节时崩溃)的兼容性,您可能希望禁用它。

-ignore_unexpected_eof

一些 TLS 实现不会在关闭时发送强制的 close_notify 警告。如果应用程序尝试等待 close_notify 警告,但对等体在没有发送警告的情况下关闭连接,则会生成错误。启用此选项后,对等体无需发送 close_notify 警告,关闭的连接将被视为已收到 close_notify 警告。有关关闭连接的更多信息,请参见 SSL_shutdown(3)

-servername

HostName TLS 扩展的服务器名称。

-servername_fatal

在服务器名称不匹配时发送致命警告(默认:警告警告)。

-id_prefix val

生成以 val 为前缀的 SSL/TLS 会话 ID。这主要用于测试希望处理多个服务器的任何 SSL/TLS 代码(例如代理),其中每个服务器可能生成唯一的会话 ID 范围(例如,带有一定前缀)。

-keymatexport

使用标签导出密钥材料。

-keymatexportlen

导出指定数量字节的密钥材料;默认值为 20。

-no_cache

禁用会话缓存。

-ext_cache.

禁用内部缓存,设置并使用外部缓存。

-verify_return_error

验证错误通常只打印一条消息,但允许连接继续,用于调试目的。如果使用此选项,则验证错误会关闭连接。

-verify_quiet

除了验证错误之外,没有验证输出。

-ign_eof

忽略输入 EOF(默认:当 -quiet 时)。

-no_ign_eof

不要忽略输入 EOF。

-no_etm

禁用 Encrypt-then-MAC 协商。

-no_ems

禁用扩展主密钥协商。

-status

启用证书状态请求支持(也称为 OCSP 装订)。

-status_verbose

启用证书状态请求支持(也称为 OCSP 装订)并详细打印 OCSP 响应。使用 -cert_chain 选项指定证书状态请求所需的服务器证书签发者的证书。

-status_timeout int

将 OCSP 响应的超时设置为 int 秒。

-proxy [http[s]://][userinfo@]host[:port][/path]

用于访问 OCSP 服务器的 HTTP(S) 代理服务器,除非 -no_proxy 适用,请参见下文。代理端口默认为 80 或 443(如果方案为 https);除此之外,可选的 http://https:// 前缀将被忽略,以及任何用户身份信息和路径组件。如果已设置,则默认为环境变量 http_proxy,否则如果未使用 TLS,则默认为 HTTP_PROXY,否则如果已设置,则默认为 https_proxy,否则默认为 HTTPS_PROXY

-no_proxy addresses

不使用 HTTP(S) 代理的服务器的 IP 地址和/或 DNS 名称列表,用逗号和/或空格分隔(在后一种情况下,整个参数必须用 "..." 括起来)。默认情况下来自环境变量 no_proxy(如果已设置),否则为 NO_PROXY

-status_url val

如果服务器证书中没有响应者 URL,则设置一个备用响应者 URL 以供使用。如果没有此选项,如果服务器证书不包含响应者地址,则会返回错误。可选的用户身份信息和片段 URL 组件将被忽略。任何给定的查询组件都将作为路径组件的一部分处理。

-status_file infile

覆盖来自证书的任何 OCSP 响应者 URL,并始终提供存储在文件中的 OCSP 响应。该文件必须为 DER 格式。

-ssl_config val

使用给定的配置值配置 SSL_CTX。

-trace

显示协议消息的详细跟踪输出。

-brief

提供连接参数的简要摘要,而不是正常的详细输出。

-rev

简单的回显服务器,将接收到的文本反向发送回。还设置 -brief。不能与 -early_data 结合使用。

-async

打开异步模式。加密操作将异步执行。这只有在通过 -engine 选项使用异步支持引擎时才有效。出于测试目的,可以使用虚拟异步引擎 (dasync)(如果可用)。

-max_send_frag +int

要发送的数据片段的最大大小。有关更多信息,请参见 SSL_CTX_set_max_send_fragment(3)

-split_send_frag +int

用于拆分加密管道的數據的大小。如果一次写入的数据量大于此值,则它将被拆分为多个管道,最多为 max_pipelines 定义的管道数量。这只有在协商了合适的密码套件、加载了支持管道的引擎以及 max_pipelines 大于 1 时才有效。有关更多信息,请参见 SSL_CTX_set_split_send_fragment(3)

-max_pipelines +int

要使用的加密/解密管道的最大数量。这只有在加载了支持管道的引擎(例如 dasync 引擎)以及协商了合适的密码套件时才有效。默认值为 1。有关更多信息,请参见 SSL_CTX_set_max_pipelines(3)

-naccept +int

服务器将在接收指定数量的连接后退出,默认情况下无限制。

-read_buf +int

要用于连接的默认读取缓冲区大小。这只有在缓冲区大小大于否则将使用的缓冲区大小并且正在使用管道时才有效(有关更多信息,请参见 SSL_CTX_set_default_read_buffer_len(3))。

-bugs

SSL 和 TLS 实现中存在一些已知的错误。添加此选项将启用各种解决方法。

-no_tx_cert_comp

禁用对发送 TLSv1.3 压缩证书的支持。

-no_rx_cert_comp

禁用对接收 TLSv1.3 压缩证书的支持。

-no_comp

禁用 TLS 压缩的协商。从 OpenSSL 1.1.0 开始,TLS 压缩不推荐使用,默认情况下已关闭。

-comp

启用对 SSL/TLS 压缩的支持。此选项是在 OpenSSL 1.1.0 中引入的。从 OpenSSL 1.1.0 开始,TLS 压缩不推荐使用,默认情况下已关闭。TLS 压缩只能在安全级别 1 或更低级别使用。从 OpenSSL 3.2.0 及更高版本开始,默认安全级别为 2,因此如果不更改安全级别,此选项将无效。使用 -cipher 选项更改安全级别。有关更多信息,请参见 openssl-ciphers(1)

-no_ticket

禁用 RFC4507bis 会话票证支持。如果协商 TLSv1.3,此选项将无效。参见 -num_tickets

-num_tickets

控制在 TLSv1.3 中完成握手后发送给客户端的票证数量。默认票证数量为 2。此选项不会影响在恢复握手后发送的票证数量。

-serverpref

使用服务器的密码首选项,而不是客户端的首选项。

-prioritize_chacha

在客户端优先使用时优先使用 ChaCha 密码。需要 -serverpref

-no_resumption_on_reneg

设置 SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 选项。

-client_sigalgs val

支持客户端证书身份验证的签名算法(用冒号分隔的列表)。

-named_curve val

指定要使用的椭圆曲线。注意:这只是一条曲线,而不是一个列表。有关所有可能曲线的列表,请使用

$ openssl ecparam -list_curves
-cipher val

这允许修改服务器使用的 TLSv1.2 及以下密码套件列表。此列表与已配置的任何 TLSv1.3 密码套件相结合。当客户端发送支持的密码列表时,将使用服务器列表中也包含的第一个客户端密码。由于客户端指定了优先级顺序,因此服务器密码列表的顺序无关紧要。有关更多信息,请参见 openssl-ciphers(1)

-ciphersuites val

这允许修改服务器使用的 TLSv1.3 密码套件列表。此列表与已配置的任何 TLSv1.2 及以下密码套件相结合。当客户端发送支持的密码列表时,将使用服务器列表中也包含的第一个客户端密码。由于客户端指定了优先级顺序,因此服务器密码列表的顺序无关紧要。有关更多信息,请参见 openssl-ciphers(1) 命令。此列表的格式是简单的用冒号 (":") 分隔的 TLSv1.3 密码套件名称列表。

-dhparam infile

要使用的 DH 参数文件。短暂 DH 密码套件使用一组 DH 参数生成密钥。如果未指定,则尝试从服务器证书文件加载参数。如果失败,则将使用硬编码到此命令中的静态参数集。

-nbio

打开非阻塞 I/O。

-timeout

启用超时。

-mtu

设置链路层 MTU。

-psk_identity val

期望客户端在使用 PSK 密码套件时发送 PSK 标识 val,如果他们没有发送,则发出警告。默认情况下,预期的 PSK 标识是字符串 "Client_identity"。

-psk_hint val

在使用 PSK 密码套件时使用 PSK 标识提示 val

-psk val

在使用 PSK 密码套件时使用 PSK 密钥 val。该密钥以十六进制数给出,没有前导 0x,例如 -psk 1a2b3c4d。为了使用 PSK 密码,必须提供此选项。

-psk_session file

使用存储在 file 中的 pem 编码的 SSL_SESSION 数据作为 PSK 的基础。请注意,这只有在协商 TLSv1.3 时才有效。

-srpvfile

SRP 的验证器文件。此选项已弃用。

-srpuserseed

默认用户盐的种子字符串。此选项已弃用。

-listen

此选项只能与上述 DTLS 选项之一结合使用。使用此选项,此命令将在 UDP 端口上监听传入连接。将检查到达的任何 ClientHellos 以查看它们是否包含 cookie。任何没有 cookie 的都会收到 HelloVerifyRequest 的响应。如果收到包含 cookie 的 ClientHello,则此命令将连接到该对等体并完成握手。

-sctp

在 DTLS 中使用 SCTP 作为传输协议,而不是 UDP。必须与 -dtls-dtls1-dtls1_2 结合使用。此选项仅在 OpenSSL 支持 SCTP 时才可用。

-sctp_label_bug

在计算 DTLS/SCTP 的端点对共享密钥时,使用较旧的 OpenSSL 实现的错误行为。这允许与较旧的错误实现进行通信,但会破坏与正确实现的互操作性。必须与 -sctp 结合使用。此选项仅在 OpenSSL 支持 SCTP 时才可用。

-use_srtp

使用冒号分隔的配置文件列表提供 SRTP 密钥管理。

-no_dhe

如果设置了此选项,则不会加载任何 DH 参数,从而有效地禁用短暂 DH 密码套件。

-alpn val, -nextprotoneg val

这些标志分别启用应用程序层协议协商或下一协议协商 (NPN) 扩展。ALPN 是 IETF 标准,取代了 NPN。val 列表是支持的协议名称的逗号分隔列表。列表应首先包含最理想的协议。协议名称是可打印的 ASCII 字符串,例如“http/1.1”或“spdy/3”。如果使用-tls1_3,则不能指定标志-nextprotoneg

-ktls

启用内核 TLS 以进行发送和接收。此选项在 OpenSSL 3.2.0 中引入。从 OpenSSL 3.2.0 开始,内核 TLS 默认情况下处于关闭状态。

-sendfile

如果设置此选项并且启用了 KTLS,则将使用 SSL_sendfile() 而不是 BIO_write() 来发送客户端请求的 HTTP 响应。此选项仅在指定-ktls 以及-WWW-HTTP 时有效。

-zerocopy_sendfile

如果设置此选项,SSL_sendfile() 将使用零拷贝 TX 模式,该模式在与 KTLS 硬件卸载一起使用时可以提高性能。请注意,如果在发送过程中更改文件,则可能会传输无效的 TLS 记录。此选项取决于-sendfile;单独使用时,将隐式使用-sendfile,并显示警告。请注意,FreeBSD 上的 KTLS sendfile 始终以零拷贝模式运行。

-keylogfile outfile

将 TLS 密钥附加到指定的密钥日志文件,以便外部程序(如 Wireshark)可以解密 TLS 连接。

-max_early_data int

更改为新会话和任何传入的早期数据(与-early_data 标志一起使用时)指定的默认最大早期数据字节数。默认值为大约 16k。参数必须是大于或等于 0 的整数。

-recv_max_early_data int

指定将接受的最大早期数据字节数的硬限制。

-early_data

尽可能接受早期数据。不能与-www-WWW-HTTP-rev 一起使用。

-stateless

需要 TLSv1.3 Cookie。

-anti_replay, -no_anti_replay

分别打开或关闭重放保护。除非被配置文件覆盖,否则重放保护默认情况下处于打开状态。当打开时,OpenSSL 将自动检测会话票证是否已使用超过一次,是否已协商 TLSv1.3 以及服务器上是否启用了早期数据。如果会话票证第二次或后续时间被使用,则会强制执行完整握手。将拒绝发送的任何早期数据。

-tfo

启用接受 TCP 快速打开 (RFC7413) 连接。

-cert_comp

预压缩将在握手期间发送的证书 (RFC8879)。

-nameopt option

这指定了如何显示主题或颁发者名称。有关详细信息,请参阅openssl-namedisplay-options(1)

-no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3, -ssl3, -tls1, -tls1_1, -tls1_2, -tls1_3

请参阅openssl(1) 中的“TLS 版本选项”

-dtls, -dtls1, -dtls1_2

这些指定使用 DTLS 而不是 TLS。请参阅openssl(1) 中的“TLS 版本选项”

-bugs, -comp, -no_comp, -no_ticket, -serverpref, -client_renegotiation, -legacy_renegotiation, -no_renegotiation, -no_resumption_on_reneg, -legacy_server_connect, -no_legacy_server_connect, -no_etm -allow_no_dhe_kex, -prefer_no_dhe_kex, -prioritize_chacha, -strict, -sigalgs algs, -client_sigalgs algs, -groups groups, -curves curves, -named_curve curve, -cipher ciphers, -ciphersuites 1.3ciphers, -min_protocol minprot, -max_protocol maxprot, -record_padding padding, -debug_broken_protocol, -no_middlebox

有关详细信息,请参阅SSL_CONF_cmd(3) 中的“支持的命令行命令”

-xkey infile, -xcert file, -xchain file, -xchain_build file, -xcertform DER|PEM, -xkeyform DER|PEM

设置扩展证书验证选项。有关详细信息,请参阅openssl-verification-options(1) 中的“扩展验证选项”

-CAfile file, -no-CAfile, -CApath dir, -no-CApath, -CAstore uri, -no-CAstore

有关详细信息,请参阅openssl-verification-options(1) 中的“受信任证书选项”

-rand files, -writerand file

有关详细信息,请参阅openssl(1) 中的“随机状态选项”

-engine id

请参阅openssl(1) 中的“引擎选项”。此选项已弃用。

-provider name
-provider-path path
-propquery propq

请参阅openssl(1) 中的“提供程序选项”provider(7)property(7)

-allow_proxy_certs, -attime, -no_check_time, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict -issuer_checks

设置证书链验证的各种选项。有关详细信息,请参阅openssl-verification-options(1) 中的“验证选项”

如果服务器请求客户端证书,则会显示验证错误(用于调试),但命令将继续执行,除非使用-verify_return_error 选项。

-enable_server_rpk

启用对向客户端发送原始公钥 (RFC7250) 的支持。如果客户端请求,服务器将发送原始公钥,前提是配置了合适的密钥和公钥证书对。不支持原始公钥或更喜欢使用 X.509 证书的客户端仍然可以选择像往常一样接收 X.509 证书。

原始公钥是从配置的证书/私钥中提取的。

-enable_client_rpk

启用对接收来自客户端的原始公钥 (RFC7250) 的支持。客户端使用 X.509 证书成为可选的,支持原始公钥的客户端可以选择使用它们。不支持原始公钥或更喜欢使用 X.509 证书的客户端仍然可以选择像往常一样发送 X.509 证书。

原始公钥是从配置的证书/私钥中提取的。

连接命令

如果与 SSL 客户端建立了连接请求,并且没有使用-www-WWW 选项,则通常会显示从客户端接收到的任何数据,并且任何按键都会发送到客户端。

还识别某些命令,这些命令执行特殊操作。这些命令是一个字母,必须出现在行的开头。它们列在下面。

q

结束当前的 SSL 连接,但仍接受新连接。

Q

结束当前的 SSL 连接并退出。

r

重新协商 SSL 会话(仅限 TLSv1.2 及更低版本)。

R

重新协商 SSL 会话并请求客户端证书(仅限 TLSv1.2 及更低版本)。

P

通过底层 TCP 连接发送一些纯文本:这会导致客户端由于协议违规而断开连接。

S

打印一些会话缓存状态信息。

k

向客户端发送密钥更新消息(仅限 TLSv1.3)

K

向客户端发送密钥更新消息并请求返回一个(仅限 TLSv1.3)

c

向客户端发送证书请求(仅限 TLSv1.3)

笔记

此命令可用于调试 SSL 客户端。要接受来自 Web 浏览器的连接,可以使用以下命令:

openssl s_server -accept 443 -www

例如。

虽然在请求客户端证书时指定空的 CA 列表从严格意义上讲是协议违规,但一些 SSL 客户端将其解释为意味着任何 CA 都可以接受。这对于调试很有用。

可以使用openssl-sess_id(1) 命令打印出会话参数。

臭虫

由于此程序有很多选项,而且由于使用的一些技术比较旧,因此此命令的 C 源代码比较难读,不能作为如何做事的典范。典型的 SSL 服务器程序会简单得多。

常见密码的输出是错误的:它只是给出了 OpenSSL 识别和客户端支持的密码列表。

应该有一种方法可以让此命令打印出客户端说支持的任何未知密码套件的详细信息。

也可以看看

openssl(1)openssl-sess_id(1)openssl-s_client(1)openssl-ciphers(1)SSL_CONF_cmd(3)SSL_CTX_set_max_send_fragment(3)SSL_CTX_set_split_send_fragment(3)SSL_CTX_set_max_pipelines(3)ossl_store-file(7)

历史

在 OpenSSL 1.1.0 中添加了 -no_alt_chains 选项。

在 OpenSSL 1.1.1 中添加了 -allow-no-dhe-kex 和 -prioritize_chacha 选项。

在 OpenSSL 3.0 中弃用了-srpvfile-srpuserseed-engine 选项。

在 OpenSSL 3.2 中添加了-enable_client_rpk-enable_server_rpk-no_rx_cert_comp-no_tx_cert_comp-tfo 选项。

版权所有 2000-2024 OpenSSL 项目作者。保留所有权利。

根据 Apache 许可证 2.0 版(“许可证”)授权。除符合许可证的规定外,您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或https://www.openssl.org/source/license.html 中获取副本。