letsencrypt.git
9 days ago[Windows|Linux] Forbid os.stat and os.fstat (#7325) master
Adrien Ferrand [Fri, 6 Sep 2019 21:30:25 +0000 (23:30 +0200)]
[Windows|Linux] Forbid os.stat and os.fstat (#7325)

Fixes #7212

This PR forbid os.stat and os.fstat, and fix or provide alternatives to avoid its usage in certbot outside of certbot.compat.filesystem.

* Reimplement private key mode propagation

* Remove other os.stat

* Remove last call of os.stat in certbot package

* Forbid stat and fstat

* Implement mode comparison checks

* Add unit tests

* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Handle case where multiple ace concerns a given SID in has_min_permissions

* Add a new test scenario

* Add a simple test for has_same_ownership

* Fix name function

* Add a comment explaining an ACE structure

* Move a test in its dedicated class

* Improve a message error

* Calculate has_min_permission result using effective permission rights to be more generic.

* Change an exception message

* Add comments, avoid to skip a test.

* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
10 days agoSimplify testing of RHEL 8. (#7323)
Brad Warren [Fri, 6 Sep 2019 06:59:24 +0000 (23:59 -0700)]
Simplify testing of RHEL 8. (#7323)

10 days agoDisable TLS session tickets in Nginx (#7355)
ohemorange [Thu, 5 Sep 2019 20:51:56 +0000 (16:51 -0400)]
Disable TLS session tickets in Nginx (#7355)

* Find OpenSSL version

* Create and update various config files

* Update logic to use new version constraints

* SSL_OPTIONS_HASHES_NEW and SSL_OPTIONS_HASHES_MEDIUM were just being used for testing, and maintaining them is becoming untenable, so remove them.

* if we don't know the openssl version, we can't turn off session tickets

* add unit test for _get_openssl_version

* add unit tests

* placate lint

* Fix docs and tests and clean up code

* use python correctly

* update changelog

* Lint

* make comment a comment

11 days agoMerge pull request #7364 from certbot/candidate-0.38.0
ohemorange [Wed, 4 Sep 2019 22:23:50 +0000 (18:23 -0400)]
Merge pull request #7364 from certbot/candidate-0.38.0

Update files from 0.38.0 release

12 days ago[Windows] Create an installer for Certbot (#7324)
Adrien Ferrand [Tue, 3 Sep 2019 23:30:13 +0000 (01:30 +0200)]
[Windows] Create an installer for Certbot (#7324)

This PR is the first step to create an official distribution channel of Certbot for Windows. It consists essentially in creating a proper Certbot Windows installer.

Usually distributing an application requires, in a way or another, to stabilize the application logic and its dependencies around a given version. On Windows, this usually takes the form of a freezed application, that vendors its dependencies into a single executable.

There are two well-known solutions to create an executable shipping a Python application on Windows: [py2exe](http://www.py2exe.org/) and [pyinstaller](https://www.pyinstaller.org/). However these solutions create self-executable `.EXE` files: you run the `.EXE` file that launches immediately the software.

This is not a end-user solution. Indeed when a Windows user wants to install a piece of software, he expects to find and download an installer. When run the installer would interface with Windows to setup configuration entries in the Registry, update the environment variable, add shortcuts in the Start Menu, and declare a uninstaller entry into the Uninstaller Manager. Quite similarly, this is what you would get from a `.deb` or `.rpm` package.

A solution that builds proper installers is [pynsis](https://pynsist.readthedocs.io/en/latest/). It is a Python project that constructs installers for Python software using [NSIS](https://sourceforge.net/projects/nsis/), the most known free Windows installer builder solution.

This PR uses pynsist to build a Windows installer. The Python script to launch the installer build is `.\windows-installer\construct.py`. Once finished, the installer is located in `.\windows-installer\build\nsis`.

This installer will do the following operations during the installation:
* copy in the install path a full python distribution used exclusively for Certbot
* copy all Python requirements gathered from the `setup.py` of relevant certbot projects
* copy `certbot` and `acme`
* pre-build python binary assets
* register the existence of the application correctly in Windows Registry
* prepare a procedure to uninstall Certbot
* and of course, expose `certbot` executable to the Windows command line, like on Linux, to be able to launch it as any CLI application from Batch or Powershell

This installer support updates: downloading a new version of it and running it on a Windows with existing installation of Certbot will replace it with the new version.

Future capabilities not included in this PR:
* auto-update of Certbot when a new release is available
* online documentation for Windows
* register a scheduled task for certificate renewal
* installer distribution (continuous deployment + distribution channels)
* method to check the downloaded installer is untampered

* Setup config

* Fix shortcut

* Various improvments

* Update windows-installer/construct.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Split into several method

* Change installer name

* Remove DNS plugins for now

* Add a comment about administrator privileges

* Update welcome

* Control python version

* Control bitness

* Update windows-installer/construct.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update windows-installer/construct.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update windows-installer/construct.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
12 days agoBump version to 0.39.0 candidate-0.38.0 7364/head
Brad Warren [Tue, 3 Sep 2019 19:49:30 +0000 (12:49 -0700)]
Bump version to 0.39.0

12 days agoAdd contents to CHANGELOG.md for next version
Brad Warren [Tue, 3 Sep 2019 19:49:29 +0000 (12:49 -0700)]
Add contents to CHANGELOG.md for next version

12 days agoRelease 0.38.0 0.38.x v0.38.0
Brad Warren [Tue, 3 Sep 2019 19:49:28 +0000 (12:49 -0700)]
Release 0.38.0

12 days agoUpdate changelog for 0.38.0 release
Brad Warren [Tue, 3 Sep 2019 19:42:35 +0000 (12:42 -0700)]
Update changelog for 0.38.0 release

2 weeks agolist py37 support (#7360)
Brad Warren [Wed, 28 Aug 2019 18:10:13 +0000 (11:10 -0700)]
list py37 support (#7360)

These plugins also support Python 3.7. You can see tests passing at https://travis-ci.com/certbot/certbot/jobs/228820500.

2 weeks agoReplace platform.linux_distribution with distro.linux_distribution (#7337)
ohemorange [Wed, 28 Aug 2019 01:31:35 +0000 (18:31 -0700)]
Replace platform.linux_distribution with distro.linux_distribution (#7337)

Smallest possible fix for #7106

* Replace platform.linux_dependencies with distro.linux_dependencies

* run build.py

* Add minimum version of 1.0.1

* Pin back requests package

* Update changelog

2 weeks agoFix PYTHONPATH in integration tests (#7357)
Adrien Ferrand [Tue, 27 Aug 2019 23:25:31 +0000 (01:25 +0200)]
Fix PYTHONPATH in integration tests (#7357)

This PR supersedes #7353.

It fixes the execution of nginx oldest tests when these tests are executed on top of the modifications made in #7337. This execution failure revealed the fact that in some cases, the wrong version of certbot logic was used during integration tests (namely the logic lying in the codebase of the branch built, instead of the logic from the version of certbot declared by certbot-nginx for instance).

I let you appreciate my inline comment for the explanation and the workaround.

Thanks a lot to @bmw who found this python/pytest madness.

You can see the oldest tests succeeding with the logic of #7337 + this PR here: https://travis-ci.com/certbot/certbot/builds/124816254

* Remove certbot root from PYTHONPATH during integration tests

* Add a biiiiig comment.

3 weeks agoMerge pull request #7336 from certbot/update-debian-instructions
schoen [Fri, 23 Aug 2019 20:39:55 +0000 (13:39 -0700)]
Merge pull request #7336 from certbot/update-debian-instructions

Update Debian instructions in docs

3 weeks agoEnsure relpath is executed on paths in the same drive (#7335)
Adrien Ferrand [Fri, 23 Aug 2019 19:53:31 +0000 (21:53 +0200)]
Ensure relpath is executed on paths in the same drive (#7335)

On Windows you can have several drives (`C:`, `D:`, ...), that is the roughly (really roughly) equivalent of mount points, since each drive is usually associated to a specific physical partition.

So you can have paths like `C:\one\path`, `D:\another\path`.

In parallel, `os.path.relpath(path, start='.')` calculates the relative path between the given `path` and a `start` path (current directory if not provided). In recent versions of Python, `os.path.relpath` will fail if `path` and `start` are not on the same drive, because a relative path between two paths like `C:\one\path`, `D:\another\path` is not possible.

In saw unit tests failing because of this in two locations. This occurs when the certbot codebase that is tested is on a given drive (like `D:`) while the default temporary directory used by `tempfile` is on another drive (most of the time located in `C:` drive).

This PR fixes that.

3 weeks agoaddress review comments update-debian-instructions 7336/head
Brad Warren [Fri, 23 Aug 2019 19:43:05 +0000 (12:43 -0700)]
address review comments

3 weeks agouse latest RHEL 7 AMI (#7349)
Brad Warren [Thu, 22 Aug 2019 16:28:57 +0000 (09:28 -0700)]
use latest RHEL 7 AMI (#7349)

3 weeks agoMerge pull request #7347 from certbot/candidate-0.37.2
ohemorange [Wed, 21 Aug 2019 23:21:23 +0000 (16:21 -0700)]
Merge pull request #7347 from certbot/candidate-0.37.2

Release 0.37.2

3 weeks agoMerge branch 'master' into candidate-0.37.2 7347/head
ohemorange [Wed, 21 Aug 2019 23:03:51 +0000 (16:03 -0700)]
Merge branch 'master' into candidate-0.37.2

3 weeks agoBump version to 0.38.0
Erica Portnoy [Wed, 21 Aug 2019 22:23:15 +0000 (15:23 -0700)]
Bump version to 0.38.0

3 weeks agoAdd contents to CHANGELOG.md for next version
Erica Portnoy [Wed, 21 Aug 2019 22:23:15 +0000 (15:23 -0700)]
Add contents to CHANGELOG.md for next version

3 weeks agoRelease 0.37.2 merge-0.37.2 7348/head v0.37.2
Erica Portnoy [Wed, 21 Aug 2019 22:23:14 +0000 (15:23 -0700)]
Release 0.37.2

3 weeks agoUpdate changelog for 0.37.2 release
Erica Portnoy [Wed, 21 Aug 2019 21:48:40 +0000 (14:48 -0700)]
Update changelog for 0.37.2 release

3 weeks agoStop turning session tickets off in Nginx (#7344) (#7345)
Brad Warren [Wed, 21 Aug 2019 21:44:09 +0000 (14:44 -0700)]
Stop turning session tickets off in Nginx (#7344) (#7345)

Related to #7322.

* Stop turning session tickets off in Nginx

* update changelog

(cherry picked from commit 17c1d016c16dc9d41516308dadb8cd6812959981)

3 weeks agoStop turning session tickets off in Nginx (#7344)
ohemorange [Wed, 21 Aug 2019 21:29:10 +0000 (14:29 -0700)]
Stop turning session tickets off in Nginx (#7344)

Related to #7322.

* Stop turning session tickets off in Nginx

* update changelog

4 weeks agoUpdate Debian instructions in docs.
Brad Warren [Fri, 16 Aug 2019 18:42:34 +0000 (11:42 -0700)]
Update Debian instructions in docs.

4 weeks agoUse travis_retry for farm tests (#7327)
Adrien Ferrand [Fri, 16 Aug 2019 12:55:45 +0000 (14:55 +0200)]
Use travis_retry for farm tests (#7327)

* Use travis_retry in travis builds to retry the farm tests

* travis_retry is a bash function, so it can be called only from current bash

* Update .travis.yml

* Update .travis.yml

4 weeks ago[Windows] Fix closing files descriptors during unit tests (#7326)
Adrien Ferrand [Fri, 16 Aug 2019 09:08:42 +0000 (11:08 +0200)]
[Windows] Fix closing files descriptors during unit tests (#7326)

* Fix file descriptor cleanup during tests on Windows

* Fix lint

* Remove useless tearDown

* Clean pylint

4 weeks agoClean travis config (#7328)
Adrien Ferrand [Thu, 15 Aug 2019 23:41:51 +0000 (01:41 +0200)]
Clean travis config (#7328)

This PR removes some useless capabilities in .travis.yml that are associated to the jobs. This concerns mainly sudo and docker.

4 weeks agoAdded DNS plugin for ISPConfig to list (#7332)
Matthias Bilger [Thu, 15 Aug 2019 21:43:14 +0000 (23:43 +0200)]
Added DNS plugin for ISPConfig to list (#7332)

4 weeks agoFix Certbot's Apache plugin doesn't work on Scientific Linux (#7294)
tyborr [Mon, 12 Aug 2019 19:59:29 +0000 (21:59 +0200)]
Fix Certbot's Apache plugin doesn't work on Scientific Linux (#7294)

This PR adds OVERRIDE_CLASS in certbot-apache/entrypoint.py for Scientific Linux. Fixes #7248.

* add OVERRIDE_CLASS for Scientific Linux os name

* add entry for Scientific Linux using "scientific" as key

* Update changelog

5 weeks agoMerge pull request #7320 from certbot/merge-cand-0.37.1
ohemorange [Fri, 9 Aug 2019 01:01:27 +0000 (18:01 -0700)]
Merge pull request #7320 from certbot/merge-cand-0.37.1

Merge cand 0.37.1

5 weeks agoMerge pull request #7318 from certbot/candidate-0.37.1
Brad Warren [Fri, 9 Aug 2019 00:56:57 +0000 (17:56 -0700)]
Merge pull request #7318 from certbot/candidate-0.37.1

Candidate 0.37.1

5 weeks agoMerge branch 'master' into candidate-0.37.1 7318/head
ohemorange [Fri, 9 Aug 2019 00:48:22 +0000 (17:48 -0700)]
Merge branch 'master' into candidate-0.37.1

5 weeks agoBump version to 0.38.0
Erica Portnoy [Fri, 9 Aug 2019 00:01:39 +0000 (17:01 -0700)]
Bump version to 0.38.0

5 weeks agoAdd contents to CHANGELOG.md for next version
Erica Portnoy [Fri, 9 Aug 2019 00:01:38 +0000 (17:01 -0700)]
Add contents to CHANGELOG.md for next version

5 weeks agoRelease 0.37.1 7320/head v0.37.1
Erica Portnoy [Fri, 9 Aug 2019 00:01:32 +0000 (17:01 -0700)]
Release 0.37.1

5 weeks agoUpdate changelog for 0.37.1 release
Erica Portnoy [Thu, 8 Aug 2019 23:39:43 +0000 (16:39 -0700)]
Update changelog for 0.37.1 release

5 weeks agoRevert disabling TLS session tickets in Apache (#7315) (#7316)
Brad Warren [Thu, 8 Aug 2019 23:36:45 +0000 (16:36 -0700)]
Revert disabling TLS session tickets in Apache (#7315) (#7316)

See https://community.letsencrypt.org/t/ssl-error-after-cert-renew/99430.

The first commit of this PR is a simple, clean revert of #7191. Subsequent commits add back pieces of that PR we want to keep.

I also reverted #7299 which landed in a separate PR, but needs to be reverted to keep including the TLS config files in the certbot-apache package when it is built.

I tested this on Ubuntu 18.04 by installing a cert to Apache using Certbot master and then running certbot renew with this branch. I watched the Apache plugin update the configuration file to remove SSLSessionTickets off.

* Revert "Disable TLS session tickets for Apache 2.4.11+ (#7191)"

This reverts commit 9174c631d9965834f263ea7ff842d8d2087f47c7.

* Keep hashes with TLS session tickets disabled.

* dont delete changelog entries

* add changelog entry

* Revert "Clean the useless entries in MANIFEST.in (#7299)"

This reverts commit f4d17d9a6b0f2ba997cdc8da75dd60c1bbf5ebf1.

(cherry picked from commit 120137eb8dc0640cc4bd8c66e710415bf9b164c2)

5 weeks agoRevert disabling TLS session tickets in Apache (#7315)
Brad Warren [Thu, 8 Aug 2019 23:23:37 +0000 (16:23 -0700)]
Revert disabling TLS session tickets in Apache (#7315)

See https://community.letsencrypt.org/t/ssl-error-after-cert-renew/99430.

The first commit of this PR is a simple, clean revert of #7191. Subsequent commits add back pieces of that PR we want to keep.

I also reverted #7299 which landed in a separate PR, but needs to be reverted to keep including the TLS config files in the certbot-apache package when it is built.

I tested this on Ubuntu 18.04 by installing a cert to Apache using Certbot master and then running certbot renew with this branch. I watched the Apache plugin update the configuration file to remove SSLSessionTickets off.

* Revert "Disable TLS session tickets for Apache 2.4.11+ (#7191)"

This reverts commit 9174c631d9965834f263ea7ff842d8d2087f47c7.

* Keep hashes with TLS session tickets disabled.

* dont delete changelog entries

* add changelog entry

* Revert "Clean the useless entries in MANIFEST.in (#7299)"

This reverts commit f4d17d9a6b0f2ba997cdc8da75dd60c1bbf5ebf1.

5 weeks agoUpdate link to the Server forum category (#7309)
Matt Nordhoff [Thu, 8 Aug 2019 18:44:21 +0000 (18:44 +0000)]
Update link to the Server forum category (#7309)

Let's Encrypt closed it in favor of the Help category.

https://community.letsencrypt.org/t/closing-the-server-category/93016

5 weeks agoMerge pull request #7311 from certbot/candidate-0.37.0
ohemorange [Thu, 8 Aug 2019 00:44:16 +0000 (17:44 -0700)]
Merge pull request #7311 from certbot/candidate-0.37.0

Update from 0.37.0 release

5 weeks agoDon't run tox -e cover. (#7312)
Brad Warren [Wed, 7 Aug 2019 22:07:37 +0000 (15:07 -0700)]
Don't run tox -e cover. (#7312)

5 weeks agoBump version to 0.38.0 candidate-0.37.0 7311/head
Brad Warren [Wed, 7 Aug 2019 17:35:13 +0000 (10:35 -0700)]
Bump version to 0.38.0

5 weeks agoAdd contents to CHANGELOG.md for next version
Brad Warren [Wed, 7 Aug 2019 17:35:13 +0000 (10:35 -0700)]
Add contents to CHANGELOG.md for next version

5 weeks agoRelease 0.37.0 v0.37.0
Brad Warren [Wed, 7 Aug 2019 17:35:11 +0000 (10:35 -0700)]
Release 0.37.0

5 weeks agoUpdate changelog for 0.37.0 release
Brad Warren [Wed, 7 Aug 2019 17:26:34 +0000 (10:26 -0700)]
Update changelog for 0.37.0 release

5 weeks agoMerge pull request #7302 from certbot/rhel8_fix-with-tests
Brad Warren [Wed, 7 Aug 2019 00:02:57 +0000 (17:02 -0700)]
Merge pull request #7302 from certbot/rhel8_fix-with-tests

This PR builds off of #7240 to fix #7241.

The code in certbot-auto is unchanged which I +1. Someone else should give it a 2nd review.

For the code in the tests, you can see all tests passing (including test_tests.sh) at  https://travis-ci.com/certbot/certbot/builds/122198270.

I created #7301 to track removing the temporary code in test_leauto_upgrades.sh as suggested at #7282 (comment).

One noteworthy thing here is I did not add the RHEL 8 AMI to the Apache tests due to #7273. This problem is not related to support in certbot-auto though, is an edge case, and I do not personally believe it should block this PR.

5 weeks agoAdd RHEL8 to test farm targets 7302/head
Brad Warren [Tue, 23 Jul 2019 23:56:20 +0000 (16:56 -0700)]
Add RHEL8 to test farm targets

* Add RHEL 8 to targets

* Use latest certbot-auto to bootstrap.

* Workaround leauto failures.

5 weeks agoFix integration tests on Windows (#7271)
Adrien Ferrand [Tue, 6 Aug 2019 22:02:16 +0000 (00:02 +0200)]
Fix integration tests on Windows (#7271)

* Fix account_tests

* Fix hook executable test

* Remove the temporary decorator @broken_on_windows

* Fix util_test

* No broken unit test on Windows anymore

* More elegant mock

* Fix context manager

* Fix lint

* Fix mypy

* Adapt coverage

* Corrections

* Fix lint

* Adapt coverage

* Update certbot/tests/compat/filesystem_test.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update util_test.py

* Fix pylint

* Forbid os.access

* Update os_test.py

* Update os.py

* Fix lint

* Update filesystem.py

* Update filesystem.py

* Update filesystem.py

* Update os.py

* Start fixing tests

* Platform independent hooks

* Fix probe fd close

* Add broken_on_windows for integration tests

* Fix a lot of tests

* Use a python hook script, to prepare cross-platform

* New approach to be compliant with Linux and Windows on hook scripts

* New tests fixed

* Test for permissions on Windows

* Permissions comparison for Windows

* No broken tests in certbot core anymore

* Change mode

* Specific config for appveyor

* Use forked pebble for now

* Various fixes

* Assert file permissions for world on private keys

* Clean code

* Fix several things

* Add integration target

* Optimize integration env

* Re-enable all AppVeyor envs

* Use again official pebble

* Update pebble_artifacts.py

* Set PYTEST_ADDOPTS silently

* Update appveyor.yml

* Pin pywin32 for tests, give a minimal requirement for certbot.

* Remove injection of nginx in PATH

* Clean debug code

* Various cleanup, ensure to remove workspace after tests

* Update tox target

* Improve assertions. Control the keyword echoed in hooks

* Fix for virtualenv on Python 3.7.4 for Windows

* Update certbot-ci/certbot_integration_tests/certbot_tests/assertions.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Add conditionally pywin in certbot-ci like in certbot

5 weeks agoUpdate certbot-auto script to work with RHEL 8 7240/head
Michael Watters [Fri, 12 Jul 2019 17:00:44 +0000 (13:00 -0400)]
Update certbot-auto script to work with RHEL 8

/usr/bin/python no longer exists in RHEL 8.  This patch updates
the certbot-auto script to use python3 on nodes running RHEL 8.

Also fixed a bug in the RPM_DIST_VERSION logic which would cause
letsencrypt-auto to fail on servers running CentOS/RHEL 6.

5 weeks agoClean the useless entries in MANIFEST.in (#7299)
Adrien Ferrand [Mon, 5 Aug 2019 22:57:20 +0000 (00:57 +0200)]
Clean the useless entries in MANIFEST.in (#7299)

Since #7191, TLS configuration files for Apache have been moved to a dedicated folder tls_configs. Then the entries in MANIFEST.in removed by this PR do not correspond to an existing path, and so are not useful anymore.

5 weeks agoMove Nginx TLS configuration files into a specific folder (#7300)
Adrien Ferrand [Mon, 5 Aug 2019 22:45:08 +0000 (00:45 +0200)]
Move Nginx TLS configuration files into a specific folder (#7300)

Following discussions in #7298.

This PR moves the three Nginx TLS configuration files into a specific folder, tls_configs, update the MANIFEST to include this folder and its content into the certbot-nginx package, and update tests accordingly.

* Move tls configuration files in a specific folder

* Move new file

6 weeks agoFollow Mozilla recs for Nginx ssl_protocols, ssl_ciphers, and ssl_prefer_server_ciphe...
ohemorange [Fri, 2 Aug 2019 19:25:40 +0000 (12:25 -0700)]
Follow Mozilla recs for Nginx ssl_protocols, ssl_ciphers, and ssl_prefer_server_ciphers (#7274)

* Follow Mozilla recs for Nginx ssl_protocols, ssl_ciphers, and ssl_prefer_server_ciphers

* Add tests and fix if statement

* Update CHANGELOG.md

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Test that the hashes of all of the current configuration files are in ALL_SSL_OPTIONS_HASHES

* Remove conditioning on OpenSSL version, since Nginx behaves cleanly if its linked OpenSSL doesn't support TLS1.3

6 weeks agoCreate a mock OCSP server for Pebble integration tests (#7281)
Adrien Ferrand [Fri, 2 Aug 2019 18:46:12 +0000 (20:46 +0200)]
Create a mock OCSP server for Pebble integration tests (#7281)

* Implement a logic, miss the private key of pebble

* Complete process

* Fix nginx cert path

* Check conditionnally docker

* Update gitignore, fix apacheconftest

* Full object

* Carriage return

* Work in progress

* Move to official v2.1.0 of pebble

* Fix name

* Update acme_server.py

* Link things together with new version of pebble

* Plug the logic to tests

* Update config

* Reinitiate config

* Add OCSP config to pebble

* Working.

* Simplify logic

* Clean code

* Use forked pebble for now

# Conflicts:
# certbot-ci/certbot_integration_tests/utils/pebble_artifacts.py

* Move full logic of mock at the acme server config

* Continue work

* Finish fixing the date parsing

* Update module name

* Use again official pebble

* Activate mock OCSP server

* Clean code

* Update pebble_artifacts.py

* Remove OCSP stale test

* Add executable permissions

* Clean code

* Update setup.py

* Simplify code

* On-demand import of pebble_ocsp_server

* Revert "Remove OCSP stale test"

This reverts commit 2e4c985b427120cc15526bbcfd15806d02a6f3fc.

# Conflicts:
# certbot-ci/certbot_integration_tests/utils/misc.py

* Fix for virtualenv on Python 3.7.4 for Windows

* Update acme_server.py

6 weeks agoUpgrade virtualenv in dev/tests environments (#7287) 7289/head
Adrien Ferrand [Fri, 2 Aug 2019 16:47:36 +0000 (18:47 +0200)]
Upgrade virtualenv in dev/tests environments (#7287)

AppVeyor recently upgrade the Python 3.7.x installed in their VM to 3.7.4. However, virtualenv 16.6.1 is broken on that specific version of Python for Windows.

This PR upgrade virtualenv installed for a dev/test environment from 16.6.1 to 16.6.2 in order to fix this issue, and repair the CI jobs execute by AppVeyor on PRs.

6 weeks agoFix unit tests on Windows (#7270)
Adrien Ferrand [Thu, 1 Aug 2019 17:39:46 +0000 (19:39 +0200)]
Fix unit tests on Windows (#7270)

Fixes #6850

This PR makes the last corrections needed to run all unit tests on Windows:

add a function to check if a hook is executable in a cross-platform compatible way
handle correctly the PATH surgery for Windows during hook execution
handle correctly an account compatibility over both ACMEv1 and ACMEv2
remove (finally!) the @broken_on_windows decorator.

* Fix account_tests

* Fix hook executable test

* Remove the temporary decorator @broken_on_windows

* Fix util_test

* No broken unit test on Windows anymore

* More elegant mock

* Fix context manager

* Adapt coverage

* Corrections

* Adapt coverage

* Forbid os.access

6 weeks agoUpdate dns-cloudflare docs regarding API Tokens (#7285)
Mikel Kew [Wed, 31 Jul 2019 08:31:05 +0000 (18:31 +1000)]
Update dns-cloudflare docs regarding API Tokens (#7285)

A quick update to the docs to explicitly mention that the Cloudflare Global API Key must me used instead of an API Token.

6 weeks agoBump timeout waiting for ACME server to 4 minutes. (#7284)
Brad Warren [Tue, 30 Jul 2019 19:28:18 +0000 (12:28 -0700)]
Bump timeout waiting for ACME server to 4 minutes. (#7284)

* Bump timeout to 4 minutes.

* address review comments

6 weeks agoDisable TLS session tickets for Apache 2.4.11+ (#7191)
Adrien Ferrand [Mon, 29 Jul 2019 19:54:51 +0000 (21:54 +0200)]
Disable TLS session tickets for Apache 2.4.11+ (#7191)

* Implement the logic

* Update tests

* Fix lint and changelog

* Update configurator.py

* Move the TLS configs in a dedicated folder. Fix the formalism of their naming and location.

* Improve existing test to check all TLS config have their hash registered in Certbot

* Corrections after review

* Improve a test

* Remove commented useless lines in TLS configs

* Add a nice warning. Because I am nice.

* Fix lint

* Add a test

6 weeks agoRefer to ubuntu in install.rst (#6986)
Adrien Ferrand [Mon, 29 Jul 2019 17:27:09 +0000 (19:27 +0200)]
Refer to ubuntu in install.rst (#6986)

Fixes #5758

7 weeks agoRemove duplicate, failing oldest tests. (#7272)
Brad Warren [Fri, 26 Jul 2019 20:37:16 +0000 (13:37 -0700)]
Remove duplicate, failing oldest tests. (#7272)

Nightly tests failed last night at https://travis-ci.com/certbot/certbot/builds/120816454.

The cause was the oldest the version of Ubuntu used in the tests suddenly changed from Trusty to Xenial. You can see Xenial being used in the failing test at  https://travis-ci.com/certbot/certbot/jobs/219873088#L9 and Trusty being used at the last passing test at https://travis-ci.com/certbot/certbot/jobs/218936290#L9. The change in the default doesn't seem to be documented (yet) at https://docs.travis-ci.com/user/reference/overview/.

I started to pin Trusty in these tests, however, I noticed that we are running these same unit tests at https://github.com/certbot/certbot/blob/e6bf3fe7f81ff7651b3e8be3d530be725090ed2c/.travis.yml#L58. These other tests are still succeeding because it appears that including `sudo: required` causes Travis to still default to Trusty.

Deleting these duplicated tests fixes our Travis failures and speeds things up ever so slightly.

* Remove duplicate, failing oldest tests.

* pin trusty

7 weeks ago[Windows] Security model for files permissions - STEP 3f (#7233)
Adrien Ferrand [Thu, 25 Jul 2019 22:25:36 +0000 (00:25 +0200)]
[Windows] Security model for files permissions - STEP 3f (#7233)

* Correct file permissions on TempHandler

* Forbid os.chown and os.geteuid, as theses functions can be harmful to the security model on Windows.

* Implement copy_ownership

* Apply copy_ownership

* Correct webroot tests (and activate another broken test !)

* Correct lint and mypy

* Ensure to apply mode in makedirs

* Apply strict permissions on directories created with tempfile.mkdtemp(), like on Unix.

* Ensure streamHandler has 0600 on Windows

* Reactivate a test on windows

* Pin oldest requirements to current internal libraries (acme and certbot)

* Add dynamically pywin32 in dependencies: always except for certbot-oldest to avoid to break the relevant tests.

* Administrative privileges are always required.

* Correct security implementation (not the logic yet)

* First correction. Allow to manipulate finely file permissions during their generation

* Align to master + fix lint + resolve correctly symbolic links

* Add a test for windows about default paths

* Strenghthen the detection of Linux/Windows to check the standard files layout.

* Fix lint and mypy

* Reflect non usage of cache discovery from dns google plugin to its tests, solving Windows tests on the way

* Apply suggestions from code review

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Add more details in a comment

* Retrigger build.

* Add documentation.

* Fix a test

* Correct RW clear down

* Update util.py

* Remove unused code

* Fix code style

* Adapt certbot coverage threshold on Linux due to Windows specific LOC addition.

* Various optimizations around file owner and file mode

* Fix last error

* Fix copy_ownership_and_apply_mode

* Fix lint

* Correct mypy

* Extract out first part from windows-file-permissions

* Ignore new_compat in coverage for now

* Create test package for compat

* Add unit tests for security module.

* Add pywin32

* Adapt linux coverages to the windows-specific LOCs added

* Clean imports

* Correct import

* Trigger CI

* Reactivate a test

* Create the certbot.compat package. Move logic in certbot.compat.misc

* Clean comment

* Add doc

* Fix lint

* Correct mypy

* Add executable permissions

* Add the delegate certbot.compat.os module, add check coding style to enforce usage of certbot.compat.os instead of standard os

* Load certbot.compat.os instead of os

* Move existing compat test

* Update local oldest requirements

* Import sys

* Fix some mocks

* Update account_test.py

* Update os.py

* Update os.py

* Update local oldest requirements

* Implement the new linter_plugin

* Fix remaining linting errors

* Fix local oldest for nginx

* Remove custom check in favor of pylint plugin

* Remove check coding style

* Update linter_plugin.py

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Add several comments

* Update the setup.py

* Add documentation

* Update acme dependencies

* Update certbot/compat/os.py

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Update certbot/compat/os.py

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Update certbot/compat/os.py

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Update docs/contributing.rst

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Update linter_plugin.py

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Update linter_plugin.py

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Update docs/contributing.rst

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Update docs/contributing.rst

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Corrections

* Handle os.path. Simplify checker.

* Add a comment to a reference implementation

* Update changelog

* Fix module registering

* Update docs/contributing.rst

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Update docs/contributing.rst

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Update docs/contributing.rst

Co-Authored-By: adferrand <adferrand@users.noreply.github.com>
* Update config and changelog

* Correction

* Correct os

* Fix merge

* Disable pylint checks

* Normalize imports

* Simplify security

* Corrections

* Reorganize module

* Clean code

* Clean code

* Remove coverage

* No cover

* Implement security.chmod

* Disable a test for now

* Disable hard error for now

* Add a first test. Remove unused import

* Recalibrate coverage

* Modifications for misc

* Correct function call

* Add some types

* Remove newline

* Use os_rename

* Implement security.open

* Revert to windows-files-permissions approach

* Fix lint

* Implement security.mkdir and security.makedirs

* Fix lint

* Clean lint

* Clean lint

* Revert "Clean lint"

This reverts commit 83bf81960ac6bf3f76c286ca065a5ac850c6870b.

* Correct mock

* Conditionally add pywin32 on setuptools versions that support environment markers.

* Fix separator

* Fix separator

* Rename security into filesystem

* Change module security to filesystem

* Move rename into filesystem

* Rename security into filesystem

* Rename security into filesystem

* Rerun CI

* Fix import

* Fix pylint

* Implement copy_ownership_and_apply_mode

* Fix pylint

* Update certbot/compat/os.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Remove default values

* Rewrite a comment.

* Relaunch CI

* Pass as keyword arguments

* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Make the private key permissions transfer platform specific

* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Rename variable

* Fix comment0

* Add unit test for copy_ownership_and_apply_mode

* Adapt coverage

* Implement new methods.

* Remove the old method

* Reimplement make_or_verify_dir

* Finish migration

* Start to fix tests

* Fix ownership when creating a file with filesystem.open

* Fix security on TempHandler

* Fix validation path permissions

* Fix owner on mkdir

* Use a proper workdir for crypto tests

* Fix pylint

* Adapt coverage

* Update storage_test.py

* Update util_test.py

* Clean code

* Update certbot/compat/filesystem.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Add comment

* Update certbot/compat/filesystem.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Check permissions

* Change test mode

* Add unit test for filesystem.check_* functions

* Update filesystem_test.py

* Better logic for TempHandler

* Adapt coverage

7 weeks agodocs: s/certbot_tests/certbot_test/ (#7267)
alexzorin [Thu, 25 Jul 2019 08:23:28 +0000 (18:23 +1000)]
docs: s/certbot_tests/certbot_test/ (#7267)

7 weeks agofix backwards logic (#7265)
Brad Warren [Thu, 25 Jul 2019 08:20:52 +0000 (01:20 -0700)]
fix backwards logic (#7265)

7 weeks agoacme: Implement authz deactivation (#7254)
alexzorin [Thu, 25 Jul 2019 01:04:59 +0000 (11:04 +1000)]
acme: Implement authz deactivation (#7254)

Resolves #4945. First PR in order to address #5116.

* acme: Implement authz deactivation

Resolves #4945

* update AUTHORS and CHANGELOG

* typos in mypy annotations

* formatting: missing newline

* improve test_deactivate_authorization

* improve deactivate_authorization

* test: s/STATUS_INVALID/STATUS_DEACTIVATED/

* simplify dict to keyword argument

* acme: add UpdateAuthorization

* acme: use UpdateAuthorization in deactivate_authz

and add mypy annotation

This allows deactivate_authorization to succeed for both ACME v1
and v2 servers.

7 weeks agoFix test_symlink_resolution on macOS. (#7263)
Brad Warren [Tue, 23 Jul 2019 18:01:29 +0000 (11:01 -0700)]
Fix test_symlink_resolution on macOS. (#7263)

This fixes the test failures which can be seen at
https://travis-ci.com/certbot/certbot/builds/120123338.

The problem here is the path returned by tempfile.mkdtemp() contains a symlink.
For instance, one run of the function produced
'/var/folders/3b/zg8fdh5j71x92yyzc1tyllfw0000gp/T/tmp3k9ytfj1' which is a
symlink to
'/private/var/folders/3b/zg8fdh5j71x92yyzc1tyllfw0000gp/T/tmp3k9ytfj1'.

Removing this symlink before testing filesystem.realpath solves the problem.

You can see the macOS tests passing with this change at https://travis-ci.com/certbot/certbot/builds/120250667.

7 weeks agoRemove Dockerfiles (#7257)
Adrien Ferrand [Mon, 22 Jul 2019 10:43:58 +0000 (12:43 +0200)]
Remove Dockerfiles (#7257)

8 weeks agoRemove list of packaging efforts. (#7258)
Brad Warren [Fri, 19 Jul 2019 17:44:17 +0000 (10:44 -0700)]
Remove list of packaging efforts. (#7258)

I think this list maybe had value when distros were first starting to package Certbot, but now I don't think it does. What function does this list serve? The instruction generator at https://certbot.eff.org/instructions does a much better job telling users how to use these packages. On the packaging side, I think anyone capable of packaging Certbot at the various distros would be able to search their repositories to see if a Certbot package is available.

Since this list is hard to maintain as links semi-regularly break and keeping it up to date with all distros and all Certbot components is a fair bit of work, let's just remove it.

This PR was motivated by the Travis failures at https://travis-ci.com/certbot/website/builds/119588518 due to GNU Guix changing the layout of their site.

8 weeks agoUpdate pexpect to fix Python 3.7 dev venvs. (#7259)
Brad Warren [Thu, 18 Jul 2019 22:44:01 +0000 (15:44 -0700)]
Update pexpect to fix Python 3.7 dev venvs. (#7259)

8 weeks agoImplement a consistent realpath function in certbot.compat.filesystem (#7242)
Adrien Ferrand [Thu, 18 Jul 2019 21:31:39 +0000 (23:31 +0200)]
Implement a consistent realpath function in certbot.compat.filesystem (#7242)

Fixes #7115

This PR creates a `realpath` method in `filesystem`, whose goal is to replace any call to `os.path.realpath` in Certbot. The reason is that `os.path.realpath` is broken on some versions of Python for Windows. See https://bugs.python.org/issue9949. The function created here works consistently across Linux and Windows.

As for the other forbidden functions in `os` module, our `certbot.compat.os` will raise an exception if its `path.realpath` function is invoked, and using the `os` module from Python is forbidden from the pylint check implemented in our CI.

Every call to `os.path.realpath` is corrected in `certbot` and `certbot-apache` modules.

* Forbid os.path.realpath

* Finish implementation

* Use filesystem.realpath

* Control symlink loops also for Linux

* Add a test for forbidden method

* Import a new object from os.path module

* Use same approach of wrapping than certbot.compat.os

* Correct errors

* Fix dependencies

* Make path module internal

8 weeks agoUse Buster as base image (#7251)
J0WI [Wed, 17 Jul 2019 20:05:02 +0000 (22:05 +0200)]
Use Buster as base image (#7251)

2 months agoUnify license filename (LICENSE.txt) (#7239)
Po-Chuan Hsieh [Fri, 12 Jul 2019 19:53:43 +0000 (03:53 +0800)]
Unify license filename (LICENSE.txt) (#7239)

* Unify license filename (LICENSE.txt)

2 months agoAdd a test for the default directories on Windows (#7238)
Adrien Ferrand [Fri, 12 Jul 2019 00:49:52 +0000 (02:49 +0200)]
Add a test for the default directories on Windows (#7238)

There is a unit test to check that the default directories for Certbot are not diverging, in certbot.tests.cli_test:FlagDefaultTests:test_linux_directories.

But this test is not done on Windows.

This PR fixes that.

2 months agoFixes #7220 to allow config to be loaded from <(envsubst < template) (#7221)
Lucid One [Thu, 11 Jul 2019 21:40:24 +0000 (17:40 -0400)]
Fixes #7220 to allow config to be loaded from <(envsubst < template) (#7221)

* Fixes #7220 to allow config to be loaded from <(envsubst < template)

2 months agoMerge pull request #7236 from certbot/candidate-0.36.0
Brad Warren [Thu, 11 Jul 2019 21:00:49 +0000 (14:00 -0700)]
Merge pull request #7236 from certbot/candidate-0.36.0

Release 0.36.0

2 months agoBump version to 0.37.0 candidate-0.36.0 7236/head
Erica Portnoy [Thu, 11 Jul 2019 19:31:53 +0000 (12:31 -0700)]
Bump version to 0.37.0

2 months agoAdd contents to CHANGELOG.md for next version
Erica Portnoy [Thu, 11 Jul 2019 19:31:53 +0000 (12:31 -0700)]
Add contents to CHANGELOG.md for next version

2 months agoRelease 0.36.0 0.36.x v0.36.0
Erica Portnoy [Thu, 11 Jul 2019 19:31:51 +0000 (12:31 -0700)]
Release 0.36.0

2 months agoUpdate changelog for 0.36.0 release
Erica Portnoy [Thu, 11 Jul 2019 19:12:24 +0000 (12:12 -0700)]
Update changelog for 0.36.0 release

2 months agoAdd mypy to contributing checklist. (#7224)
Brad Warren [Thu, 11 Jul 2019 01:14:12 +0000 (18:14 -0700)]
Add mypy to contributing checklist. (#7224)

2 months agoMake PR template a checklist and suggest mypy. (#7223)
Brad Warren [Thu, 11 Jul 2019 01:14:01 +0000 (18:14 -0700)]
Make PR template a checklist and suggest mypy. (#7223)

2 months agoRun tests on apache-parser-v2 (#7231)
Brad Warren [Wed, 10 Jul 2019 23:30:06 +0000 (16:30 -0700)]
Run tests on apache-parser-v2 (#7231)

We're planning on using the branch apache-parser-v2 allowing us to incrementally work on the new Apache parser and feel comfortable landing temporary test code that we don't really want in master.

The apache-parser-v2 branch is created and locked down, but neither Travis or AppVeyor are configured to run tests on it. See #7230. This PR fixes that problem.

This could probably just land in the apache-parser-v2 branch, but why unnecessarily deviate the branch from master? It doesn't hurt anything there. Once it lands, I'll get this added to the apache-parser-v2 branch too.

* Run tests on apache-parser-v2.

* add comment

* Don't run full test suite on apache-parser-v2.

2 months ago[Windows] Security model for files permissions - STEP 3e (#7182)
Adrien Ferrand [Wed, 10 Jul 2019 23:26:30 +0000 (01:26 +0200)]
[Windows] Security model for files permissions - STEP 3e (#7182)

This PR implements the filesystem.copy_ownership_and_apply_mode method from #6497.

This method is used in two places in Certbot, replacing os.chown, to copy the owner and group owner from a file to another one, and apply to the latter the given POSIX mode.

* Implement copy_ownership_and_apply_mode

* Update certbot/compat/os.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Remove default values

* Rewrite a comment.

* Relaunch CI

* Pass as keyword arguments

* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Make the private key permissions transfer platform specific

* Update certbot/compat/filesystem.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Rename variable

* Fix comment0

* Add unit test for copy_ownership_and_apply_mode

* Adapt coverage

* Execute unconditionally chmod with copy_ownership_and_apply_mode. Improve doc.

2 months agoRemove test symlink. (#7232)
Brad Warren [Wed, 10 Jul 2019 21:48:34 +0000 (14:48 -0700)]
Remove test symlink. (#7232)

2 months ago[Windows|Linux] Launch integration tests on Pebble without Docker (#7157)
Adrien Ferrand [Wed, 10 Jul 2019 21:29:57 +0000 (23:29 +0200)]
[Windows|Linux] Launch integration tests on Pebble without Docker (#7157)

This PR is a part of the actions necessary to make Certbot-CI work on Windows, in order to execute the integration tests on this platform.

Following #7156, this PR changes how the integration tests are setup against Pebble to not need Docker anymore.

As a reminder, one can check #7156 and letsencrypt/pebble#240 to see the rationale about why using Docker is a problem to run the integration tests on Windows.

Basically, this PR executes directly Pebble using its executable, since it is build using Go, and Go produces self-contained executable that can run without any installation on Linux and on Windows. During the integration tests setup, Certbot-CI will get the Pebble (and Challtestsrv) executables for the defined target version on the GitHub releases. The binaries are persisted on the filesystem, so it is not needed to download them again on the second integration tests execution. Nonetheless, we are talking about 20MB of executables.

Since the setup needs to hold a state, I also took this occasion to refactor the acme_server, in order to use on object oriented approach and improve the readability/maintainability.

Once this PR and #7156 are merged, Docker will not be needed anymore for the main integration tests usecase, that is to use Pebble.

* Complete process

* Fix nginx cert path

* Check conditionnally docker

* Update gitignore, fix apacheconftest

* Full object

* Carriage return

* Move to official v2.1.0 of pebble

* Fix name

* Update acme_server.py

* Relaunch CI

* Update certbot-ci/certbot_integration_tests/utils/acme_server.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update certbot-ci/certbot_integration_tests/utils/acme_server.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update docstring

* Update documentation

* Configure a stdout to ACMEServer

* Map all process through defined stdout

* Remove unused variable

* Handle using signals

* Use failsafe entering context

* Remove failsafe rmtree, that is not needed anymore

2 months agoDocument pytest packaging problems. (#7226)
Brad Warren [Tue, 9 Jul 2019 22:07:33 +0000 (15:07 -0700)]
Document pytest packaging problems. (#7226)

This is probably unlikely to come up again, but this documents that people should run our tests using setuptools rather than calling something like pytest directly. See https://opensource.eff.org/eff-open-source/pl/wdrky4uyzjguppgch3r7t7qjmc for more info.

2 months agoReplace broken link with archive link. (#7222)
Brad Warren [Mon, 8 Jul 2019 17:27:25 +0000 (10:27 -0700)]
Replace broken link with archive link. (#7222)

2 months ago[Windows] Security model for files permissions - STEP 3d (#6968)
Adrien Ferrand [Wed, 3 Jul 2019 23:20:43 +0000 (01:20 +0200)]
[Windows] Security model for files permissions - STEP 3d (#6968)

* Implement security.mkdir and security.makedirs

* Fix lint

* Correct mock

* Rename security into filesystem

* Update apache and nginx plugins requirements

* Update certbot/plugins/webroot.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Reenable pylint here

* Move code

* Reimplement mkdir

* Control errors on eexist, remove superfluous chmod for makedirs

* Add proper skip for windows only tests

* Fix lint

* Fix mypy

* Clean code

* Adapt coverage threshold on Linux with addition of LOC specific to Windows

* Add forbiden functions to tests

* Update certbot/compat/os.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Simplify code

* Sync _get_current_user with part3c

* Use the simpliest implementation

* Remove exist_ok, simplify code.

* Simplify inline comment

* Update filesystem_test.py

* Update certbot/compat/os.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/plugins/webroot.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/plugins/webroot.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Add a test to check we set back os.mkdir correctly after filesystem.makedirs is called.

* Fix lint, adapt coverage

2 months agoSimplify and deprecate viewing config changes (#7198)
Brad Warren [Wed, 3 Jul 2019 00:20:12 +0000 (17:20 -0700)]
Simplify and deprecate viewing config changes (#7198)

* Remove apache and nginx from config_changes help

* Deprecate certbot_config changes.

* Document config_changes deprecation.

* Remove view_config_changes as IInstaller method.

* Remove view_config_changes from plugins.

* Add view_config_changes warnings.

* simplify test_config_changes_deprecation

2 months ago[Windows] Security model for files permissions - STEP 3c (#6967)
Adrien Ferrand [Tue, 2 Jul 2019 23:21:24 +0000 (01:21 +0200)]
[Windows] Security model for files permissions - STEP 3c (#6967)

* Implement security.open

* Clean lint

* Rename security into filesystem

* Update certbot/compat/filesystem.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/util.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/lock.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/compat/os.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/lock.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/compat/os.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Simplify and make more clear comment on os.open.

* Secure implementation preventing race conditions

* Revert "Secure implementation preventing race conditions"

This reverts commit dbb85492195122020ca0b4a685ddb4836fdc6d12.

* Simplify the logic on Windows.

* Implement os.open to prevent race conditions

* Add unit tests

* Handle os.O_CREAT and os.O_EXCL directly from the Windows APIs

* Improve comments

* Use CREATE_ALWAYS

* Adapt coverage threshold to new Windows specific LOCs.

* Update certbot/compat/os.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/compat/os.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/compat/os.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/compat/filesystem.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Add some comments

* Fix pylint

* Improve docstring

* Added test cases

* Improve docstring

* Update certbot/lock.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Update certbot/lock.py

Co-Authored-By: ohemorange <ebportnoy@gmail.com>
* Fix lint

* Adapt coverage

* Adapt coverage

2 months agoInstall Python3 only dev tools with tools/venv3.py (#7215)
Brad Warren [Tue, 2 Jul 2019 20:45:57 +0000 (13:45 -0700)]
Install Python3 only dev tools with tools/venv3.py (#7215)

These packages can be useful and I found that they aren't being installed in our Python 3 development environment. Let's fix that.

2 months agoPin/upgrade virtualenv in our tests (#7211)
Brad Warren [Tue, 2 Jul 2019 17:02:00 +0000 (10:02 -0700)]
Pin/upgrade virtualenv in our tests (#7211)

* Update virtualenv to the latest version.

* Use venv from pip and pin more packages.

* Pin codecov.

* update appveyor config

* Write the path separator backwards.

* s/pip_install.py install/pip_install.py

* Prefix tools\\pip_install.py with python exe.

* Upgrade py to fix AppVeyor failures.

* add back comment

* Update virtualenv with CERTBOT_NO_PIN.

* Pass -U to upgrade tox and deps.

* Upgrade virtualenv.

2 months agoDocument certbot-auto's code freeze. (#7207)
Brad Warren [Fri, 28 Jun 2019 22:53:56 +0000 (15:53 -0700)]
Document certbot-auto's code freeze. (#7207)

Inspired by #7194, this PR adds a note to our documentation that we're not accepting most changes to certbot-auto.

2 months agoReplace Some Platform-Specific Line Separation (#7203)
dkp [Fri, 28 Jun 2019 20:06:52 +0000 (22:06 +0200)]
Replace Some Platform-Specific Line Separation (#7203)

os.linesep isn't supposed to be used when writing to files opened in
text mode, where '\n' is escaped to the platform-specific ASCII
sequence.  For example, on Windows, os.linesep is '\r\n' and in text
mode is escaped to ASCII sequence CR CR LF rather than just CR LF.
This is also true for the default logger and IDisplay notifications.

Replacing os.linesep with '\n' ensures the right sequence is escaped.

Resolves: 6899

2 months agoUpdate Nginx conf file to match Mozilla's security recommendations (#7163)
sydneyli [Fri, 28 Jun 2019 19:16:52 +0000 (12:16 -0700)]
Update Nginx conf file to match Mozilla's security recommendations (#7163)

Fixes #7089

2 months agoRefactor augeas_configurator.py functionality to configurator.py and parser.py accord...
Joona Hoikkala [Fri, 28 Jun 2019 15:39:13 +0000 (18:39 +0300)]
Refactor augeas_configurator.py functionality to configurator.py and parser.py accordingly. (#7181)

This pull request moves the functionality within `AugeasConfigurator` that previously existed as a parent class of `ApacheConfigurator` to `ApacheConfigurator` and `ApacheParser` accordingly.

Most of the methods were moved as-is, and one (`recovery_routine()`) was completely removed. Few of the methods had to be split between the configurator and parser, good example of this is `save()`.

The Augeas object now lives completely within the `ApacheParser`.

* Remove augeasconfigurator

* Fix references

* Adjust tests accordingly

* Simplify test

* Address review comments

* Address review comments

* Move test_recovery_routine_reload

2 months agocertbot-plugin-gandi is not an installer. (#7201)
Brad Warren [Thu, 27 Jun 2019 22:17:45 +0000 (15:17 -0700)]
certbot-plugin-gandi is not an installer. (#7201)

This [plugin](https://github.com/obynio/certbot-plugin-gandi) is an authenticator but not an installer. It's a DNS authenticator plugin.

2 months agoRemove plesk from the list of 3rd party plugins. (#7200)
Brad Warren [Thu, 27 Jun 2019 22:17:31 +0000 (15:17 -0700)]
Remove plesk from the list of 3rd party plugins. (#7200)

Our link for the Plesk plugin goes to https://github.com/plesk/letsencrypt-plesk which refers you to https://ext.plesk.com/packages/f6847e61-33a7-4104-8dc9-d26a0183a8dd-letsencrypt and in their changelog for 2.0.0 it says "Replaced Python-based certbot with PHP-based client".

2 months agoFix certbot config_changes (#7197)
Brad Warren [Thu, 27 Jun 2019 00:46:51 +0000 (17:46 -0700)]
Fix certbot config_changes (#7197)

* Remove for_logging parameter.

* Remove broken/unused --num parameter.

* update changelog

2 months agos/for for/for (#7196)
Brad Warren [Thu, 27 Jun 2019 00:24:04 +0000 (17:24 -0700)]
s/for for/for (#7196)