Regression for GMail after libssl upgrade with TLSv1.3
Bug Description
[Impact]
* Users of libc-client2007e (e.g., php7.x-imap) can no longer
connect to GMail on Bionic and later, after introduction of
TLSv1.3 with OpenSSL 1.1.1 (normal upgrade path in Bionic).
* GMail requires Server Name Indication (SNI) to be set when
TLSv1.3 is used, otherwise the server provided certificate
fails verification in the client and connection is aborted.
* The fix is to set SNI to the hostname that the client will
perform verification on. The change is only enabled if the
client is built with OpenSSL 1.1.1 or later (i.e., TLSv1.3
support) so not to affect pre- TLSv1.3 support's behavior.
* However it is functional nonetheless if the client is built
with OpenSSL 1.1.1 or later but an earlier TLS version ends
up used due to the handshake/
(e.g., TLSv1.2); this shouldn't be a problem per test below.
* Regression testing happened with a crawled list of IMAP/POP
SSL servers (167 servers), and no regressions were observed.
Actually, one more email provider/server has been fixed too.
* OpenSSL-only demonstration with -(no)servername:
$ echo QUIT \
| openssl s_client \
-connect imap.gmail.com:993 \
-tls1_3 -brief 2>&1 \
| grep -i ^verif
Output with '-noservername':
verify error:num=18:self signed certificate
verify error:num=
Verification error: Hostname mismatch
Output with '-servername imap.gmail.com'
Verification: OK
Verified peername: imap.gmail.com
[Test Case]
* Commands:
$ sudo apt install uw-mailutils
$ mailutil check "{imap.
$ sudo apt install php7.2-cli php7.2-imap
$ php -r 'imap_open(
* Before:
$ mailutil check "{imap.
Certificate failure for imap.googlemail
Certificate failure for imap.googlemail
$ php -r 'imap_open(
PHP Warning: imap_open(): Couldn't open stream {imap.gmail.
PHP Notice: Unknown: Certificate failure for imap.gmail.com: self signed certificate: /OU=No SNI provided; please fix your client.
* After:
$ mailutil check "{imap.
{ce-
^C
$ php -r 'imap_open(
PHP Warning: imap_open(): Couldn't open stream {imap.gmail.
PHP Notice: Unknown: Retrying PLAIN authentication after [ALERT] Invalid credentials (Failure) (errflg=1) in Unknown on line 0
PHP Notice: Unknown: Retrying PLAIN authentication after [ALERT] Invalid credentials (Failure) (errflg=1) in Unknown on line 0
PHP Notice: Unknown: Can not authenticate to IMAP server: [ALERT] Invalid credentials (Failure) (errflg=2) in Unknown on line 0
* Regression testing scripts/results are provided in attachments/
[Regression Potential]
* Theoretically possible, but not observed in hundred+ of (167)
IMAP/POP SSL servers.
* The change sends additional data (SNI) from client to server
when connecting, if built with OpenSSL 1.1.1 or later, which
is in the specification, so should be handled by the server.
* The risk is servers that misbehave when provided such info
(not observed in the 167 server test).
* Less likely are servers that do not recognize the server name
identified (this also not observed in test and unlikely since
the client usually reaches the server by public/known address).
* Even less likely are servers whose provided certificate doesn't
contain the server name identified (again not observed and it's
in the server, not client, to provide a certificate for address
it doesn't recognize).
* This both shows the SRU team that the risks have been considered,
and provides guidance to testers in regression-testing the SRU.
[Other Info]
* Reverse build dependencies have been patched for No Change Rebuilds
and (re)built correctly on all architectures in Launchpad PPA for
all affected releases (eoan, disco, bionic).
[Original Description]
After upgrading from PHP5 to PHP7.2 (from Bionic), calling imap_open() against Google's Gmail servers stopped working.
After researching, I've found that new OpenSSL version introduced TLSv13-related breaking changes.
Here are the relevant issues:
PHP: https:/
PHP (Debian): https:/
In fetchmail (solved): https:/
OpenSSL upstream devs have issues related to this:
https:/
https:/
Looks like to me that either adding the SNI server name to the openssl open call would be needed, as done on fetchmail.
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Changed in php-imap (Ubuntu): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
Changed in uw-imap (Ubuntu): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
description: | updated |
description: | updated |
tags: | added: sts sts-sponsor sts-sponsor-ddstreet |
Changed in uw-imap (Debian): | |
status: | Unknown → Fix Released |
Changed in asterisk (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in asterisk (Ubuntu Disco): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
status: | New → In Progress |
Changed in asterisk (Ubuntu Bionic): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
Changed in mailsync (Ubuntu Bionic): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
status: | New → In Progress |
Changed in mailsync (Ubuntu Disco): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
status: | New → In Progress |
Changed in prayer (Ubuntu Bionic): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
status: | New → In Progress |
Changed in prayer (Ubuntu Disco): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
status: | New → In Progress |
Changed in asterisk (Ubuntu Eoan): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
Changed in prayer (Ubuntu Eoan): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
Changed in mailsync (Ubuntu Eoan): | |
assignee: | nobody → Mauricio Faria de Oliveira (mfo) |
tags: | added: bionic-openssl-1.1 |
Status changed to 'Confirmed' because the bug affects multiple users.