文書の過去の版を表示しています。


3rd Party Security Providerの導入について

SAML Security token 取得の実装で、Bouncy Castleライブラリがpom.xmlにありました。
Bouncy Castleライブラリを導入した理由について、本稿で説明します。

POC of consuming Sharepoint onlineでも触れましたが、Sharepoint Onlineサイトはhttpsプロトコルを使用します。
つまり、クライアントとサーバー間でSSL handshakeが発生します。
SSL handshakeでは、TLSバージョン及び、Cipher Suite(暗号スイート)1)の交換が行われます。
Sharepoint OnlineサイトのTLSバージョンと、Cipher Suiteはssl lab testで確認できます。
テスト結果で、protocolsとCipher Suites部分を以下に示します。

ProtocolsSupport
TLS 1.3No
TLS 1.2Yes
TLS 1.1No
TLS 1.0No
SSL 3No
SSL 2No
Cipher Suiteslength
TLS 1.2(suites in server-preferred order)
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384(0xc030) ECDH secp384r1 (eq.7680 bits RSA) FS256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256(0xc02f) ECDH x25519 (eq.3072 bits RSA) FS128
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384(0x9f) DH 2048 bits FS256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256(0x9e) DH 2048 bits FS128

一方、Java 7が提供するTLS Versionは、TLS1.0, TLS1.1, TLS1.2です。2)
Cipher Suiteについては、下記に示します。

Cipher Suiteslength
TLS_EMPTY_RENEGOTIATION_INFO_SCSV
SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256128
SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA256128
SSL_RSA_WITH_AES_128_CBC_SHA256128
SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA256128
SSL_ECDH_RSA_WITH_AES_128_CBC_SHA256128
SSL_DHE_RSA_WITH_AES_128_CBC_SHA256128
SSL_DHE_DSS_WITH_AES_128_CBC_SHA256128
SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA128
SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA128
SSL_RSA_WITH_AES_128_CBC_SHA128
SSL_ECDH_ECDSA_WITH_AES_128_CBC_SHA128
SSL_ECDH_RSA_WITH_AES_128_CBC_SHA128
SSL_DHE_RSA_WITH_AES_128_CBC_SHA128
SSL_DHE_DSS_WITH_AES_128_CBC_SHA128
SSL_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
SSL_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
SSL_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA

見て、気づいたかも知れませんが、Shatepoint onlineサイト要求のCipher Suiteと一致するのが見当たりません。
これが、Bouncy Castleライブラリを導入した理由になります。

Bouncy Castleライブラリについて

Bouncy CastleはJCE(Java Cryptography Enxtension)及びJSSE(Java Security Socket Extension)のProviderです。
Bouncy CastleがサポートするCipher Suiteについては、ReferenceのBC-FJA-(D)TLSUserGuide-1.0.9.pdfの「Appendix B – Supported Cipher Suites」部分を参照してください。
その中で、Sharepoint online要求のCipher Suiteと一致するのは、以下の通りです。

Cipher Suite NameFIPS mode?
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384N
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256Y
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384N
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256Y

Reference

1)
暗号スイートは鍵交換アルゴリズム・鍵認証方式・サイファー・メッセージ認証符号の組み合わせです。ECDHE_RSA_WITH_AES_128_GCM_SHA256の場合、ECDHEは鍵交換アルゴリズム、RSAは鍵認証方式、AES-128はサイファー、GCMは暗号利用モード、SHA-256はメッセージ認証符号を表しています。
2)
defaultが1.0なので、CLIENT HELLO送信時TLS1.2を指定する必要があります。

コメント

コメントを入力. Wiki文法が有効です:
B L U Z​ M
 

QR Code
QR Code study:java:sharepointonline:implement2 (generated for current page)