s_server是openssl提供的一个SSL服务程序。使用此程序前,需要生成各种证书,可参考:第31章中第建立SSL测试环境一节。本命令可以用来测试ssl客户端,比如各种浏览器的https协议支持。
用法:
openssl s_server [-accept port] [-context id] [-verify depth] [-Verify
depth] [-cert filename] [-key keyfile] [-dcert filename] [-dkey key-
file] [-dhparam filename] [-nbio] [-nbio_test] [-crlf] [-debug] [-msg]
[-state] [-CApath directory] [-CAfile filename] [-nocert] [-cipher
cipherlist] [-quiet] [-no_tmp_rsa] [-ssl2] [-ssl3] [-tls1] [-no_ssl2]
[-no_ssl3] [-no_tls1] [-no_dhe] [-bugs] [-hack] [-www] [-WWW] [-HTTP]
[-engine id] [-rand file(s)]
选项:
-accept arg
监听的TCP端口,缺省为4433。
-context arg
设置ssl 上下文,不设置时采用缺省值。
-cert certname
服务使用的证书文件名。
-certform arg
证书文件格式,默认为PEM。
-keyform arg
私钥文件格式,默认为PEM。
-pass arg
私钥保护口令来源。
-msg
打印协议内容。
-timeout
设置超时。
-key keyfile
服务使用的私钥文件,由-cert指定的文件既可以包含证书,也可用包含私钥,此时,就不需要此选项。
-no_tmp_rsa
不生成临时RSA密钥。
-verify depth
设置证书验证深度。
-Verify arg
如果设置了此项为1,服务端必须验证客户端身份。
-CApath path
设置信任CA文件所在路径,此路径中的ca文件名采用特殊的形式:xxx.0。其中xxx为CA证书持有者的哈希值,可通过x509 -hash命令获得。
-CAfile file
指定CA证书文件。
-state
打印SSL握手状态。
-debug
打印更多的信息。
-nbio
不采用BIO。
-quiet
不打印输出信息。
-ssl2, -ssl3, -tls1
只采用某一种协。;
-no_ssl2, -no_ssl3, -no_tls1
不采用某种协议。
-www
返回给用户一个网页,内容为SSL握手的一些内容。
-WWW -HTTP
将某个文件作为网页发回客户端,例如client的URL请求是 https://myhost/page.html ,则把 ./page.html发回给client。如果不设置-www、-WWW 、-HTTP,客户端在终端输入任何字符,服务端都会响应同样的字符给客户端。
-rand file:file:...
设置随机数种子文件,SSL协议握手中会生成随机数,比如clienthello和serverhello消息。
-crlf
将用户在终端输入的换行回车转化成/r/n。
连接命令,这些输入不是程序运行选项,在程序运行过程中输入,如下:
q
中断当前连接,但不关闭服务。
Q
中断当前连接,退出程序。
r
重新协商。
R
重新协商,并且要求客户端证书。
P
在TCP层直接送一些明文,造成客户端握手错误并断开连接。
S
打印缓存的SESSION信息。