Overview OpenSSL 3.5 integrates a number of algorithms resistant to attack by future quantum computers, commonly referred as Post-Quantum Cryptography (PQC). These include: Possibility of storing the vast amounts of TLS encrypted traffic now and decrypting it later once the quantum computers become capable enough is considered a real problem, so the governments and standards […]
The latest from the MySQL community
Ideas, releases, practical guides, and perspectives from the people building with MySQL.
The internet has changed to a place where most protocols like HTTP etc now use secure connections with TLS by default.
While both HTTP and the MySQL Protocol use TLS for secure connections there are still many differences which make it difficult for MySQL to benefit from the same advancements as HTTP has seen in the last so many years.
What is TLS?
TLS stands for Transport Layer Security and is the successor of SSL (Socket Layer Security). SSL and TLS are often used interchangably, while this isn’t correct strictly speaking. What TLS provides is a standardized way to encrypt in transit traffic and authenticate the other end of the connection. TLS when used together with HTTP is known as HTTPS, for secure HTTP.
How TLS works in HTTPS
The client (webbrowser) connects to a server on port 443. Then negitiation is done to agree on what encryption method is to be used. The server presents the client with a …
[Read more]
Oracle recently announced a new authentication plugin:
caching_sha2_password. This was added in 8.0.4, the second release candidate for MySQL
8.0. The new plugin is also made the default (can be configured
by changing default_authentication_plugin.
Why? Phasing out SHA1
As Oracle said in the blog post to annouce this change they want to move to a more secure hashing algorithm (SHA256). Which I think is a good reason to do this.
Adding salt
Adding a …
[Read more]
In conversations about SSL/TLS people often say that they either
don't need TLS because they trust their network or they say it is
too slow to be used in production.
With TLS the client and server has to do additional work, so some
overhead is expected. But the price of this overhead also gives
you something in return: more secure communication and more
authentication options (client certificates).
SSL and TLS have existed for quite a long time. First they were
only used for online banking and during authentication on web
sites. But slowly many websites went to full-on SSL/TLS. And with
the introduction of Let's encrypt many small websites are now using
SSL/TLS. And many non-HTTP protocols either add encryption or
move to a HTTP based protocol.
So TLS performance is very important for day-to-day usage. Many
people and companies have put a lot of effort …
MySQL 5.7 makes secure connections easier with streamlined key generation for both MySQL Community and MySQL Enterprise, improves security by expanding support for TLSv1.1 and TLSv1.2, and helps administrators assess whether clients are connecting securely or not with new visibility into connection types. …
Transport Layer Security (TLS, also often referred to as SSL) is an important component of a secure MySQL deployment, but the complexities of properly generating the necessary key material and configuring the server dissuaded many users from completing this task. MySQL Server 5.7 simplifies this task for both Enterprise and Community users. …
Transport Layer Security (TLS, also often referred to as SSL) is an important component of a secure MySQL deployment, but the complexities of properly generating the necessary key material and configuring the server dissuaded many users from completing this task. MySQL Server 5.7 simplifies this task for both Enterprise and Community users. Previous blog posts have detailed the changes supporting Enterprise builds; this blog post will focus on parallel improvements made to MySQL Community builds.
Introducing …
[Read more]With Python you would normally use MySQL Connector/Python or the older MySQLdb to connect from Python to MySQL, but there are more options.
There are also multiple Python implementations: CPython (the main implementation), PyPy, Jython and IronPython. PyPy tries to be faster than CPython by using a Just-in-Time compiler. Jython runs on the JVM and IronPython runs on the .NET CLR.
Connector/Python by default (Without the C Extension) is a pure Python implementation and can work with most if not all implementations. And for MySQLdb there is a drop-in replacement called PyMySQL, which is a pure python implementation.
So there are many options …
[Read more]
I've ran a simple test to see the performance impact of TLS on
MySQL connections with MySQL Connector/Python
The test results are in this Jupyter notebook.
TL;DR:
- Try to reuse connections if you use TLS
- Establishing TLS connections is expensive (server & client)
- Improved performance might be possible in the future by using TLS Tickets
Not tested:
- Difference between YaSSL and OpenSSL
- Difference between Ciphersuites
- Performance of larger resultsets and queries
MySQL Connector/Java 5.1.38 was released earlier this week, and it includes a notable improvement related to secure connections. Here’s how the change log describes it:
When connecting to a MySQL server 5.7 instance that supports TLS, Connector/J now prefers a TLS over a plain TCP connection.
This mirrors changes made in 5.7 to the behavior of MySQL command-line clients and libmysql client library. Coupled with the streamlined/automatic generation of TLS key material to ensure TLS availability in MySQL Server 5.7 deployments, this is an important step towards providing secure communication in default deployments.
…
[Read more]