Zettlr © Hendrik Erz 2017–2025

Developed with between Sweden and Germany

Zettlr Switches Code Sign Certificate: Important Information for Windows Users

Zettlr Switches Code Sign Certificate: Important Information for Windows Users

In the coming weeks, there will be three updates for Zettlr that Windows users must pay special attention to. The reason is that we must exchange the existing code signing certificate. Please carefully read this announcement.

Zettlr Switches Code Sign Certificate: Important Information for Windows Users

Zettlr Switches Code Sign Certificate: Important Information for Windows Users

We are reaching out today to inform you about a change that is about to happen over the next few weeks and that will affect users of Zettlr on Windows. With this post, we inform you comprehensively about what is happening, why it is happening, what we are doing, and how we aim to ensure that any inconveniences remain as small as possible. If any questions remain, we warmly invite you to join our new Community Forum, or our Discord Server. We (and I believe this extends to our community) are happy to answer any and all of your questions.

The Occasion: Expiring Code Signing Certificate

First, a few words on what is even happening. On March 15, 2025, the existing code signing certificate for Zettlr on Windows will expire. Code Signing, as we have outlined in an earlier post, is required to create software for Windows. Code signing ensures that Windows knows who produced an app, and that this person or organization is trustworthy. Without code signing, Windows users could not install Zettlr. However, code signing certificates also expire, and this means that every once in a while a code signing certificate needs to be renewed.

Please also see our post on the Community Forum that explains what is happening in more detail.

Unfortunately, exchanging the code signing certificate is not as easy as fixing bugs. Specifically, Windows does not initially trust a code signing certificate, meaning that even if an app is properly signed, Windows will warn users that the app might still be dangerous. This is problematic for users who do not possess administrative access to their computer. This affects primarily users who use Zettlr on their work computer (e.g., university or company issued). Those users can only install Zettlr if the code signing certificate is fully trusted.

The downside of this is that, if we switch to a new code signing certificate in the beginning of March, many users will not be able to update the app. This means that they may miss out on features or, in the worst case, cannot update in case of a security incident. Instead, those users rely on users with administrative access on their computers to install the app many times until Windows begins to trust the new certificate.

This brings us into a somewhat awkward situation of having a time window in which some users may be locked out of updates, making them more vulnerable. By planning ahead and devising a roadmap, we aim to minimize the impact that this will have on you, and make the time window in which some users are at risk as short as possible.

The Roadmap/What We Have Planned

In order to do so, we plan three special updates. First, we are going to publish an update towards the end of February (i.e.: in a few days; after the release of this blog post). This update won’t include many bug fixes or new features, and rather focus on updating Zettlr’s framework. By updating the most critical components of the app to their newest version at the time of writing, we want to reduce the potential attack surface for malicious actors. This way, even though updating may not be possible, it is unlikely that users are at a heightened risk.

The second update is then necessary so that we can immediately begin – with the help of our community – to gain “trust” with Microsoft so that Windows begins to accept the new code signing certificate. This update will be essentially a technical clone of the first update, with the exception that it uses the new code signing certificate. We hope that the time frame until that happens is short (maybe a week), but the worst case could be months. The last time this happened three years ago, it took about four weeks.

Finally, we will release a third update simply to inform all users that updating as regular is possible again.

Between each update, we will keep at least one week of buffer because Zettlr will only inform you of the most recent update. This means that any user who misses the first update may be unable to install the second one, and figuring this out is more difficult than simply installing the first one directly via the built-in update-mechanism.

Our Communication During this Period

To ensure that everyone remains safe and informed during this period, we will use Zettlr’s existing social media channels – primarily Bluesky and Mastodon – to inform you of any new developments. This includes announcements of the three updates in question; what we know about the status of the Zettlr installer being trusted by Windows; and, most importantly, whether there are potential security implications that you should know.

In addition, we will inform everyone in the corresponding changelogs that accompany each update (and that you all hopefully carefully read every time ;) about which of the three updates it is, whether we expect users with work-issued computers to be able to install it at all, and what else to know.

We recommend during this time that you closely monitor either our Mastodon or Bluesky account, or join or Forum or Discord Server to get notified if there is anything security-critical happening which requires action. We don’t believe this to be likely, but we would like to err on the side of caution.

What You Need to Do

If you use Zettlr exclusively on macOS or Linux, you don’t have to pay attention to anything in particular. Just continue updating the app regularly, and please encourage anyone you know who uses Windows to install update number 2.

If you use Zettlr on Windows regardless of whether you have administrative access, we highly recommend you to immediately install the first update as soon as it goes live. You may be unable to install the second one, so it is important to install the first one. We will, in the changelog to the second update, link to the first one for this case, but it will be a tad more tedious for you.

If you use Zettlr on Windows with administrative access, we encourage you to quickly install the second update once it releases. This may give you a warning, which we would like to encourage you to dismiss, because this will help Windows identify our app as non-malicious. To ensure that you get the correct application, you can download it directly from our GitHub releases, and also verify its checksum to make sure it is the correct app. If you have any concerns, please ask on our Community Forum or Discord. We are happy to help.

If you use Zettlr on Windows without administrative access, please attempt to install the second update from time to time. This will not work initially, and Windows will give you a warning which you cannot dismiss. However, it may at any point randomly start working. Only Microsoft knows when this may be. If it works, please let us know immediately so that we can proceed to publish update number three to inform everyone that this period of uncertainty is over.

Even if you use Zettlr only on Linux or macOS, please spread the word about this to your friends, colleagues, and family, and encourage others who have a Windows computer to install the second update – even if they do not use Zettlr themselves; just installing and then uninstalling the app helps.

Final Thoughts

We are aware that none of this is very “professional” and we would like to apologize in advance for the incoming inconvenience. However, since Zettlr is not an incorporated business, we are unable to do it any other way, because Microsoft will not provide us with “immediate trust.”

We hope that you will walk with us through this short period and help us remain your trusted, one-stop publication workbench. We do have reason to believe that this may be the last one of these acrobatic performances, because there is indication that Microsoft is making the process less painful in the future. In optimistic expectations, we have opted to switch to Microsoft’s own code signing certificate service, Azure Trusted Signing.

Thank you for your trust, and as always: stay sharp!

Hendrik
for the Zettlr Steering Committee


P.S.: We would like to give a shoutout to the Obsidian team, who have chimed in after our initial forum post and shared their experiences, which has made the whole transition and planning more efficient.