RIGHT:[[Sun 関係覚え書き]]

Sun Fire T2000 など,CPU に Sun 
[[UltraSPARC T1 プロセッサ:http://jp.sun.com/products/processors/UltraSPARC-T1/]]
をつんだマシンでは,
その CPU による SSL アクセラレータの機能を利用できる.

*Cryptgraphic Framework [#c6c5008c]
今インストールされているライブラリの確認
 #  cryptoadm list -p

ハードが対応していれば,
 Kernel hardware providers:
 ncp/0: all mechanisms are enabled.
という行が出ている(とおもう)

1024bit 以上の暗号キーが必要な場合は,
SUNWcry パッケージをインストールして,
pkcs11_softtoken_extra.so を有効にする必要がある.(ここは必要ないかな)
 # cryptoadm uninstall provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
 # cryptoadm install provider=/usr/lib/security/\$ISA/pkcs11_softtoken_extra.so
 # cryptoadm disable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so \
    mechanism=CKM_SSL3_PRE_MASTER_KEY_GEN, \
    CKM_SSL3_MASTER_KEY_DERIVE, \
    CKM_SSL3_KEY_AND_MAC_DERIVE, \
    CKM_SSL3_MASTER_KEY_DERIVE_DH, \
    CKM_SSL3_MD5_MAC,CKM_SSL3_SHA1_MAC


確認
 # kstat -n ncp0 -s rsaprivate

Cryptographic Framework については,
Sun Bingadmin
 http://www.sun.com/bigadmin/motd/042006.html
から crypto framework で検索して出てくる文書
「The Solaris Cryptographic Framework」(pdf)を参照.

//=====================================================
*アプリケーションからの利用 [#zef02618]
アプリケーションから利用するには,
/usr/sfw/lib/libcrypto.so や /usr/sfw/lib/libssl.so を
リンクに使う.

**Apache なら [#dc9d9ec6]
Apache なら以下のようにコンパイルを行う.
 # CFLAGS='-DSSL_EXPERIMENTAL -DSSL_ENGINE' \
   ./configure -enable-ssl --enable-rule=SSL_EXPERIMENTAL \
   --with-ssl=/usr/sfw

で,
Apache のssl.conf 内で
 SSLCryptoDevice pkcs11
という行を加えておく.

あと,SSLCipherSuite の設定を次のようにするべし.
 SSLCipherSuite ALL:!ADH:!EXPORT56:-AES256-SHA:-DHE-RSA-AES256-SHA:
 -DHE-DSS-AES256-SHA:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
 (実際は 1行)
さもないと,
Netscape 系のブラウザから SSL 3.0 での通信がうまくいかない.

----
*SSLv3(TLSv1)で反応が遅い [#v322c53e]
Sun Fire T2000 の SSL ハードウェアアクセラレーションを
使っていて,Diffie-Hellman 共有鍵を使った通信を行おうとすると
まれにうまくハンドシェイクができないことがあるようだ.

http://bugs.opensolaris.org/view_bug.do?bug_id=6554248

http://bugs.opensolaris.org/view_bug.do?bug_id=6540060

**現象 [#s6ca822d]
一日に数回 HTTPS での反応が遅くなる.

Apache のログには,反応が遅い時間帯には
何の記録も出ておらず,
むしろ,パケットが届いていないのではないかと
思われるぐらい.

**パケットをダンプしてみる [#f83a0c51]
パケットをダンプしてみると
  TLSv1 Alert (Level: Fatal, Description: Bad Record MAC)
というアラートが出たときにハンドシェイクがうまくいかずに
時間がかかっているのでないかと思われる.

**ベンチマークをしてみる [#e63262ae]
次のコマンドで試してみる.(From Debian)
------------------------------------------------------------------
 $ /usr/sbin/ab -c 100 -t 5 https://www.example.jp/
 This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
 Copyright 2006 The Apache Software Foundation, http://www.apache.org/
 
 Benchmarking www.example.jp (be patient)
 SSL handshake failed (1).
 4037:error:140943FC:SSL routines:SSL3_READ_BYTES:sslv3 alert bad record mac:s3_pkt.c:1057:SSL alert number 20
 SSL handshake failed (1).
 4037:error:140943FC:SSL routines:SSL3_READ_BYTES:sslv3 alert bad record mac:s3_pkt.c:1057:SSL alert number 20
 Finished 82 requests
 
 Server Software:        Apache/2.0.59
 Server Hostname:        www.example.jp
 Server Port:            443
 SSL/TLS Protocol:       TLSv1/SSLv3,EDH-RSA-DES-CBC3-SHA,1024,168
 
 Document Path:          /
 Document Length:        1058 bytes
 
 Concurrency Level:      100
 Time taken for tests:   5.273505 seconds
 Complete requests:      82
 Failed requests:        2
    (Connect: 0, Length: 2, Exceptions: 0)
 Write errors:           0
 Total transferred:      109760 bytes
 equests per second:    15.55 [#/sec] (mean)
 Time per request:       6431.104 [ms] (mean)
 Time per request:       64.311 [ms] (mean, across all concurrent requests)
 Transfer rate:          20.29 [Kbytes/sec] received
 
 Connection Times (ms)
	       min  mean[+/-sd] median   max
 Connect:        0 2362 1174.0   2304    4099
 Processing:    20  266 496.4     96    3674
 Waiting:        0  141 145.7     90     568
 Total:        770 2628 1189.0   2325    4127
 
 Percentage of the requests served within a certain time (ms)
   50%   2325
   66%   3051
   75%   4075
   80%   4076
   90%   4089
   95%   4096
   98%   4098
   99%   4127
  100%   4127 (longest request)
------------------------------------------------------------------
Cipher Suite を選択してやってみる.
 $ openssl ciphers -tls1 -v 'RSA:!EXP:!NULL':
 
 AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1
 AES128-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA1
 DES-CBC3-SHA            SSLv3 Kx=RSA      Au=RSA  Enc=3DES(168) Mac=SHA1
 DES-CBC-SHA             SSLv3 Kx=RSA      Au=RSA  Enc=DES(56)   Mac=SHA1
 RC4-SHA                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=SHA1
 RC4-MD5                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=MD5
 
 I suggest AES128-SHA.

 $ /usr/sbin/ab -Z AES128-SHA -c 100 -t 5 https://www.example.jp/
 This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
 Copyright 2006 The Apache Software Foundation, http://www.apache.org/
 
 Benchmarking www.example.jp (be patient)
 Finished 535 requests
 
 Server Software:        Apache/2.0.59
 Server Hostname:        www.example.jp
 Server Port:            443
 SSL/TLS Protocol:       TLSv1/SSLv3,AES128-SHA,1024,128
 
 Document Path:          /
 Document Length:        1058 bytes
 
 Concurrency Level:      100
 Time taken for tests:   5.137 seconds
 Complete requests:      535
 Failed requests:        0
 Write errors:           0
 Total transferred:      734020 bytes
 HTML transferred:       566030 bytes
 Requests per second:    107.00 [#/sec] (mean)
 Time per request:       934.605 [ms] (mean)
 Time per request:       9.346 [ms] (mean, across all concurrent requests)
 Transfer rate:          143.20 [Kbytes/sec] received
 
 Connection Times (ms)
	       min  mean[+/-sd] median   max
 Connect:      353  828 167.1    817    1503
 Processing:    17   27  21.2     22     171
 Waiting:       16   25  20.9     20     170
 Total:        374  855 168.2    840    1522
 
 Percentage of the requests served within a certain time (ms)
   50%    840
   66%    863
   75%    891
   80%    902
   90%    977
   95%   1256
   98%   1429
   99%   1466
  100%   1522 (longest request)

**ワークアラウンド [#i6de2870]
ワークアラウンドとしては,
RSA ベースの暗号のみ使えとか,
[[KSSL>Sun/Solaris10/KSSL]] を使えなど(これは効果があるのか分からないが...)

http://blogs.sun.com/enigma/entry/sun_fire_t2000_and_secure#comment-1144

Patch 137111-05 以降を適用すればで直るようなので
それを適用するのが一番確実.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS