Security tools report the default SSL Ciphers are too weak
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
このページの内容はサポート対象外のプラットフォームに関連しています。したがって、アトラシアン サポートではこのページの記載内容のサポートの提供は保証されません。この資料は情報提供のみを目的として提供されています。内容はお客様自身の責任でご利用ください。
問題
Security and penetration tests of an Atlassian product server (or other applications using Apache Tomcat) may report that some weak SSL ciphers are enabled. Here's an example:
The weak SSL ciphers enabled
EXP-RC4-MD5,
EDH-RSA-DES-CBC-SHA
EXP-EDH-RSA-DESCBC-SHA
DES-CBC-SHA
EXP-DES-CBC-SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
The standalone version of Tomcat has SSL Ciphers enabled that may not comply with high-security standards. Pre-existing Tomcat containers (for use with the WAR distribution) may also have these weak ciphers enabled.
ソリューション 1
The best way to solve this issue is to configure Java to use a Diffie-Hellman 2048 bit-group as documented at Logjam (CVE-2015-4000) and Atlassian Products. This workaround is available for Java version 8 and above so long as your Atlassian applications are compatible with it.
Please note Java versions before 8 cannot use a Diffie-Hellman key size above 1024bits so make sure to upgrade all application linked products to use Java 8 before increasing the Diffie-Hellman key size above 1024bits.
ソリューション 2
Specifically set the following ciphers by adding the following code block in the SSL Connector section to:
$CONFLUENCE_INSTALL/conf/server.xml
file in the case of Confluence.$CROWD_INSTALL/
apache-tomcat/conf/server.xml
file in the case of Crowd.$JIRA_INSTALL/conf/server.xml
file in the case of JIRA.$BITBUCKETSERVER_HOME/shared/server.xml
in the case of Bitbucket Server 4.x.
useCipherSuitesOrder="true"
useServerCipherSuitesOrder="true"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA"
For Bitbucket Server 5.0+, the ciphers can be controlled by adding server.ssl.ciphers
in $BITBUCKET_HOME/shared/bitbucket.properties
with the ciphers from above.
Note: these ciphers come from the Mozilla SSL Configuration Generator at the intermediate level converted to their respective IANA names and with DES-CBC3-SHA removed (Java doesn't support it at the current time). With the above ciphers setting old clients such as Windows XP and Java 6 will not be able to connect.
ソリューション 3
Some security tools will report the use of well-known Diffie-Hellman groups as an issue even after the previous two resolutions have been actioned.
To address this, a custom Diffie-Hellman group can be generated. Below is an example command for generating a 2048-bit group with OpenSSL:
openssl dhparam -noout -text 2048
When run, this command will output two parameters, a prime and a generator:
PKCS#3 DH Parameters: (2048 bit)
prime:
00:cf:38:b2:2e:f2:eb:e9:48:7d:b1:64:ca:1f:2d:
23:8d:9d:b8:95:0e:f4:b8:ac:5b:27:8f:a0:60:a0:
4e:fc:3b:63:d4:1e:74:33:2f:fe:d5:f1:12:a7:25:
86:83:01:cb:dd:f2:a4:4d:6e:3a:cc:da:ea:73:19:
99:e8:1e:31:f7:8b:23:2a:ef:7d:b8:ad:49:75:89:
44:a6:58:25:7f:6d:fa:63:3c:4d:67:30:b3:ab:a6:
8f:13:6b:68:18:7d:0f:97:0c:25:da:db:86:f5:89:
75:ff:39:53:af:30:55:15:dd:67:68:c4:ad:5f:10:
f3:a4:ae:e6:55:1e:bd:f8:f5:4b:e4:e5:7f:fb:b3:
39:c2:ed:6f:35:d8:f4:92:d5:88:81:c8:4b:f9:8b:
84:ae:42:c8:d2:10:ac:04:01:d8:90:5e:19:3a:fa:
16:ed:30:99:b0:cc:bc:02:e8:ca:ca:01:f1:ca:7f:
96:b8:de:79:55:bb:94:a7:dc:7a:f6:8b:34:4f:7d:
9d:c4:bf:4a:12:e0:c9:a9:72:aa:62:87:62:ad:ef:
28:56:46:d0:73:9b:95:20:82:92:bc:04:ab:a7:4a:
d6:dd:4e:0d:a0:af:05:e6:3b:21:50:ca:28:cb:5e:
fa:f2:d6:98:9e:23:29:81:03:c7:47:c5:a5:c2:b4:
2d:d3
generator: 2 (0x2)
To use the newly generated Diffie-Hellman parameters with Tomcat, edit the java.security
file at:
$JAVA_HOME/jre/conf/security/java.security
(Java 11 and higher)$JAVA_HOME/jre/lib/security/java.security
(Java 8 and lower)
and set the Java security property jdk.tls.server.defaultDHEParameters
with both the prime and generator values. For the example parameters above, that would be:
jdk.tls.server.defaultDHEParameters={ \
00cf38b22ef2ebe9487db164ca1f2d \
238d9db8950ef4b8ac5b278fa060a0 \
4efc3b63d41e74332ffed5f112a725 \
868301cbddf2a44d6e3accdaea7319 \
99e81e31f78b232aef7db8ad497589 \
44a658257f6dfa633c4d6730b3aba6 \
8f136b68187d0f970c25dadb86f589 \
75ff3953af305515dd6768c4ad5f10 \
f3a4aee6551ebdf8f54be4e57ffbb3 \
39c2ed6f35d8f492d58881c84bf98b \
84ae42c8d210ac0401d8905e193afa \
16ed3099b0ccbc02e8caca01f1ca7f \
96b8de7955bb94a7dc7af68b344f7d \
9dc4bf4a12e0c9a972aa628762adef \
285646d0739b95208292bc04aba74a \
d6dd4e0da0af05e63b2150ca28cb5e \
faf2d6989e23298103c747c5a5c2b4 \
2dd3 \
, 2}
Do not copy the example Diffie-Hellman parameters shown above. Ensure that you have generated your own from scratch, and use those to set jdk.tls.server.defaultDHEParameters
.
Finally, restart your application to apply the change. (Note that this will only affect TLS 1.2 and below, as the TLS 1.3 standard does not permit the use of custom Diffie-Hellman groups.)
アプリケーション | アプリケーションで SSL を使用する方法 |
---|---|
Jira アプリケーション | SSL または HTTPS 上で Jira アプリケーションを実行する |
Confluence | SSL または HTTPS 上で Confluence を実行する |
Bamboo | |
Bitbucket Server (旧称 Stash) | Bitbucket Server を SSL で保護する (Tomcat で終了) |
FishEye / Crucible | Fisheye の SSL 構成 (Tomcat で終了) |