差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:java:sharepointonline:implement2 [2021/07/16 06:47] – [Bouncy Castleライブラリについて] bananastudy:java:sharepointonline:implement2 [2025/02/07 05:17] (現在) banana
行 1: 行 1:
-====== 3rd Party Security Providerの導入について ======+====== 3rd Party Security Providerの導入 ====== 
 +{{keywords>3rd Party Security Providerの導入}}
 [[study:java:sharepointonline:implement1|SAML Security token 取得の実装]]で、Bouncy Castleライブラリがpom.xmlにありました。\\ [[study:java:sharepointonline:implement1|SAML Security token 取得の実装]]で、Bouncy Castleライブラリがpom.xmlにありました。\\
 Bouncy Castleライブラリを導入した理由について、本稿で説明します。\\ Bouncy Castleライブラリを導入した理由について、本稿で説明します。\\
行 24: 行 25:
  
 一方、Java 7が提供するTLS Versionは、TLS1.0, TLS1.1, TLS1.2です。((defaultが1.0なので、CLIENT HELLO送信時TLS1.2を指定する必要があります。))\\ 一方、Java 7が提供するTLS Versionは、TLS1.0, TLS1.1, TLS1.2です。((defaultが1.0なので、CLIENT HELLO送信時TLS1.2を指定する必要があります。))\\
-Cipher Suiteについては、下に示します。+Cipher Suiteについては、下に示します。
 ^Cipher Suites^length^ ^Cipher Suites^length^
 ^TLS_EMPTY_RENEGOTIATION_INFO_SCSV^ ^ ^TLS_EMPTY_RENEGOTIATION_INFO_SCSV^ ^
行 51: 行 52:
 これが、Bouncy Castleライブラリを導入した理由になります。\\ これが、Bouncy Castleライブラリを導入した理由になります。\\
  
-===== Bouncy Castleライブラリについて =====+{{keywords>Java add Bouncy Castle Provider, Sharepoint online}} 
 + 
 +====== Bouncy Castleライブラリについて ======
 Bouncy CastleはJCE(Java Cryptography Enxtension)及びJSSE(Java Security Socket Extension)のProviderです。\\ 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」部分を参照してください。\\ Bouncy CastleがサポートするCipher Suiteについては、ReferenceのBC-FJA-(D)TLSUserGuide-1.0.9.pdfの「Appendix B – Supported Cipher Suites」部分を参照してください。\\
行 61: 行 64:
 ^TLS_DHE_RSA_WITH_AES_128_GCM_SHA256^N^ ^TLS_DHE_RSA_WITH_AES_128_GCM_SHA256^N^
  
-Bouncy Castle以外にもConscryptというProviderは上記一部分のCipher Suite((TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256))を提供しますが、利用可能なPlatformに制((Nativeライブラリを利用可能なPlatformは現在次の通りです。Linux x86_64 (64-bit), Mac x86_64 (64-bit), Windows x86 (32-bit), Windows x86_64 (64-bit)。例えば、Linux s390x distributionでは、利用不可なので注意が必要です。))があります。+Bouncy Castle以外にもConscryptというProviderは上記一部分のCipher Suite((TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256))を提供しますが、利用可能なPlatformに制((Nativeライブラリを利用可能なPlatformは現在次の通りです。Linux x86_64 (64-bit), Mac x86_64 (64-bit), Windows x86 (32-bit), Windows x86_64 (64-bit)。例えば、Linux s390x distributionでは、利用不可なので注意が必要です。))があります。
  
-===== Mainコード =====+====== Mainコード ======
 Bouncy Castleを適用するコードを以下に示します。 Bouncy Castleを適用するコードを以下に示します。
 <code java> <code java>
行 79: 行 82:
      * Insert BouncyCastle's FIPS-compliant encryption and SSL providers.      * Insert BouncyCastle's FIPS-compliant encryption and SSL providers.
      */      */
-    BouncyCastleFipsProvider _bcFipsProvider = new BouncyCastleFipsProvider(BOUNCY_CASTLE_RNG_HYBRID_MODE);+    BouncyCastleFipsProvider _bcFipsProvider = new BouncyCastleFipsProvider(BOUNCY_CASTLE_RNG_HYBRID_MODE);  ★Point1
  
     //setup default SecureRandom     //setup default SecureRandom
行 92: 行 95:
      */      */
     Security.removeProvider(JCE_PROVIDER_BOUNCY_CASTLE_FIPS);     Security.removeProvider(JCE_PROVIDER_BOUNCY_CASTLE_FIPS);
-    Security.insertProviderAt(_bcFipsProvider, 1);+    Security.insertProviderAt(_bcFipsProvider, 1);  ★Point2
   }//setUpProvider   }//setUpProvider
  
行 102: 行 105:
         .setSecurityStrength(256)         .setSecurityStrength(256)
         .setEntropyBitsRequired(256);         .setEntropyBitsRequired(256);
-    CryptoServicesRegistrar.setSecureRandom(_drgbBldr.build(NONCE, true));+    CryptoServicesRegistrar.setSecureRandom(_drgbBldr.build(NONCE, true));  ★Point3
   }//setDefaultDrbg   }//setDefaultDrbg
  
 </code> </code>
 +
 +★Point1\\
 +FIPSモードでProviderを生成します。
 +
 +★Point2\\
 +Providerを最優先にするために、位置を指定します。インストール済みの場合は、追加されません。
 +
 +★Point3\\
 +デフォルトのSecureRandomアルゴリズムを登録します。\\
 +登録しない場合、SSLContextのインスタンスを生成する際、ものすごい時間が掛かる場合があります。
 +
  
  
-===== Reference =====+====== Reference ======
   * [[https://developer.mozilla.org/ja/docs/Glossary/Cipher_suite|Cipher suite (暗号スイート)]]   * [[https://developer.mozilla.org/ja/docs/Glossary/Cipher_suite|Cipher suite (暗号スイート)]]
   * [[https://downloads.bouncycastle.org/fips-java/BC-FJA-(D)TLSUserGuide-1.0.9.pdf|BC-FJA-(D)TLSUserGuide-1.0.9]]   * [[https://downloads.bouncycastle.org/fips-java/BC-FJA-(D)TLSUserGuide-1.0.9.pdf|BC-FJA-(D)TLSUserGuide-1.0.9]]

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