web-dev-qa-db-ja.com

CentOS 6.9で「SSLProtocol:Illegal protocol 'TLSv1.1'」を解決する方法

CentOS 6.9サーバーの脆弱性スキャンに合格しようとしています。私が解決しようとしている最後の問題は、古いSSLプロトコルの使用に関連しています。 ssl.confで次の行を使用しようとすると

SSLProtocol -all +TLSv1.1

そしてconfigestを実行します

service httpd24-httpd configtest

エラーが表示されます

SSLProtocol: Illegal protocol 'TLSv1.1'

これをOpenSSLの古いバージョンに絞り込んだ。このプロセスを始めたとき、私はバージョンOpenSSL 1.0.1e-fips 11 Feb 2013そして、次の手順に従って、それをより新しいバージョンに更新しました: http://www.ehowstuff.com/how-to-install-and-update-openssl-on-centos-6- centos-7 /

バージョンを確認すると、OpenSSL 1.0.2l 25 May 2017ただし、configtestでも同じエラーが発生します。この時点で、Apacheのmod_ssl.soファイルをアップグレードする必要があると考えていますが、次のステップに途方に暮れています(この時点では少し深みがありません)。 httpd24をパッケージとしてダウンロードしたので、コンパイルする必要はなく、次にどこへ行くかわかりません。私が理解している限り、Apacheを再コンパイルせずに新しいmod_ssl.soを含めることは可能ですが、実際にはどうすればよいかわかりません。

2
Ryan Salsman

Apache2のSSLモジュール


あなたは単にSSLモジュールを有効にするのを忘れたかもしれません、あなたは最初に(ルートとしてまたはSudoで)確認する必要があります:

a2enmod ssl

次に、Apache2 Webサーバーを再起動してみてください。


今後の読者のための重要な注意事項


SSL 1.0、2.0、3.0wikipedia )これらは、OpenSSLの最近のバージョンではサポートされなくなりました。

TLS 1.0( wikipedia

このバージョンのTLSは1999年のものです。無効にすることをお勧めします。

TLS 1.1( ウィキペディア

このバージョンのTLSは2006年のものであり、現在(2019)のOS /ソフトウェアが明示的にそれに依存しているものはありません。無効にすることをお勧めします。

DigiCert artile の1.2より前のバージョンの非推奨について読むことをお勧めします。抜粋は次のとおりです。

古いプロトコルはセキュリティリスクですインターネット上のTLS 1.0および1.1の存在は、主にセキュリティリスクとして機能します。これらのプロトコルは、ほぼすべてのサーバーでサポートされています。しかし、クライアントによるそれらの使用は逆に近いです。これらのバージョンを使用する必要があるクライアントは、欠点に悩まされています。インターネットの残りの部分はダウングレード攻撃に対して脆弱であり(これにより、ユーザーはTLSのより弱いバージョンに強制され、既知の脆弱性が悪用されます)、実用的なメリットはほとんどありません。これらのサーバーのほとんどでは、古いバージョンのTLSが「念のため」に残されているか、新しいバージョンをオンにするときに誰かがオフにするのを忘れていました。

TLS 1.2( ウィキペディア

それが2008年に定義されたとしても、2019年には互換性の理由から必要になります。

TLS 1.3( ウィキペディア

これは何年にもわたってプロトコルが大幅にアップグレードされた後です。有効にできる場合は、すでに有効にしてください。


SSLモジュール構成の例


<IfModule mod_ssl.c>

## Pseudo Random Number Generator (PRNG):
## Configure one or more sources to seed the PRNG of the SSL library.
## The seed data should be of good random quality.
## WARNING! On some platforms /dev/random blocks if not enough entropy
## is available. This means you then cannot use the /dev/random device
## because it would lead to very long connection times (as long as
## it requires to make more entropy available). But usually those
## platforms additionally provide a /dev/urandom device which doesn't
## block. So, if available, use this one instead. Read the mod_ssl User
## Manual for more details.
# I changed the default values of 512 to 1024
SSLRandomSeed    startup    builtin
SSLRandomSeed    startup    file:/dev/urandom    1024
SSLRandomSeed    connect    builtin
SSLRandomSeed    connect    file:/dev/urandom    1024

## Some MIME-types for downloading Certificates and CRLs
AddType    application/x-x509-ca-cert    .crt
AddType    application/x-pkcs7-crl       .crl

## Pass Phrase Dialog:
## Configure the pass phrase gathering process.
## The filtering dialog program (`builtin' is a internal
## terminal dialog) has to provide the pass phrase on stdout.
SSLPassPhraseDialog    exec:/usr/share/Apache2/ask-for-passphrase

## Inter-Process Session Cache:
## Configure the SSL Session Cache: First the mechanism
## to use and second the expiring timeout (in seconds).
## (The mechanism dbm has known memory leaks and should not be used).
# I changed the default timeout of 300 to 600
SSLSessionCache           shmcb:${Apache_RUN_DIR}/ssl_scache(512000)
SSLSessionCacheTimeout    600

## Disabling SSLSessionTickets ensures Perfect Forward Secrecy
## is not compromised if the server is not restarted regularly
# I changed the default value as I won't restart the webserver
SSLSessionTickets    Off

## Semaphore:
## Configure the path to the mutual exclusion semaphore the
## SSL engine uses internally for inter-process synchronization.
## (Disabled by default, the global Mutex directive consolidates by default this)
#Mutex    file:${Apache_LOCK_DIR}/ssl_mutex    ssl-cache

## The protocols to enable:
## Available values: all, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
## SSLv2 and SSLv3 are no longer supported
# I prefer the latest TLSv1.3 and TLSv1.2 for compatibility reasons
# TLSv1 / TLSv1.1 are 20 / 13 years old, so decided to disable them
SSLProtocol    -all    +TLSv1.3 +TLSv1.2

# Enabling compression causes security issues in most setups (the so called CRIME attack).
SSLCompression Off

## SSL server cipher order preference:
## Use server priorities for cipher algorithm choice.
## Clients may prefer lower grade encryption. You should enable this
## option if you want to enforce stronger encryption, and can afford
## the CPU cost, and did not override SSLCipherSuite
## in a way that puts insecure ciphers first.
# I changed the default value because:
# - I can afford the extra CPU costs
# - I want to force the clients to honor my cipher preferences
SSLHonorCipherOrder    On

## SSL Cipher Suites:
## List the ciphers that the client is permitted to negotiate. See the
## ciphers(1) man page from the openssl package for list of all available options.
# I can always run `openssl ciphers` to find all currently available ciphers
# As for TLSv1.3 the TLS_AES_128_GCM_SHA256 is mandatory as per RFC 8446:
# https://tools.ietf.org/html/rfc8446#section-9
SSLCipherSuite    TLSv1.3    TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256
SSLCipherSuite    SSL        ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256


## Don't allow insecure renegotiation with clients which
## do not yet support the secure renegotiation protocol.
SSLInsecureRenegotiation    Off

## Forbid non-SNI clients to access name based virtual hosts
# I changed the default value as I want to
# reject all of the old / archaic clients
SSLStrictSNIVHostCheck    On

# Allow these elliptic curves and prefer the safe X25519 for TLSv1.3
SSLOpenSSLConfCmd    Curves    X25519:secp521r1:secp384r1:prime256v1

# Enable OSCP Stapling cache
SSLStaplingCache    shmcb:${Apache_RUN_DIR}/ssl_stapling_cache(128000)

</IfModule>

AES暗号のみを使用する理由

以下のように、最新のCPU AES命令セット によって大幅に高速化されるためです。


AES ciphers rule the world at this moment

1

ちょうど今同じ問題がありました。いくつかのサーバーの違いを比較すると、問題のあるサーバーにはmod_sslがインストールされていないことがわかりました。

yum install mod_ssl

この問題を修正しました。

0
Cheech