それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

HTTP(S)サイトをTelnetでページ表示。SSLでも大丈夫/openssl s_client

telnetでブラウズできますよね。HTTPサイトもtelnet でブラウズしましょう

おさらい。telnetでページ取得

telnet でHTTPをしゃべってみる

telnet www.yahoo.co.jp 80

telnetを起動してサーバーに接続する

takuya@debian00:~$ telnet www.yahoo.co.jp 80
Trying 124.83.235.204...
Connected to www.g.yahoo.co.jp.
Escape character is '^]'.

トップページを取得する

GET / HTTP/1.0

エンターを2回押す

サーバーから結果が帰ってくる

HTTP/1.1 200 OK
Date: Fri, 17 Aug 2012 08:57:53 GMT
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Expires: -1
Pragma: no-cache
Cache-Control: private, no-cache, no-store, must-revalidate
X-XRDS-Location: http://open.login.yahoo.co.jp/openid20/www.yahoo.co.jp/xrds
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=utf-8

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="content-script-type" content="text/javascript">
<meta name="description" content="日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、など80以上のサービスを展開。あなたの生活をより豊かにする「ライフ・エンジン」を目指していきます。">
<title>Yahoo! JAPAN</title>

HTTPSのサイトにもつなぎに行きましょう。

telnet では ssl 通信には対応できないので opensslコマンドを使います。

接続開始

openssl s_client -connect mixi.jp:443

するとsslについて出てくる。

cC5jcmwwDQYJKoZIhvcNAQEFBQADgYEAOYXRrYYA7JHhtUpshFWSLUB9aL53IvQx
9C6gvmrCuyXfTPSon3skitTo5xnJiWjsgYVnpdoTObJoV3X6SbU92AbcvudCpryt
U8tlYutSOWZwTaGiSwdZtasD3dFN6golEq94+h40a64KkULMnRNn6q0SYVSU70BG
v1XSzP9vtVQ=
-----END CERTIFICATE-----
subject=/C=JP/ST=Tokyo/L=Shibuya-ku/O=mixi,Inc./OU=develop01/CN=mixi.jp
issuer=/C=JP/O=Cybertrust Japan Co., Ltd./CN=Cybertrust Japan Public CA G1
---
No client certificate CA names sent
---
SSL handshake has read 2042 bytes and written 520 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
Secure Renegotiation IS NOT supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: 0056C2DBEB93BC4FBC632C5B61552D5E1FCDD74DEEF930AE4EB6E94F9943C394
    Session-ID-ctx: 
    Master-Key: CA4CDD797C14A79977CD3DA0A4A3737B32EDA504C2152414F1A9A40A8F8C553EA380A44A0C01BB4D5AFE6FEC62F2EDD6
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Compression: 1 (zlib compression)
    Start Time: 1345194274
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---
■#&#8656;入力待ち

次のHTTP語を入力してリクエストを送る

GET / HTTP/1.1
Host: mixi.jp
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,ja;q=0.6
Accept-Charset: UTF-8,*;q=0.5

レスポンス出てくる

HTTP/1.1 200 OK
Date: Fri, 17 Aug 2012 09:07:33 GMT
Server: Apache
X-Dealer: 182061
Cache-Control: no-cache
Pragma: no-cache
Expires: Sat, 26 Jul 1997 05:00:00 GMT
X-XRDS-Location: https://mixi.jp/xrds.pl
X-UA-Compatible: IE=EmulateIE7
Content-Type: text/html; charset=EUC-JP
Set-Cookie: _lcp=c4a2f2265be9439c78865c7e55836991; domain=.mixi.jp; path=/; expires=Fri, 17-Aug-2012 09:17:33 GMT
X-Content-Type-Options: nosniff
Connection: close
Transfer-Encoding: chunked

9a0
   
<html class="osMacOSX browserChrome browserChrome21 serviceLogoutQuirks pageHomeJpMixi domainJpMixi">
<head>

このようにopensslでSSL通信をターミナルでも出来る

openssl s_client -connect サーバーアドレス:443


これで出来る。便利ですね。

これさえあれば、POPS(APOP?port995)とかSMTP over SSL(port 465)などのSSL通信も可能になります。