Skip to content

Using mTLS

This is not plugin-specific documentation, but describes how Obsidian works with mTLS at the time of writing. The TL;DR: is poorly, but not badly enough that reinventing the wheel is worth it.

Mobile support: None

This is due to intentional configuration by the Obsidian team. A feature request has been open since 2021: https://forum.obsidian.md/t/allow-user-supplied-root-certificates-weaken-security/26764

If you'd like to see this feature, like it I guess? I don't know how they prioritise features, nor if the feature is even still on the table.

There may also be ways around it by using non-standard fetch versions, though a quick search I did only found Node-based clients, which Obsidian's docs state won't work on Android.

Desktop support: jank as fuck

The desktop app has no support for mTLS directly, but it does seem to respect system stores even if the certs aren't added through obsidian. Well, specifically, it supports the Chrome system store, which I assume all electron apps are going to do by default.

Linux

If ~/.pki/nssdb doesn't exist, you need to create it first using:

certutil -d ~/.pki/nssdb -N --empty-password

If you have Chrome or Chromium installed, this folder has likely been generated for you already.

pk12util -i cert.p12 -d sql:$HOME/.pki/nssdb -W <password>

On Debian and derivatives, these come from libnss3-tools.

Windows

Double-click the .p12 and follow the instructions. There's also certutil.exe, but there's a GUI option, so it's easier than trying to wrangle a windows shell. It's installed in a system store, so it'll work pretty much anywhere.