Thought I would share some of the adventures in getting certbot to work on windows.
Quick Summary - I am planning to use this article for Phase 1 of the project and use posts to talk about certain topics
Current Status
Tested OSs: Windows 8, Windows 10, Server 2008, Server 2012R2
certonly manual and stand alone working
renewals - this needs a bit more work however certbot is parsing the renewal files
apache and nginx plugins - don’t work due to augeas plugin being a debian only plugin
certificates are issue with no issues and the paths are the same as linux /etc/
Key point to cover in this article:
Post 1: Why bother?
Post 2: Pre-Reqs and Environment
Post 3: Installing certbot
Post 4: geteuid() issue and fix
Post 5: e.message() issue and fix (Python 3.6 only)
Post 6: Screenshots of success
Post 7: Windows Server 2012R2 - additional step
Post 8: Run As Administrator to Avoid Symlinks Issues
Post 9: Log.py update for Certbot 0.13.0
Having followed the community for some time one of the things I have noticed is the windows clients while being great are not as advanced as their linux counterparts.
Certbot is a fantastic client and having it running on windows seems like a good idea.
Some of the pros:
A) Same syntax and the ability of the community to assist with issues
B) Large effort has gone in to the certbot product and it is one of the more actively developed clients
C) Python is a good language that has good OS independence
D) The layout and plugin structure of certbot allows for further development in the future (windows specific plugins)
E) The coding of certbot is really good (i know there are lots of challenges in the forums but from a coding point of view it’s a solid piece of work)
To official support Windows, we’d need some auditing/testing of the code done to find the UNIX specific code that causes issues like geteuid. We’d then need PR(s) fixing things in a way that works correctly on both Windows and UNIX. Ideally, we’d also want some sort of automated testing set up so we know things work reasonably well and to prevent regressions.
If we had Windows support, we’d also like to see support for IIS added, but this could come at a later time.
I’m the developer of Certify the GUI for Let’s Encrypt certs with IIS on windows (https://github.com/webprofusion/certify). I’d like to help out on this so I can optionally use certbot behind the scenes. If there is a current fork of certbot containing window specific experiments let me know, if not I’m happy to start one,
Ideally I think we’d like to see code making Certbot Windows compatible merged into the official repo rather than a separate fork, especially if the necessary changes are as small as ahaw021 made them sound.
Of course, I was wondering if the changes had been committed to an existing fork on github (to then be merged as a PR against the original). So not a real fork, just a work in progress branch.
i logged the request below but would i need to log an issue in github as well?
forgive my ignorance but how do people usually make changes to certbot I know there are beginner problems that people can help out
also would you/certbot team potentially want to own the changes or should i test these first and then upload somewhere?
i don't code for the public much (i.e. post my code on github etc) so hoping for some pointers on how to add the changes i think would make this work on windows
@ahaw021,ideally you should open a pull request on the Certbot GitHub repo with the changes that you’d like to see. I’m not sure your familiarity with git or GitHub, but if you need some help here there are plenty of good resources online. If you have trouble, let me know.