How to disable TLS 1.0

I would like to disable TLS 1. 0 and maybe even 1.1.

So i am trying to follow this HowTo:

https://ownyourbits.com/2017/03/25/nextcloud-a-security-analysis/

But i am having trouble locating this file:

etc/apache2/conf-available/http2.conf

As in the file is simply not there. Could anyone tell me where the file is located?

you need to use the conf file in that directory, which contains your nextcloud setup. The mentioned one is only a placeholder for hat.

Thanks for your reply. I understand i am looking for the wrong file. But in the directory mentioned above i only have got this files:

Charset.conf
Localized-error-pages.conf
Other-vhosts-acces-log.conf

These are not the one i am looking for right?
So could you please tell me which file i am looking for and where that file is located? Thanks in advance!

I misread the directory, messed it up with sites-available,
actually I have my ssl config in
/etc/apache2/mods-available/ssl.conf

perhaps you have that too there or you set your ssl options in sites-available/

Did you disable TLS 1.0 yet?

not yet, but I suppose it will be in the line:
old:
SSLProtocol all -SSLv2 -SSLv3

new:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1

or like that.

Yes, or just easier: SSLProtocol +TLSv1.2 +TLSv1.3.

# This TLSv1.2 only
SSLProtocol TLSv1.2
# To use TLSv1.2 and TLSv1.3 uncomment line below and comment one above. Please read note above.
#SSLProtocol +TLSv1.2 +TLSv1.3

Be aware that TLS 1.0 and 1.1 are deprecated https://www.keycdn.com/blog/deprecating-tls-1-0-and-1-1

I wrote short how-to “Apache 2.4.18 + Letsencrypt + Ubuntu 16.04/18.04 - SSL config for A+ on SSLLabs.com

Also here is how to enable HTTP2.0 in the same environment:

I have found the file, it is like you said. So i edited the file like this:

Sudo nano /etc/apache2/mods-available/ssl.conf

BUT!!

SSLProtocol +TLSv1.2 +TLSv1.3

Doesn’t work, when you try restarting the apache service it fails and when you reboot Apache shows a big red NO.

What did work was:

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 (like @dev0 said)
(SSLv2 is no longer supported so disabled by default)

The only weird thing is that www.ssllabs.com still shows TLSv1 en 1.1 as YES.

Any ideas what else i need to change?

The reason why 1.1 and 1.2 are not configureable this way is stated here:

you need to work around that a bit.

Then TLSv1 should still be disabled right? Which isn’t the case at the moment.

I am a huge linux noob, i am afraid that i break my Nectcloud. Restoring will take a couple of hours if i mess up. Could you point me in the exact right direction @dev0 ?

Did you try?

# This TLSv1.2 only
SSLProtocol TLSv1.2

Just check your Apache and OpenSSL version TLSv1.3 is now supported in Apache2 version 2.4.36 with OpenSSL 1.1.1.

This is how my ssl.conf looks like:

 <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.
	#
	SSLRandomSeed startup builtin
	SSLRandomSeed startup file:/dev/urandom 512
	SSLRandomSeed connect builtin
	SSLRandomSeed connect file:/dev/urandom 512

	##
	##  SSL Global Context
	##
	##  All SSL configuration in this context applies both to
	##  the main server and all SSL-enabled virtual hosts.
	##

	#
	#   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).
	#SSLSessionCache				 dbm:${APACHE_RUN_DIR}/ssl_scache
	SSLSessionCache				shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
	SSLSessionCacheTimeout  300

	#   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


	#   SSL Cipher Suite:
	#   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.
	#   Enable only secure ciphers:
	# SSLCipherSuite HIGH:!aNULL

	SSLCipherSUite "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-GCM-SHA384"

	# Needs for IE11/WinPhone 8.1  :ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
	# SSLCipherSUite "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384"

	# 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.
	# Default: Off
	SSLHonorCipherOrder on

	#   The protocols to enable.
	#   Available values: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2
	#   SSL v2  is no longer supported
	#SSLProtocol all -SSLv3
	SSLProtocol +TLSv1.2 +TLSv1.3


	#Allow insecure renegotiation with clients which do not yet support the
	#secure renegotiation protocol. Default: Off
	#SSLInsecureRenegotiation on

	#Whether to forbid non-SNI clients to access name based virtual hosts.
	#Default: Off
	#SSLStrictSNIVHostCheck On

	SSLUseStapling on
	SSLStaplingResponderTimeout 5
	SSLStaplingReturnResponderErrors off
	SSLStaplingCache shmcb:/var/run/ocsp(128000)
	SSLOpenSSLConfCmd Curves secp384r1
	SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

</IfModule>

When i try: SSLProtocol +TLSv1.2 +TLSv1.3

This is the error i get when i restart apache service.

Job for apache2.service failed because the control proces exited with error code.
See “systemctl status apache2.service” and “journalctl - xw” for details

When i try: SSLProtocol TLSv1.2
I am able to reset the apache service. But still according to ssllabs.com i support TLS1.0 and TLS 1.1, so not working…

please paste the output of:
cat /etc/*rel*

and

apache2 -v

@dev0,

When i add: SSLProtocol +TLSv1.2 +TLSv1.3 and after i try to reset apache service? Or just now when my NC is working ?

just now in the CLI

found it.

I have edited the cloud.DOMAIN.nl.conf in this directory:

/etc/apache2/sites-available

I have added -TLSv1 and -TLSv1.1 to the SSLProtocol all -SSLv2 -SSLv3.

Thanks everyone! Special thanks to my dear friend @Rkragt :slight_smile:

In that same conf file, if you replace this line, with the line below all the SSL ciphers will also turn green :slight_smile:

SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHEv-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:DES-CBC3-SHA:!DSS

You may need cypher strong paranoid suite like this one !

ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

1 Like

@stratege1401, could you tell me why i need that? What is the difference?

sorry, i discover i never answer that.

The cypher suite is mostly used to get rid of old, unsecure browser or systems witch may be a risk factor. Also, depending on the protocole used ( tls1.3 or other) you may want extra security

  • Modern : Modern clients that support TLS 1.3, with no need for backwards compatibility ( win7, older os/browser )
  • Intermediate : Recommended configuration for a general-purpose server
  • Old : Services accessed by very old clients or libraries, such as Internet Explorer 8 (Windows XP), Java 6, or OpenSSL 0.9.8

You may check: