?
二十二.????
指令
s_server
用法:
? ?
? ? openssl s_server [-accept port] [-context id] [-verify depth]
? ?
? ? [-Verify depth] [-cert filename] [-key keyfile] [-dcert filename]
? ?
? ? [-dkey keyfile] [-dhparam filename] [-nbio] [-nbio_test] [-crlf]
? ?
? ? [-debug] [-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] [-engine id]
? ?
? ?
? ?
? ?
說明:
? ?
和
s_client
是反義詞,
模擬一個實現了
SSL
的
server.
? ?
? ?
? ? OPTIONS
? ? -accept port
? ?
監聽的
TCP
端口。缺省為
4433.
? ? -context id
? ?
設置
SSL context
的
id,
可以設置為任何值。
SSL context
是什么?編程的章節會詳細介紹的。你也可以不
set
這個
option,
有缺省的給你用的。
? ? -cert certname
? ?
使用的證書文件名。缺省使用
./server.pem
? ? -key keyfile
? ?
使用的私有密鑰文件。如果沒有指定,那么證書文件會被使用。
????
? ? The private key to use. If not specified then the certificate
? ? file will be used.
? ? -dcert filename, -dkey keyname
? ?
指定一個附加的證書文件和私有密鑰文件。不同的
cipher
需要不同的證書和
私有密鑰文件。這個不同的
cipher
主要指
cipher
里面的不對稱加密算法不同
??
比如基于
RSA
的
cipher
需要的是
RSA
的私有密鑰文件和證
書
,
而基于
DSA
的算法
??
則需要的是
DSA
的私有密鑰文件和證書
.
這個
option
可以讓這樣我們的
server
同時支持倆種算法的
cipher
成為可
能。
? ? -nocert
? ?
如果
server
不想使用任何證書,
set
這個
option.
? ?
目前只有
anonymous DH
算法有需要這么做。
? ? -dhparam filename
? ?
使用的
DH
參數文件名。如果沒有
set,
那么
server
會試圖去從證書文件里面獲得這些參數。如果證書里面沒有這么參數,一些
hard code
的參數就被調用。
? ? -nodhe
? ?
禁止使用基于
EDH
的
cipher.
? ? -no_tmp_rsa
? ?
現在的出口
cipher
有時會使用臨時
RSA
密鑰。那就是說每次對話的時候臨時生成密鑰對。本
optio
就是用來禁止這種情況的。
? ? -verify depth, -Verify depth
? ?
意義和
s_client
的這個
option
一樣,但同時表示必須驗證
client
的證書。不記得
server
對
client
的證書驗證是可以選的嗎?
- verify
表示向
client
要求證書,但
client
還是可以選擇不發送證書,
-Verify
表示一定要
client
的證書驗證,否則握手告吹。
? ? -CApath directory
? ? -CAfile file
? ? -state
? ? -debug
? ? -nbio_test
? ? -nbio
? ? -crlf
? ? -quiet
? ? -ssl2, -ssl3, -tls1, -no_ssl2, -no_ssl3, -no_tls1
? ? -bugs
? ? -cipher cipherlist
? ?
這些
option
于
s_client
的同名
option
意義相同。
? ?
下面倆個指令模擬一個簡單的
http server.
? ? -www
? ?
當
client
連接上來的時候,發回一個網頁,內容就是
SSL
握手的一些內容。
? ? -WWW
? ?
用來把具體某個文件當網頁發回給
client
的請求。比如
client
的
URL
請求是
https://myhost/page.html ,
就把
./page.html
發回給
client.
如果沒有
set -www, -WWW
這倆個
option,
當一個
ssl client
連接上來的話它所發過來的任何東西都會顯示出來,你在終端輸入的任何東西都會發回
給
client.
你可以通過在終端輸入的行的第一個字母控制一些行為
? ? q:
? ?
中斷當前連接,但不關閉
server.
? ? Q
? ?
中斷當前連接,退出程序。
? ? r
? ?
進行
renegotiate
行為。
? ? R
? ?
進行
renegotiate
行為
,
并且要求
client
的證書
。
? ? P
? ?
在
TCP
層直接送一些明文。這會使
client
認為我們沒有按協議的游戲規則進行通信而斷開連接。
? ? S
? ?
打印出
session-cache
的狀態信息。
session-cache
在編程章節會詳細介紹。
? ? NOTES
? ?
用于調試
ssl client.
? ?
下一條指令用來模擬一個小的
http server,
監聽
443
端口。
? ? openssl s_server -accept 443 -www
? ? session
的參數可以用
sess_id
指令打印。
? ?
我對這條指令實在沒有興趣,一般使用
openssl
都是用做
server,
沒有機會調試
client.
我甚至沒有用過這個指令。