ããã¯ããªã«ãããããŠæžãããã®ïŒ
Apacheãnginxã®èšå®ãèŠãŠããŠãCipher Suiteã«æå®ããŠããæååã®æå³ããããŸãããã£ãŠãªããªãšæãã
ãã®æ©äŒã«ãå°ãèŠãŠãããããªããšã
ç°å¢
ä»åã®ç°å¢ã¯ããã¡ãã
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focal $ uname -srvmpio Linux 5.4.0-81-generic #91-Ubuntu SMP Thu Jul 15 19:09:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
OpenSSLã®ããŒãžã§ã³ã¯ããã¡ãã
$ openssl version OpenSSL 1.1.1f 31 Mar 2020
ApacheãHTTPSåïŒSSLïŒTLSåïŒããŠã¿ã
詊ãã«ãApacheãã€ã³ã¹ããŒã«ããŠHTTPSåããŠã¿ãŸãããã
$ sudo apt install apache2 $ sudo a2enmod ssl $ sudo a2ensite default-ssl
ããã©ã«ãã®SSLã®èšå®ã¯ãã¡ãã
$ grep -v '.*#' /etc/apache2/mods-enabled/ssl.conf <IfModule mod_ssl.c> SSLRandomSeed startup builtin SSLRandomSeed startup file:/dev/urandom 512 SSLRandomSeed connect builtin SSLRandomSeed connect file:/dev/urandom 512 AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase SSLSessionCache shmcb:${APACHE_RUN_DIR}/ssl_scache(512000) SSLSessionCacheTimeout 300 SSLCipherSuite HIGH:!aNULL SSLProtocol all -SSLv3 </IfModule>
ããã§ãSSLCipherSuite
ãšæžãããŠããéšåã§ããã
SSLCipherSuite HIGH:!aNULL
Apache Module mod_ssl / SSLCipherSuite Directive
ã¡ãªã¿ã«ãnginxã ãšããã©ã«ãå€ã¯ãã¡ãã®ããã§ãã
Default: ssl_ciphers HIGH:!aNULL:!MD5;
Module ngx_http_ssl_module / ssl_ciphers
ä»åã¯ããã®ãããã®æå³ãç¥ããããªããšãã話ã§ãã
ãããã®å€ã¯ãå®éã«ã©ã®ãããªæå·ã¢ã«ãŽãªãºã ãå«ãŸããããopenssl
ã³ãã³ãã§ç¢ºèªããããšãã§ããŸãã
ãããªæãã§ããã
$ openssl ciphers -v 'HIGH:!aNULL' TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ãçç¥ã $ openssl ciphers -v 'HIGH:!aNULL:!MD5' TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ãçç¥ã
ããããã128åã®æå·ã¢ã«ãŽãªãºã ãå«ãŸããŠããŸãã
$ openssl ciphers -v 'HIGH:!aNULL' | wc -l 128 $ openssl ciphers -v 'HIGH:!aNULL:!MD5' | wc -l 128
ã€ãŸããOpenSSLåãã®èšå®ããã®ãŸãŸæžããŠããããšã«ãªããŸãã
ãã®æå®ã®æå³ãããã¡ãã£ãšèŠãŠã¿ããããšããã®ãä»åã®ããŒãã§ãã
OpenSSLã§ãµããŒããããŠããæå·ã¹ã€ãŒããèŠã
OpenSSLã§ãµããŒããããŠããæå·ã¹ã€ãŒãã¯ãopenssl ciphers -v
ã§èŠãããšãã§ããŸãã
$ openssl ciphers -v
/docs/man1.1.1/man3/SSL_CIPHER_description.html
ãªã®ã§ããããã®åŸãã«ããŒã¯ãŒããä»äžããããšãã§ããããã§ãªã¹ãããæå·ã¹ã€ãŒããæå®ã§ããããã§ãã
ããšãã°DEFAULT
ã
$ openssl ciphers -v 'DEFAULT' TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEA ãçç¥ã
ããã¯ãæåéãããã©ã«ãã®æå·ã¹ã€ãŒãã§ãã³ã³ãã€ã«æã«æ±ºå®ããããã®ã®ããã§ãã
$ openssl ciphers -v 'DEFAULT' | wc -l 60
ALL:!COMPLEMENTOFDEFAULT:!eNULL
ãšåããªã®ã ãšãã
The content of the default list is determined at compile time and normally corresponds to ALL:!COMPLEMENTOFDEFAULT:!eNULL.
ãããã£ãŠèŠãŠãããšãHIGH:!aNULL:!MD5
ãALL:!COMPLEMENTOFDEFAULT:!eNULL
ã¯ã©ãããæå³ãªã®ãïŒãšãã
æããããŠããŸããã
ããã¯ãæå·ãªã¹ããšåŒã¶åœ¢åŒã§ãæå·ãªã¹ãã¯ã²ãšã€ä»¥äžã®æå·æååããæ§æãããŸãã
The cipher list consists of one or more cipher strings separated by colons. Commas or spaces are also acceptable separators but colons are normally used.
æå·æååã®åºåãæåã¯éåžžã³ãã³ïŒ:
ïŒã§ãããã«ã³ããŸãã¯ã¹ããŒã¹ãæå®å¯èœã¿ããã§ãã
æå·æååã¯ãããã€ãã®åœ¢åŒããããæå·æååã®éåãæãæå·ã¹ã€ãŒããæå®ããããšãã§ããŸãã
DEFAULT
ãALL
ã¯ãæå·ã¹ã€ãŒãã§ãã
æå·ã¹ã€ãŒãã®ãªã¹ãã«ã¯ã修食åã䜿çšã§ããŸãã
+
⊠æå·ãªã¹ãã®æ«å°Ÿã«æå·ã¹ã€ãŒãã远å ãããæå·ãªã¹ãã«ãã§ã«å«ãŸããŠããæå·ã¹ã€ãŒããããå Žåã¯ãç¡èŠããã- ããã©ã«ãã®åäœã§ããã修食åããªã«ãæå®ãããŠããªãå Žåã¯ãã®åäœãšãªã
-
⊠æå®ãããæå·ã¹ã€ãŒããæå·ãªã¹ãããé€å»ããããã ããããšããå远å ãå¯èœ!
⊠æå®ãããæå·ã¹ã€ãŒããæå·ãªã¹ãããåé€ããå远å ãäžå¯ãšãã+
⊠æå®ãããæå·ã¹ã€ãŒããæå·ãªã¹ãã®æ«å°Ÿã«ç§»åãã
åæã
- Lists of cipher suites can be combined in a single cipher string using the + character. This is used as a logical and operation. For example SHA1+DES represents all cipher suites containing the SHA1 and the DES algorithms.
- If ! is used then the ciphers are permanently deleted from the list. The ciphers deleted can never reappear in the list even if they are explicitly stated.
- If - is used then the ciphers are deleted from the list, but some or all of the ciphers can be added again by later options.
- If + is used then the ciphers are moved to the end of the list. This option doesn't add any new ciphers it just moves matching existing ones.
@STRENGTH
ã¯ãæå·åŒ·åºŠã®éé ã§æå·ã¹ã€ãŒããäžŠã³æ¿ããŸãã
æå·æååã«ã€ããŠã¯ããã¡ãããã®äžã«æå·ã¹ã€ãŒããå«ãŸããŸãã
ããšãã°ãALL
ãHIGH
ã
$ openssl ciphers -v 'ALL' | wc -l 144 $ openssl ciphers -v 'HIGH' | wc -l 140
ãã€ãã䞊ã¹ãŠã¿ãŸãããã
ALL
âŠeNULL
ãé€ãããã¹ãŠã®æå·ã¹ã€ãŒãCOMPLEMENTOFDEFAULT
âŠALL
ã«å«ãŸããŠããæå·ã®ãã¡ãããã©ã«ãã§ã¯æå¹ã«ãªã£ãŠããªããã®COMPLEMENTOFALL
âŠALL
ã§æå¹ã«ãªã£ãŠããªãæå·ã¹ã€ãŒããçŸåšã¯eNULL
ãšåçHIGH
⊠é«åºŠãªæå·ã¹ã€ãŒããéµã®é·ãã128ããã以äžã®ãã®ãå«ãŸããMEDIUM
⊠äžçšåºŠã®æå·ã¹ã€ãŒãã128ãããã®æå·åã䜿ããã®ãå«ãŸããLOW
⊠äœçŽãªæå·ã¹ã€ãŒãã64ããããŸãã¯56ãããã®æå·åã¢ã«ãŽãªãºã ã䜿çšããŠããããèŒžåºæå·ã¹ã€ãŒããé€ããå®å šã§ã¯ãªãTLSv1.2
ãTLSv1.0
ãSSLv3
⊠TLSv1.2ãTLSv1.0ãSSLv3.0ã§ãããããµããŒããããŠããæå·ã¹ã€ãŒãMD5
⊠MD5ã䜿çšããæå·ã¹ã€ãŒããå®å šã§ã¯ãªãSHA1
ãSHA
⊠SHA-1ã䜿çšããæå·ã¹ã€ãŒãSHA256
ãSHA3ââ84
⊠SHA-256ãSHA-384ã䜿çšããæå·ã¹ã€ãŒãAES128
ãAES256
ãAES
⊠128ãããAESã256ãããAESã128ããããŸãã¯256ãããAESã䜿çšããæå·ã¹ã€ãŒã3DES
⊠3DESã䜿çšããæå·ã¹ã€ãŒãRC4
⊠RC4ã䜿çšããæå·ã¹ã€ãŒãaNULL
⊠èªèšŒãæäŸããªãæå·ã¹ã€ãŒããçŸåšã¯ãå¿åDHã¢ã«ãŽãªãºã ãšå¿åECDHã¢ã«ãŽãªãºã ãæããå®å šã§ã¯ãªãããŸããDEFAULT
ã«ã¯å«ãŸããªããALL
ã«ã¯å«ãŸããeNULL
ãNULL
⊠æå·åãè¡ããªãæå·ã¹ã€ãŒããå®å šã§ã¯ãªããDEFAULT
ã§ãALL
ã§ãæå¹ã«ãããªã
å šéšã¯ãšãŠãèŒããããªãã®ã§ãä»ã¯ããã¥ã¡ã³ãåç §âŠã
ãããŸã§èªãã§ã¿ããšã
ããšãã°æå ã®OpenSSLã§äœ¿ãããã¹ãŠã®æå·ã¹ã€ãŒãã衚瀺ããã«ã¯ã以äžãæå®ããã°ããããšã«ãªããŸãã
$ openssl ciphers -v 'ALL:COMPLEMENTOFALL'
nginxã®ssl_ciphers
ã®ããã©ã«ãã¯ãHIGH
ãªæå·ã¹ã€ãŒãããaNULL
ãMD5
ã«é¢ããæå·ã¹ã€ãŒããé€ãããã®ã
ãšèªãããšãã§ããŸããã
Default: ssl_ciphers HIGH:!aNULL:!MD5;
ãããªæãã§ããããšã¯ãããä»ã®ããŒãžã§ã³ã ãšHIGH
ã®äžã«MD5ã«é¢ãããã®ã¯å«ãŸããŠããªãããã§ããã
$ openssl ciphers -v 'HIGH' | wc -l 140 $ openssl ciphers -v 'HIGH:!aNULL' | wc -l 128 $ openssl ciphers -v 'HIGH:!aNULL:!MD5' | wc -l 128
ãã®ä»ã®ãµã³ãã«ã¯ããã¡ããåç §ã
ãšããã§ãopenssl ciphers -v
ã§æå®ãããã®ã«TLSv1.3ã®ãã®ãæå®ãããšãšã©ãŒã«ãªããã§ããã©ããªãã§ãªãã§ããããïŒ
ãããªæãã§ãªã¹ãããŠ
$ openssl ciphers -v -s -tls1_3 TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD $ openssl ciphers -v -s -tls1_2 ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384 ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256 ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256 DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256 ECDHE-ECDSA-AES256-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1 ECDHE-RSA-AES256-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1 DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1 ECDHE-ECDSA-AES128-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1 ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1 DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1 AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256 AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256 AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1 AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
ãããªã£ãŠããŸããŸãã
$ openssl ciphers -v 'TLS_AES_128_GCM_SHA256' Error in cipher list 139825285784896:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match:../ssl/ssl_lib.c:2564: $ openssl ciphers -v 'AES128-GCM-SHA256' TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD
TLS 1.2ïŒ1.3ã§ã®IPAæšå¥šã®æå·ã¹ã€ãŒããApacheãnginxã«èšå®ãã
ãšããã§ãå®éã®æå®ã¯ã©ãããããããã§ããããã
ããã¯ãIPAã®TLSæå·èšå®ã¬ã€ãã©ã€ã³ãèŠãã®ãè¯ãã®ã§ãããã
TLS暗号設定ガイドライン~安全なウェブサイトのために(暗号設定対策編)~:IPA 独立行政法人 情報処理推進機構
https://www.ipa.go.jp/security/ipg/documents/ipa-cryptrec-gl-3001-3.0.1.pdf
æå·ã¹ã€ãŒãã®èšå®ãšããããã®ãã®ãºããªãªãã®ããããŸãã
https://www.ipa.go.jp/security/ipg/documents/tls_cipher_suite_config_20200707.pdf
ã¬ã€ãã©ã€ã³ã«ã¯ã次ã®3ã€ã®åºæºããããŸãã
- é«ã»ãã¥ãªãã£å
- æšå¥šã»ãã¥ãªãã£å
- ã»ãã¥ãªãã£äŸå€å
ä»åã¯ãé«ã»ãã¥ãªãã£åãšæšå¥šã»ãã¥ãªãã£åã察象ã«ããããšæããŸãã
TLS 1.3ã«é¢ããèšå®äŸã
æšå¥šã»ãã¥ãªãã£åãã»ãã¥ãªãã£äŸå€åã®èšå®äŸ TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 é«ã»ãã¥ãªãã£åã®èšå®äŸ TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_128_CCM_8_SHA256
TLS 1.2以åã§ã®èšå®äŸïŒãã¿ãŒã³åïŒã
ãã¿ãŒã³åã«ããæšå¥šã»ãã¥ãªãã£åã®èšå®äŸ ECDHE+AESGCM:DHE+aRSA+AESGCM:ECDHE+AESCCM:DHE+aRSA+AESCCM:+AES256:ECDHE+CHACHA20:DHE+aRSA+CHACHA20:+DHE:ECDHE+AES128:ECDHE+CAMELLIA128:ECDHE+AES:ECDHE+CAMELLIA:+ECDHE+SHA:DHE+aRSA+AES128:DHE+aRSA+CAMELLIA128:DHE+aRSA+AES:DHE+aRSA+CAMELLIA:+DHE+aRSA+SHA ãã¿ãŒã³åã«ããé«ã»ãã¥ãªãã£åã®èšå®äŸ ECDHE+AESGCM:DHE+aRSA+AESGCM:ECDHE+AESCCM:DHE+aRSA+AESCCM:ECDHE+CHACHA20:DHE+aRSA+CHACHA20:+AES128:+DHE
TLS 1.2以åã§ã®èšå®äŸïŒæå·ã¹ã€ãŒãåïŒã
æå·ã¹ã€ãŒãåã«ããæšå¥šã»ãã¥ãªãã£åã®èšå®äŸ ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-CCM:ECDHE-ECDSA-AES128-CCM8:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-CCM:DHE-RSA-AES128-CCM8:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-CCM:DHE-RSA-AES256-CCM8:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-CAMELLIA128-SHA256:ECDHE-RSA-CAMELLIA128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-CAMELLIA256-SHA384:ECDHE-RSA-CAMELLIA256-SHA384:ECDHEECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-CAMELLIA256-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA æå·ã¹ã€ãŒãåã«ããé«ã»ãã¥ãªãã£åã®èšå®äŸ ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-CCM:ECDHE-ECDSA-AES128-CCM8:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-CCM:DHE-RSA-AES256-CCM8:DHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-CCM:DHE-RSA-AES128-CCM8
èšå®æ¹æ³ãŸã§æžããŠãããŸãã
ãã¡ãã䜿ã£ãŠãApacheãnginxããããã«æšå¥šã»ãã¥ãªãã£åãé«ã»ãã¥ãªãã£åã®æšå¥šæå·ã¹ã€ãŒããèšå®ããŠã¿ãŸãããã
TLSv1.2ãŸã§ã¯ããã¿ãŒã³åã§æå®ããæ¹æ³ãåããŸãã
Apacheã®å ŽåãTLSv1.3åãã®æå·ã¹ã€ãŒããæå®ããæã¯SSLCipherSuite
ã§ã®èšå®æã«TLSv1.3
ãšããæå®ãå¿
èŠã§ãã
以äžã¯æšå¥šã»ãã¥ãªãã£åã®èšå®äŸã®å Žåã
SSLProtocol -all +TLSv1.2 +TLSv1.3 SSLCipherSuite "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-CCM:ECDHE-ECDSA-AES128-CCM8:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-CCM:DHE-RSA-AES128-CCM8:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-CCM:DHE-RSA-AES256-CCM8:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-CAMELLIA128-SHA256:ECDHE-RSA-CAMELLIA128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-CAMELLIA256-SHA384:ECDHE-RSA-CAMELLIA256-SHA384:ECDHEECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-CAMELLIA256-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA" SSLCipherSuite TLSv1.3 "TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256"
以äžã¯é«ã»ãã¥ãªãã£åã®å Žåã
SSLProtocol -all +TLSv1.2 +TLSv1.3 SSLCipherSuite "ECDHE+AESGCM:DHE+aRSA+AESGCM:ECDHE+AESCCM:DHE+aRSA+AESCCM:ECDHE+CHACHA20:DHE+aRSA+CHACHA20:+AES128:+DHE" SSLCipherSuite TLSv1.3 "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_128_CCM_8_SHA256"
SSLCipherSuite
ã§TLSv1.3
ãšæå®ããŠããã®ã¯ããã®ãã£ã¬ã¯ãã£ãã§ã®protocol
ã«ãããéšåã§ããã
Syntax: SSLCipherSuite [protocol] cipher-spec
TLSv1.3ã«ã€ããŠã¯ã以äžã«ææããããŸãã
If the SSL library supports TLSv1.3 (OpenSSL 1.1.1 and later), the protocol specifier "TLSv1.3" can be used to configure the cipher suites for that protocol. Since TLSv1.3 does not offer renegotiations, specifying ciphers for it in a directory context is not allowed.
Apache Module mod_ssl / SSLCipherSuite Directive
nginxãèšå®ããŠã¿ãŸãããã
ã€ã³ã¹ããŒã«ã
$ sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null $ gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg $ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list $ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ | sudo tee /etc/apt/preferences.d/99nginx $ sudo apt update $ sudo apt install nginx
ããŒãžã§ã³ã
$ nginx -v nginx version: nginx/1.20.1
SSLïŒTLSèšŒææžã®äœæã
$ sudo openssl genrsa -aes-128-cbc -out /etc/nginx/server.key 2048 $ sudo openssl rsa -in /etc/nginx/server.key -out /etc/nginx/server.key $ sudo openssl req -new -key /etc/nginx/server.key -out /etc/nginx/server.csr $ sudo openssl x509 -req -days 365 -in /etc/nginx/server.csr -signkey /etc/nginx/server.key -out /etc/nginx/server.crt
èšå®ã
/etc/nginx/conf.d/ssl.conf
server { listen 443 ssl; server_name www.example.com; ssl_certificate server.crt; ssl_certificate_key server.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE+AESGCM:DHE+aRSA+AESGCM:ECDHE+AESCCM:DHE+aRSA+AESCCM:+AES256:ECDHE+CHACHA20:DHE+aRSA+CHACHA20:+DHE:ECDHE+AES128:ECDHE+CAMELLIA128:ECDHE+AES:ECDHE+CAMELLIA:+ECDHE+SHA:DHE+aRSA+AES128:DHE+aRSA+CAMELLIA128:DHE+aRSA+AES:DHE+aRSA+CAMELLIA:+DHE+aRSA+SHA; ssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256; location / { root /usr/share/nginx/html; index index.html index.htm; } }
以äžã¯æšå¥šã»ãã¥ãªãã£åã®èšå®äŸã®å Žåã
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE+AESGCM:DHE+aRSA+AESGCM:ECDHE+AESCCM:DHE+aRSA+AESCCM:+AES256:ECDHE+CHACHA20:DHE+aRSA+CHACHA20:+DHE:ECDHE+AES128:ECDHE+CAMELLIA128:ECDHE+AES:ECDHE+CAMELLIA:+ECDHE+SHA:DHE+aRSA+AES128:DHE+aRSA+CAMELLIA128:DHE+aRSA+AES:DHE+aRSA+CAMELLIA:+DHE+aRSA+SHA; ssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;
nginxã§ã®æå·ã¹ã€ãŒãã®æå®ã¯ssl_ciphers
ã§è¡ãã®ã§ãããTLSv1.3ã®å Žåã¯ssl_ciphers
ã§æå®ã§ãããšã©ãŒã«ãªããŸãã
ãããåé¿ããã«ã¯ssl_conf_command Ciphersuites
ã§ä»£æ¿ããããã§ãã
#1529 (Could not configure TLS1.3 ciphers in OpenSSL 1.1.1 pre4) – nginx
IPAã®è³æã§ããnginxã®å Žåã¯TLSv1.2ã®æå®æ¹æ³ã ããæžãããŠããŸããããã
以äžã¯é«ã»ãã¥ãªãã£åã®å Žåã
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-CCM:ECDHE-ECDSA-AES128-CCM8:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-CCM:DHE-RSA-AES256-CCM8:DHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-CCM:DHE-RSA-AES128-CCM8; ssl_conf_command Ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_128_CCM_8_SHA256;
ãŸãšã
OpenSSLã§ã®æå·ã¹ã€ãŒãã®æå®ã«ã€ããŠãã¡ãã£ãšèª¿ã¹ãŠã¿ãŸããã
ã¡ãããšäœ¿ããæ°ã¯ãšãŠãããŸãããããã®ãããã®æ å ±ãè¶³ãããã«ããŠèŠãŠãããããã«ããŠãããŸããããâŠã