Hey! We’ll track down this Mopria Print Service TLS error and fix the server certificate chain and TLS cipher issues so Android can print over IPP/IPPS again.
Quick questions so I can aim the fix:
• Which Android version and phone model?
• Are you printing via Mopria Print Service to a network printer, CUPS, or a print server (PaperCut, Mobility Print, etc.)?
• What’s the exact error in Mopria: “TLS error”, “secure connection failed”, “certificate not trusted”, or “handshake failed”?
• Do you access the printer via https://printer-name:631/ipp/print or by IP? And is the certificate self-signed, from an internal CA, or a public CA?
Customer
Android 14, Samsung. Using Mopria Print Service to connect to a CUPS server over IPP with TLS. The printer shows up, but when I try to print I get a TLS error and the job fails. Printing from Windows and the browser works fine. Cert is from our internal CA.
Got it, classic case: Mopria over IPP/IPPS is much pickier than desktop browsers.
Android and Mopria rely on the system TLS trust store. If the IPP server doesn’t send the full certificate chain (server + intermediate CA), or the hostname in the cert doesn’t match what Mopria connects to, you’ll see a TLS handshake error even when Windows prints fine. A mismatch in TLS 1.2 / TLS 1.3 or cipher suites can also trigger “secure connection failed” in Mopria.
Plan:
1) Confirm the IPP over TLS endpoint from Android (browser test).
2) Fix the server cert chain so it sends the full chain in the right order.
3) Make sure the hostname and SAN match what Mopria uses (no printing to bare IP if the cert is for FQDN).
4) Check TLS version and cipher suites on the printer/CUPS, then re-add it in Mopria.
Customer
From Chrome on the phone I can open https://print.mydomain.local:631. It gives a warning about the certificate being untrusted the first time, but after I accept it, the page loads. Mopria still throws “TLS error” when I print though.
That helps. The browser telling you “untrusted” means Android doesn’t trust your internal CA yet. When you “accept” the warning in Chrome, it only remembers that for the browser, not for all apps. Mopria Print Service still sees an untrusted issuer or broken certificate chain and aborts the TLS handshake.
Let’s do two things:
• In Chrome on Android, tap the padlock → view certificate → confirm the Common Name / SAN exactly matches print.mydomain.local that Mopria uses (not just the IP).
• Export your internal root CA certificate (not the server cert) and install it on Android under Settings → Security → Encryption & credentials → Install a certificate → CA certificate. That way Mopria trusts anything signed by that CA.
After installing the CA and rebooting the phone, try printing again from Mopria. If it still fails, we’ll fix the server cert + intermediate chain on the IPP server.
Customer
I’ve already pushed our root CA to the phones with MDM, so the CA should be trusted. I still get “TLS error” in Mopria. The cert’s CN is print.mydomain.local and that’s what I’m using. Could it be the chain?
Yes, this is now very likely a server certificate chain issue rather than pure trust.
Many printers and CUPS setups only serve the leaf certificate and assume clients can “fill in” the intermediates. Android/Mopria often require the full chain (leaf + intermediates) to be sent by the IPP server; otherwise you get generic Mopria TLS errors even though PCs work fine.
On your print server (CUPS, Mobility Print, etc.):
1) Build a single .pem file with:
• First: the server certificate for print.mydomain.local.
• Then: each intermediate CA in order.
2) Point CUPS or the print service to this “fullchain” file in its TLS/SSL config.
3) Restart the print service and test with openssl s_client -connect print.mydomain.local:631 -showcerts from a PC — you should see the server cert followed by the intermediates.
Once the full chain is served, Mopria Print Service TLS handshake usually succeeds immediately on Android.
Customer
This isn’t CUPS on Linux, it’s the built-in web server on a multifunction printer. There’s just a TLS/HTTPS or IPP over SSL setting and a place to upload a certificate. No explicit “fullchain” option.
No problem, embedded printers can do this too — the UI is just different for each vendor.
On the printer’s web interface, look for Security → SSL/TLS, HTTPS, or IPP over SSL/TLS. Typical path:
1) Either generate a CSR on the printer and sign it with your internal CA, or upload a certificate + key bundle that already includes the intermediate CA chain.
2) Make sure the certificate’s CN/SAN exactly matches the name Mopria uses (for example, print.mydomain.local, not the raw IP).
3) If the UI has a separate slot for “CA certificate” or “intermediate certificate”, upload your intermediate CA there so the printer can send a complete chain with the IPP over TLS connection.
Vendors like Canon, Xerox, OKI, etc., explicitly document how to generate or install server certificates for SSL/TLS and IPP printing, and Mopria rides on top of that TLS stack.:contentReference[oaicite:0]{index=0}
Customer
I’ve uploaded a new cert with the right CN and imported the CA. Web UI works fine now without warnings, but Mopria still gives “TLS error”. Could the TLS version or ciphers be the issue?
Yes, next suspect is a TLS version / cipher suite mismatch between Android/Mopria and the printer.
Many older devices still allow TLS 1.0/1.1 or very weak ciphers; newer Android builds and Mopria expect at least TLS 1.2 with modern ECDHE + AES ciphers, and often support TLS 1.3 too. If your printer is locked to outdated ciphers, Mopria’s TLS handshake fails while some desktop clients silently downgrade or accept it.
On the printer:
1) Open the TLS/SSL settings and set the minimum version to TLS 1.2. If there is a “maximum” option, allow 1.2 and, if supported, 1.3.
2) If the UI lets you pick cipher suites, keep only the recommended modern ones (for example, ECDHE-RSA or ECDHE-ECDSA with AES-GCM). Remove old RC4/3DES options.
3) Update the printer’s firmware — vendors often add new TLS 1.2 / TLS 1.3 cipher suites and fix compatibility in recent releases.:contentReference[oaicite:1]{index=1}
After saving these settings and restarting the printer, test again from Mopria. If the cert chain and TLS version are now good, the generic Mopria Print Service TLS error should disappear.
Customer
After enabling TLS 1.2 and updating firmware, one Android device started working, another still shows “cannot establish secure connection” in Mopria.
Nice, that confirms the server side is mostly fixed and the remaining problem is client-side trust or the way the printer is added in Mopria.
On the failing Android device:
• Double-check that your internal root CA is installed under CA certificates, not just as a VPN/Wi-Fi cert.
• In Mopria, remove the printer and add it again by hostname, not IP — use exactly the FQDN in the certificate (for example, print.mydomain.local).
• If Mopria lets you specify an IPP path, set it to the right queue (such as /ipp/print or the printer-specific URI your server uses). Some setups expose both HTTP and IPPS; be sure you’re using the IPP over TLS URI.
Android apps can be stricter than browsers and require a complete certificate chain during the TLS handshake. If any device still fails, capture the connection with openssl s_client or a TLS checker and confirm the server always presents the same chain that worked for the first phone.:contentReference[oaicite:2]{index=2}
Customer
Removing and re-adding it by hostname did the trick. Mopria prints fine from both phones now. Is there any reason to use the vendor plugin instead of Mopria for TLS?
Mopria and vendor plugins (HP/Canon/Brother/Epson) all sit on top of Android’s TLS stack and system trust store, so the same certificate chain and cipher rules apply.
• Mopria Print Service is universal and very good at speaking IPP over TLS (IPPS) to standards-compliant printers and CUPS servers.
• Vendor plugins sometimes add extra features (finishing, accounting), but if your environment uses an internal CA and custom TLS, Mopria often surfaces clearer TLS error messages while you tune the server cert chain & ciphers.
Once the cert, chain, hostname and TLS versions are correct, both Mopria and vendor plugins should work — you can keep whichever UI your users like more.
Customer
Understood. Now Mopria connects without TLS errors and prints normally. Thanks for walking through the certificate and cipher stuff.
Summary: When you see a
Mopria Print Service TLS error on Android, fix it by:
• Serving a
valid server certificate whose CN/SAN matches the printer’s hostname.
• Installing the full
certificate chain (server + intermediates) on the printer or IPP server.
• Making sure Android trusts the issuing
root CA.
• Enabling modern
TLS 1.2/1.3 and supported
cipher suites on the device.
• Re-adding the printer in Mopria by hostname using the IPP over TLS URL.
If you’d like help checking your chain, TLS versions, or IPP path on a live system,
open the chat and a TLS-savvy print expert will walk through it with you.
How to verify your Mopria TLS fix is working
To confirm your Mopria TLS error is resolved, test from both a browser and Mopria. In a browser on the same Android device, open https://printer-fqdn:631 and check that the padlock is secure and the certificate chain shows the leaf plus intermediate CAs. From a PC, run openssl s_client -connect printer-fqdn:631 -showcerts and verify the same chain is delivered to every client. Finally, remove and re-add the printer in Mopria Print Service by hostname; a successful test print without “secure connection failed” means the server cert chain & cipher are now compatible with Android.
Mopria TLS error — quick troubleshooting tips
Most “Mopria Print Service TLS error” cases come down to hostname mismatch, incomplete certificate chain, or outdated TLS settings.
Quick path: use a certificate whose CN/SAN matches the printer hostname, upload the full certificate chain on the printer or IPP server, install the root CA on Android, and enable TLS 1.2/1.3 with modern cipher suites. Then re-add the printer in Mopria using the correct IPP over TLS URL. This solves the majority of Mopria TLS handshake failed issues in small offices, home labs, and corporate networks.
Disclaimer: This information is AI-generated and intended for general guidance only. For advice specific to your environment, please consult a verified expert on Whizz-Tech before making decisions.
Why does Mopria Print Service show a TLS error when I print?
Mopria connects over IPP over TLS. If the printer or IPP server presents a certificate with the wrong hostname, an incomplete certificate chain, an untrusted CA, or only legacy TLS/cipher suites, Android fails the TLS handshake and Mopria shows a generic TLS error.
How do I fix a Mopria TLS error caused by the server certificate chain?
Use a certificate whose CN/SAN matches the printer’s FQDN, upload the full server certificate chain (leaf plus intermediate CAs) to the printer or IPP server, ensure the root CA is trusted on Android, and then remove and re-add the printer in Mopria using the secure IPP URL.
Can I use a self-signed or internal CA certificate with Mopria?
Yes, but Android must trust the issuing root CA. Install your internal CA into Android’s CA store (or via MDM), configure the printer/IPP server to send the full chain, and make sure Mopria connects by the hostname listed in the certificate instead of just an IP address.
Which TLS versions and cipher suites work best with Mopria Print Service?
For reliable Android and Mopria printing, enable at least TLS 1.2 (and 1.3 if your device supports it) with modern ECDHE + AES-GCM cipher suites. Disable obsolete TLS 1.0/1.1 and weak ciphers like RC4 or 3DES, then update the printer firmware to the latest version.