since not all servers support the ciphers supported by Firefox 42,
add other configurations to make sure we can find a way to connect
to server, if anything could
also includes much more elaborate and realistic TLSv1.3 Client Hello
(the Xmas tree)
Since it is impossible to make openssl command line tool send
TLSv1.3 Client Hello message, add a python based tool to perform
TLS version intolerance scan
In case the user has a set of certificates *and* intermediaries,
it is necessary to prime both the `ca_trusted` directory and the
`ca_files` directories with respectively all root CA's and
all CA's (root or intermediate)
since the certificates are separate from results file, they can get
missing (or an incorrect set can be used)
provide a clear message about what file is missing
since ECDSA certificates during the transition are likely to be
signed using RSA keys, we need to check the cipher rather than the
signature in the certificate to tell if the cert is ECDSA and as such
can have small key sizes
since no support for compression and support for renegotiation are
necessary for the server to have a secure configuration, collect
and report those two too
tls_tolerance is an array, so we need to use array syntax...
since if the server is tls version intolerant we will be printing
a lot of info, space it out from the certificate-related summary
ephemeral sigalgs are also printing a lot of information, so space
them from the TLS Tolerance test results
fixes two issues
1). -help message is used from the openssl set with the -o option
2). doesn't use GOST config unconditionally - verifies that it works
first
based partially off of Greg Owen <gowen@swynwyr.com> work in #67fixes#86
a 2047 bit RSA certificate is just as secure as 2048 bit one (and
known good algorithms can very infrequently provide them when asked for
2048) so accept them too
DSA keys are bad in every case, so always red color them
ECDSA keys are OK above 256 bits
since the signature and hash algorithm in TLSv1.2 is selectable by server
and negotiated using TLS extensions, we can check what sig algs is
the server willing to perform and whatever it does honour client
selection
it also tests what happens if the client doesn't offer any sigalgs that
are necessary to use the ciphers selected by server