OpenSSL命令---s_server

用途:

s_serveropenssl提供的一个SSL服务程序。使用此程序前,需要生成各种证书。本命令可以用来测试ssl客户端,比如各种浏览器的https协议支持。

用法:

openssl s_server [-accept port] [-context id] [-verify depth] [-Verify depth] [-crl_check] [-crl_check_all] 
[-cert filename] [-certform DER|PEM] [-key filename] [-keyform DER|PEM] [-pass arg] [-dcert filename] 
[-dcertform DER|PEM ] [-dkey keyfile] [-dkeyform DER|PEM ] [-dpass arg] [-dhparam filename] 
[-name_curve arg][-nbio] [-nbio_test] [-crlf] [-debug] [-msg] [-state] [-CApath directory] [-CAfile filename] 
[-nocert] [-cipher cipherlist] [-quiet] [-no_tmp_rsa] [-ssl2] [-ssl3] [-tls1_1] [-tls1_2] [-tls1] [-dtls1] 
[-timeout] [-mtu] [-chain] [-no_ssl2][-no_ssl3] [-no_tls1] [-no_tls1_1] [-no_tls1_2] [-no_dhe] [-no_ecdhe]
[-bugs] [-hack] [-www] [-WWW] [-HTTP][-engine id] [-tlsextdebug] [-no_ticket] [-id_prefix arg] [-rand file(s)]


选项说明:

-accept port:监听的TCP端口。缺省为4433

-context id:设置SSL contextid, 可以设置为任何值。SSL context是会话ID的上下文。也可以不设置这个选项,,有缺省的给你用的。

-verify depth-Verify depth:意义和s_client的这个选项一样,但同时表示必须验证client的证书。不记得serverclient的证书验证是可以选的吗?-verify表示向client要求证书,但client还是可以选择不发送证书,-Verify表示一定要client的证书验证,否则握手失败。

-crl_check-crl_check_all:检查客户端的证书是否在CA的废除列表中。CRLs)在证书文件中。crl_check_all表示要检查所有的CA证书中的废除列表。

-cert filename:使用的证书文件名。大多数服务器算法套件需要一个证书,还有一些需要证书的公钥类型,例如DSS算法组件需要证书(包含一个DSSDSA)密钥)。缺省使用 ./server.pem

-certform DER|PEM:证书的格式,一般为DERPEM。缺省为PEM

-key filename:使用的私有密钥文件。如果没有指定,那么证书文件会被使用(使用的是证书公钥值)。

-keyform DER|PEM:私有密钥文件的格式,一般为DERPEM。缺省为PEM

-pass arg:私钥保护口令来源。

-dcert filename-dkey keyfile:指定一个附加的证书文件和私有密钥文件。不同的cipher需要不同的证书和私有密钥文件。这个不同的cipher主要指cipher里面的不对称加密算法不同。比如基于RSAcipher需要的是RSA的私有密钥文件和证书,而基于DSA的算法则需要的是DSA的私有密钥文件和证书。这个option可以让这样我们的server同时支持俩种算法的cipher成为可能。

-dcertform DER|PEM:附加证书的格式,一般为DERPEM。缺省为PEM

-dkeyform DER|PEM:附加的私有密钥文件的格式,一般为DERPEM。缺省为PEM

-dpass arg:附加私钥保护口令来源。

-dhparam filename:使用的DH参数文件名。如果没有设置,那么server会试图去从证书文件里面获得这些参数。如果证书里面没有这么参数,一些hard code的参数就被调用。

-name_curve arg:椭圆曲线算法的选择类型。

-nbio_test:检查非阻塞socketI/O运行情况。

-nbio:使用非阻塞socket

-crlf:把在终端输入的换行回车转化成/r/n送出去。

-debug:打印所有的调试信息。

-msg:用16进制显示所有的协议数据。

-state:打印SSL session的状态, ssl也是一个协议,当然有状态。

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

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

-nocert:如果server不想使用任何证书,就设置这个选项。目前只有anonymous DH算法有需要这么做。

-cipher cipherlist:由我们自己来决定选用什么加密算法,尽管是由server来决定使用什么算法列表,但它一般都会采用我们送过去的cipher列表里的第一个cipher

-quiet:禁止打印sessionhe 和证书信息值。

-no_tmp_rsa:现在的接口cipher有时会使用临时RSA密钥。那就是说每次对话的时候临时生成密钥对。本选项就是用来禁止这种情况的。

-ssl2-ssl3-tls1_1-tls1_2-tls1-dtls1-no_ssl2-no_ssl3-no_tls1-no_tls1_1-no_tls1_2:使用的协议状态值。

-no_dhe:如果这个选项被设置,则没有DH参数提供,即不能够使用关于DH相关的ciphers

-no_ecdhe:能够使用关于ECDH相关的ciphers

-bugs:打印所有的调试信息。

-hack:这个选项对更早的Netscape SSL代码提供一个可行的解决方案。

-www:当client连接上来的时候,发回一个网页,内容就是SSL握手的一些内容。

-HTTP-WWW:用来把具体某个文件当网页发回给client的请求。比如clientURL请求是 https://myhost/page.html ,就把 ./page.html发回给client-engine id:硬件引擎。

-tlsextdebug:打印TLS协议中服务器端接收到的额外信息值。

-no_ticket:不支持RFC4507bis会话类型。

-id_prefix arg:根据arg的值来产生SSL/TLS中的session IDs的前缀。当有多个服务器的时候,大多数用于测试SSL/TLS代码。

-rand file(s):指定随机数种子文件,多个文件间用分隔符分开,windows用“;”,OpenVMS用“,“,其他系统用“:”。

连接的命令:

没有设置 –www -WWW这俩个选项,当一个ssl client连接上来的话它所发过来的任何东西都会显示出来,你在终端输入的任何东西都会发回给client。你可以通过在终端输入的行的第一个字母控制一些行为。

q

    中断当前连接,但不关闭server.

Q

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

r

    进行renegotiate行为。

R

    进行renegotiate行为, 并且要求client的证书。

P

    TCP层直接送一些明文。这会使client认为我们没有按协议的游戏规则进行通信而断开连接。

S

    打印出session-cache的状态信息。session-cache在编程章节会详细介绍。

注意:

B<s_server>可以用于调试SSL客户端。为了从一个web浏览器接受连接,命令如下:

openssl s_server -accept 443 -www

可以这样使用。

大多数的webNetscape MSIE除外)仅仅支持RSA算法套件。因此当使用非RSA格式的证书时,他们不能够连接服务器。

即使指定一个空的CA列表,当请求一个客户端证书时敬爱那个严重的违反协议标准,一些SSL客户端解释说任何CA都可以接受。这个对调试证书用途非常有效。

可以使用B<sess_id>命令来打印出使用的session参数。

BUGs

因为该项目有很多选项,好多用的是老的技术,c代码的s_client很难去读取为什么会被关闭。一个典型的SSL客户端项目将会更加简单的。

普通的算法输出是个错误:它仅仅给出了OpenSSL确认的客户端支持的算法套件列表。

这是一个方法:打印客户端支持的不知名的算法套件的详细信息值。

### 回答1: OpenSSL是一个开源的加密工具包,可以用于验证私钥证书。 在命令行中,使用openssl s_server -msg -verify命令可以执行验证私钥证书的操作。 -msg参数可以指定在连接中发送和接收的消息。 -verify参数用于启用验证模式。 在执行该命令时,OpenSSL会作为服务器运行,等待客户端连接。然后,OpenSSL会将所收到的消息打印出来。在验证模式下,OpenSSL会尝试验证客户端发送的证书。 在验证过程中,OpenSSL会使用传入的私钥和证书进行验证。私钥用于解密证书中的数字签名,并与证书中的公钥进行比对,以验证证书的真实性和完整性。 如果验证成功,OpenSSL会打印出相关验证信息。如果验证失败,OpenSSL会显示相应的错误信息,指示证书存在问题或不是一个有效的证书。 通过使用openssl s_server -msg -verify命令,我们可以方便地验证私钥证书,以确保其有效性和安全性。 需要注意的是,验证私钥证书需要在合适的环境中进行,并且应该使用正确的私钥和证书进行验证,以确保验证的准确性和可靠性。 ### 回答2: openssl s_server -msg -verify是一条命令,用于在openssl中进行私钥证书验证。 首先,我们需要了解openssl中私钥和证书的概念。私钥是一种用于加密和解密数据的密钥,它通常由证书颁发机构(CA)生成并颁发给特定的实体。而证书是由CA签名的包含实体公钥和其他相关信息的文件,它用于验证实体的身份。 使用openssl s_server -msg -verify命令时,我们可以在服务器模式下进行私钥证书验证。这个命令会打开一个服务器,并监听指定的端口,等待客户端连接。当客户端连接之后,服务器会使用私钥和证书对收到的数据进行验证。 私钥证书验证的过程如下: 1.服务器使用私钥解密收到的数据。 2.服务器使用证书验证解密后的数据的完整性和真实性。通过计算数据的散列值以及使用证书中的公钥验证该散列值,服务器可以确定数据是否被篡改过。 3.如果数据通过了验证,服务器会对数据进行响应。 使用openssl s_server -msg -verify命令可以方便地进行私钥证书验证,同时可以通过命令行参数调整验证的具体设置。这对于建立安全的网络连接和验证实体身份非常有用。 需要注意的是,私钥和证书的安全性非常重要。私钥应该保密且仅由合法的实体使用,证书应该由可信的CA签发。同时,定期更新证书和私钥也是很重要的安全措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值