s_serveropenssl提供的一个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。其中xxxCA证书持有者的哈希值,可通过x509 -hash命令获得。

-CAfile file

       指定CA证书文件。

-state

       打印SSL握手状态。

-debug

       打印更多的信息。

-nbio

       不采用BIO

-quiet

       不打印输出信息。

-ssl2, -ssl3, -tls1

       只采用某一种协。;

-no_ssl2, -no_ssl3, -no_tls1

       不采用某种协议。

-www

返回给用户一个网页,内容为SSL握手的一些内容。

-WWW -HTTP

将某个文件作为网页发回客户端,例如clientURL请求是 https://myhost/page.html ,则把 ./page.html发回给client。如果不设置-www-WWW -HTTP,客户端在终端输入任何字符,服务端都会响应同样的字符给客户端。

       -rand file:file:...

设置随机数种子文件,SSL协议握手中会生成随机数,比如clienthelloserverhello消息。

-crlf

将用户在终端输入的换行回车转化成/r/n

       连接命令,这些输入不是程序运行选项,在程序运行过程中输入,如下:

q

中断当前连接,但不关闭服务。

Q

中断当前连接,退出程序。

 r

重新协商。

R

重新协商,并且要求客户端证书。

P

TCP层直接送一些明文,造成客户端握手错误并断开连接。

S

打印缓存的SESSION信息。