openssl簡介-指令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.我甚至沒有用過這個指令。
posted on 2009-11-27 17:44
零全零美 閱讀(1350)
評論(0) 編輯 收藏 所屬分類:
安全相關