TLS1.2で暗号化スイートを利用して安全性を強化する方法について、紹介させていただきます。
1.暗号化スイートとは
SSL/TLS にてデータを暗号化して通信を行うには、自分自身と通信相手の両方が利用可能なアルゴリズムを使う必要があります。
不特定の相手と両者が利用可能なアルゴリズムを確認しあうために使われるのが 暗号スイート(cipher suite) となります。
2.Tomcatで暗号化スイートの設定について
2.1との暗号化スイートを使います?
JAVAで指定できる暗号化スイートは以下のサイトを参照してください
https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html
例えば、AES-GCMを利用する場合、
上記サイトから関連する暗号スイートをリストアップしました
AES-GCM |
---|
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 |
TLS_DH_RSA_WITH_AES_128_GCM_SHA256 |
TLS_DH_RSA_WITH_AES_256_GCM_SHA384 |
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 |
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 |
TLS_DH_DSS_WITH_AES_128_GCM_SHA256 |
TLS_DH_DSS_WITH_AES_256_GCM_SHA384 |
TLS_DH_anon_WITH_AES_128_GCM_SHA256 |
TLS_DH_anon_WITH_AES_256_GCM_SHA384 |
TLS_PSK_WITH_AES_128_GCM_SHA256 |
TLS_PSK_WITH_AES_256_GCM_SHA384 |
TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 |
TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 |
TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 |
TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 |
TLS_AES_128_GCM_SHA256 |
TLS_AES_256_GCM_SHA384 |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA |
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA2 |
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA3 |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA25 |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA38 |
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 |
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 |
2.2暗号化スイート(AES-GCM)をTomcatのコンフィグに指定
server.xml
<Connector port="8888" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.3,TLSv1.2"
ciphers="TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256"
/>