letsencrypt.git
5 days agofixes #7553 (#7560) master
Brad Warren [Thu, 14 Nov 2019 22:26:01 +0000 (14:26 -0800)]
fixes #7553 (#7560)

6 days agoUpdate pinned dependencies (#7558)
Brad Warren [Wed, 13 Nov 2019 21:44:36 +0000 (13:44 -0800)]
Update pinned dependencies (#7558)

Fixes #7184.

I updated #7358 to track the issue of unpinning all of these dependencies.

* pin back configargparse

* Pin back zope packages.

* update deps

* Add changelog entry.

* run build.py

6 days agoInternalize modules called by internal plugins (#7543)
ohemorange [Wed, 13 Nov 2019 19:14:46 +0000 (11:14 -0800)]
Internalize modules called by internal plugins (#7543)

* Move hooks.py to _internal

* Move cli.py to _internal

6 days agoFix shebang in rebuild_deps (#7557)
Brad Warren [Wed, 13 Nov 2019 19:14:26 +0000 (11:14 -0800)]
Fix shebang in rebuild_deps (#7557)

When you try to run this script, it crashes with:
```
standard_init_linux.go:211: exec user process caused "exec format error"
```
This is caused by the script being written to have the contents:
```
\
#!/bin/sh
set -e
...
```
This fixes the problem by removing the slash and moving the shebang to the first line of the string.

7 days agoDeprecate certbot register --update-registration (#7556)
Amjad Mashaal [Wed, 13 Nov 2019 18:24:37 +0000 (20:24 +0200)]
Deprecate certbot register --update-registration (#7556)

Closes #7452.

7 days agoMove configuration.py to _internal (#7542)
ohemorange [Wed, 13 Nov 2019 18:19:27 +0000 (10:19 -0800)]
Move configuration.py to _internal (#7542)

Part of #5775. Methodology similar to #7528. Also refactors NGINX test util to use certbot.tests.util.ConfigTestCase.

* refactor nginx tests to no longer rely on certbot.configuration internals

* Move configuration.py to _internal

7 days ago[Windows] Avoid letsencrypt.log permissions error during scheduled certbot renew...
Adrien Ferrand [Wed, 13 Nov 2019 18:04:45 +0000 (19:04 +0100)]
[Windows] Avoid letsencrypt.log permissions error during scheduled certbot renew task (#7537)

While coding for #7536, I ran into another issue. It appears that Certbot logs generated during the scheduled task execution have wrong permissions that make them almost unusable: they do not have an owner, and their ACL contains nonsense values (non existant accounts name).

The class `logging.handler.RotatingFileHandler` is responsible for these logs, and become mad when it is in a Python process run under a scheduled task owned by `SYSTEM`. This is precisely our case here.

This PR avoids (but not fix) the issue, by changing the owner of the scheduled task from `SYSTEM` to the `Administrators` group, that appears to work fine.

* Use Administrators group instead of SYSTEM to run the certbot renew task

7 days ago[Windows] Fix certbot renew task failure under NT AUTHORITY\SYSTEM account (#7536)
Adrien Ferrand [Wed, 13 Nov 2019 17:43:50 +0000 (18:43 +0100)]
[Windows] Fix certbot renew task failure under NT AUTHORITY\SYSTEM account (#7536)

Turned out that the scheduled task that runs `certbot renew` twice a day, is failing. Without any kind of log of course, otherwise it would not be fun.

It can be revealed by opening a powershell under the `NT AUTHORITY\SYSTEM` account, under which the scheduled task is run. Under theses circumstances, the bug is revealed: Certbot breaks when trying to invoke `certbot.compat.filesystem._get_current_user()`. Indeed the logic there implied to call `win32api.GetUserNameEx(win32api.NameSamCompatible)` and this function does not return always a useful value.

For normal account, it will be typically `DOMAIN_OR_MACHINE_NAME\YOUR_USER_NAME` (e.g. `My Machine\Adrien Ferrand`). But for the account `NT AUTHORITY\SYSTEM`, it will return `MACHINE_NAME\DOMAIN$`, which is a nonsense and makes fail the resolution of the actual SID of the account at the end of `_get_current_user()`.

This PR fixes this behavior by using an explicit construction of the account name that works both for normal users and `SYSTEM`.

* Use a different way to resolve current user account, that works both for normal users and SYSTEM.

* Add a comment to run Certbot under NT AUTHORITY\SYSTEM

7 days agoRemove python2 and certbot-auto references in how to set up a Certbot build environme...
Adrien Ferrand [Tue, 12 Nov 2019 21:52:44 +0000 (22:52 +0100)]
Remove python2 and certbot-auto references in how to set up a Certbot build environment. (#7549)

Fixes #7548.

This PR udpdates installation instructions to get rid of python2 and certbot-auto in the how-to explaining the Certbot development environment setup.

Instead, Python 3 is used, and appropriate instructions for APT and RPM based distributions are provided.

8 days agoMove constants.py to _internal (#7534)
ohemorange [Mon, 11 Nov 2019 23:41:40 +0000 (15:41 -0800)]
Move constants.py to _internal (#7534)

* Don't call core constants from nginx plugin

* Move constants.py to _internal/

* Move ENHANCEMENTS from now-internal constants to public plugins.enhancements

* Update display.enhancements.ask from its 2015 comment

8 days agoMove items in certbot/plugins to _internal (#7533)
ohemorange [Mon, 11 Nov 2019 23:14:18 +0000 (15:14 -0800)]
Move items in certbot/plugins to _internal (#7533)

* Create and initialize _internal/plugins

* Move plugins/manual.py to _internal/

* Move plugins/disco.py to _internal/

* Move plugins/selection.py to _internal/

* Move plugins/webroot.py to _internal/

* Move plugins/null.py to _internal/

* Move plugins/standalone.py to _internal/

* add missed internalization

* shorten line

* Update outdated init comment

8 days agoRemove TLS-SNI objects in ACME (#7535)
Brad Warren [Mon, 11 Nov 2019 22:04:26 +0000 (14:04 -0800)]
Remove TLS-SNI objects in ACME (#7535)

* fixes #7214

* update changelog

* remove unused import

9 days agoMove eff.py to _internal (#7530)
ohemorange [Mon, 11 Nov 2019 18:20:05 +0000 (10:20 -0800)]
Move eff.py to _internal (#7530)

* Move eff.py to _internal

* missed a few certbot.effs in tests

* remove sublime autocompletion

* fix messy scripting

9 days agoMove items in certbot/display to _internal (#7532)
ohemorange [Mon, 11 Nov 2019 18:19:28 +0000 (10:19 -0800)]
Move items in certbot/display to _internal (#7532)

* Move display/completer.py to _internal/

* Move display/dummy_readline.py to _internal/

* Move display/enhancements.py to _internal/

* Create __init__.py in _internal/display

9 days agoMove log.py to _internal (#7531)
ohemorange [Mon, 11 Nov 2019 18:17:16 +0000 (10:17 -0800)]
Move log.py to _internal (#7531)

Part of #5775. Methodology similar to #7528, but slightly more manual.

11 days agoMake uncomplicated modules private (#7528)
ohemorange [Sat, 9 Nov 2019 00:19:21 +0000 (16:19 -0800)]
Make uncomplicated modules private (#7528)

* Create _internal package for Certbot's non-public modules

* Move account.py to _internal

* Move auth_handler.py to _internal

* Move cert_manager.py to _internal

* Move client.py to _internal

* Move error_handler.py to _internal

* Move lock.py to _internal

* Move main.py to _internal

* Move notify.py to _internal

* Move ocsp.py to _internal

* Move renewal.py to _internal

* Move reporter.py to _internal

* Move storage.py to _internal

* Move updater.py to _internal

* update apache and nginx oldest requirements

* Keep the lock file as certbot.lock

* nginx oldest tests still need to rely on newer certbot

* python doesn't have good dependency resolution, so specify the transitive dependency

* update required minimum versions in nginx setup.py

11 days agoremove get_systemd_os_info (#7526)
Brad Warren [Fri, 8 Nov 2019 19:11:03 +0000 (11:11 -0800)]
remove get_systemd_os_info (#7526)

Fixes #7500.

12 days agoRemove tls sni common (#7527)
Brad Warren [Fri, 8 Nov 2019 14:11:09 +0000 (06:11 -0800)]
Remove tls sni common (#7527)

* fixes #7478

* add changelog entry

13 days agodns-rfc2136: use TCP to query SOA records (#7503)
Shell Chen [Thu, 7 Nov 2019 17:37:12 +0000 (01:37 +0800)]
dns-rfc2136: use TCP to query SOA records (#7503)

* Use tcp query on dns-rfc2136 plugin

To improve network robust; fixes #7502.

* Update CHANGELOG.md

* Fix dns-rfc2136 test cases

* Add UDP fallback to dns-rfc2136

13 days agoMerge pull request #7515 from certbot/candidate-0.40.1
ohemorange [Wed, 6 Nov 2019 20:01:59 +0000 (12:01 -0800)]
Merge pull request #7515 from certbot/candidate-0.40.1

Candidate 0.40.1

13 days agoMerge branch 'master' into candidate-0.40.1 7515/head
ohemorange [Wed, 6 Nov 2019 19:47:28 +0000 (11:47 -0800)]
Merge branch 'master' into candidate-0.40.1

13 days agoDeprecate config_changes (#7469)
Amjad Mashaal [Wed, 6 Nov 2019 19:29:07 +0000 (21:29 +0200)]
Deprecate config_changes (#7469)

Closes #7454

* Deprecate config_changes

* Error on config_changes

* Fix tests for main.py

* Fix CHANGELOG entry

* Remove remnants of config_changes

* Fix CHANGELOG and add removed functions

2 weeks agoMatch our Travis logic in Azure. (#7514)
Brad Warren [Wed, 6 Nov 2019 18:45:17 +0000 (10:45 -0800)]
Match our Travis logic in Azure. (#7514)

In Travis, the full test suite doesn't run on PRs for point release branches, just on commits for them. I think this behavior makes sense because what we actually want to test before a point release is the exact commit we want to release after any squashing/merging has been done. This PR modifies Azure to match this behavior.

After this PR lands, I need to update the tests required to pass on GitHub.

2 weeks agoPin all build dependencies for the Windows installer (#7504)
Adrien Ferrand [Wed, 6 Nov 2019 18:17:53 +0000 (19:17 +0100)]
Pin all build dependencies for the Windows installer (#7504)

This PR uses pipstrap to bootstrap the venv used to build Windows installers. This effectively pin all build dependencies, since pynsist is already installed through pip_install.py script.

* Use pipstrap

* Pin also NSIS version

2 weeks agoMerge branch 'master' into candidate-0.40.1 candidate-0.40.1
Brad Warren [Wed, 6 Nov 2019 03:49:27 +0000 (19:49 -0800)]
Merge branch 'master' into candidate-0.40.1

2 weeks agoBump version to 1.0.0
Erica Portnoy [Wed, 6 Nov 2019 02:32:22 +0000 (18:32 -0800)]
Bump version to 1.0.0

2 weeks agoAdd contents to CHANGELOG.md for next version
Erica Portnoy [Wed, 6 Nov 2019 02:32:22 +0000 (18:32 -0800)]
Add contents to CHANGELOG.md for next version

2 weeks agoRelease 0.40.1 0.40.x-1 7516/head v0.40.1
Erica Portnoy [Wed, 6 Nov 2019 02:32:20 +0000 (18:32 -0800)]
Release 0.40.1

2 weeks agoUpdate changelog for 0.40.1 release
Erica Portnoy [Wed, 6 Nov 2019 02:24:52 +0000 (18:24 -0800)]
Update changelog for 0.40.1 release

2 weeks agoAdd back Python 3.4 support (#7510) (#7511)
Brad Warren [Wed, 6 Nov 2019 01:11:23 +0000 (17:11 -0800)]
Add back Python 3.4 support (#7510) (#7511)

* Revert "Deprecation warnings for Python 3.4 (#7378)"

This reverts commit 6fcdfb0e5006be85500fad67a5a67b47befedb2a.

* Revert "Migrate certbot-auto users on CentOS 6 to Python 3.6 (#7268)"

This reverts commit e19b2e04c75b6df4e3f8a455700aa95fca79bcc3.

* add changelog entry

* keep mona in authors

(cherry picked from commit 9b848b1d65783000a13ef3f94ac5fe0e8c3879e7)

2 weeks agoAdd back Python 3.4 support (#7510)
Brad Warren [Wed, 6 Nov 2019 00:45:08 +0000 (16:45 -0800)]
Add back Python 3.4 support (#7510)

* Revert "Deprecation warnings for Python 3.4 (#7378)"

This reverts commit 6fcdfb0e5006be85500fad67a5a67b47befedb2a.

* Revert "Migrate certbot-auto users on CentOS 6 to Python 3.6 (#7268)"

This reverts commit e19b2e04c75b6df4e3f8a455700aa95fca79bcc3.

* add changelog entry

* keep mona in authors

2 weeks agoMerge pull request #7505 from certbot/candidate-0.40.0
Brad Warren [Tue, 5 Nov 2019 21:55:40 +0000 (13:55 -0800)]
Merge pull request #7505 from certbot/candidate-0.40.0

Release 0.40.0

2 weeks agoBump version to 0.41.0 7505/head
Erica Portnoy [Tue, 5 Nov 2019 20:53:16 +0000 (12:53 -0800)]
Bump version to 0.41.0

2 weeks agoAdd contents to CHANGELOG.md for next version
Erica Portnoy [Tue, 5 Nov 2019 20:53:16 +0000 (12:53 -0800)]
Add contents to CHANGELOG.md for next version

2 weeks agoRelease 0.40.0 v0.40.0
Erica Portnoy [Tue, 5 Nov 2019 20:52:26 +0000 (12:52 -0800)]
Release 0.40.0

2 weeks agoUpdate changelog for 0.40.0 release
Erica Portnoy [Tue, 5 Nov 2019 20:35:33 +0000 (12:35 -0800)]
Update changelog for 0.40.0 release

2 weeks agoDon't use --agree-dev-preview in tests. (#7501) test-0.40.0
Brad Warren [Tue, 5 Nov 2019 16:34:46 +0000 (08:34 -0800)]
Don't use --agree-dev-preview in tests. (#7501)

2 weeks agoBuild Windows installers with pinned dependencies (#7498)
Adrien Ferrand [Mon, 4 Nov 2019 22:20:42 +0000 (23:20 +0100)]
Build Windows installers with pinned dependencies (#7498)

* Consume constraints file

* Independent pywin32 dependency definition in setup.py and construct.py

2 weeks agoUse fresh authorizations in dry runs (#7442)
alexzorin [Mon, 4 Nov 2019 20:23:25 +0000 (07:23 +1100)]
Use fresh authorizations in dry runs (#7442)

* acme: re-populate uri in deactivate_authorization

* Use fresh authorizations in dry runs

--dry-run now deactivates 'valid' authorizations if it encounters them
when creating a new order.

Resolves #5116.

* remove unused code

* typo in local-oldest-requirements

* better error handling

* certbot-ci: AUTHREUSE to 100 + unskip dry-run test

* improve test coverage for error cases

* restore newline to local-oldest-requirements.txt

2 weeks agoDropped deprecated flags from commands (#7482)
Brandon Moore [Mon, 4 Nov 2019 17:50:57 +0000 (12:50 -0500)]
Dropped deprecated flags from commands (#7482)

This pull request addresses #7451 by removing the deprecated flags.

* Dropped deprecated flags from commands

* Updated changelog for dropped flags and deleted outdated tests

* removed init-script part of apache test

2 weeks agoClarify when the changelog should be modified (#7491)
Brad Warren [Fri, 1 Nov 2019 23:40:31 +0000 (16:40 -0700)]
Clarify when the changelog should be modified (#7491)

2 weeks agoDescribe distributed Certbot components. (#7493)
Brad Warren [Fri, 1 Nov 2019 22:05:41 +0000 (15:05 -0700)]
Describe distributed Certbot components. (#7493)

2 weeks agoDeprecate more code related to TLS-SNI-01 (#7483)
Brad Warren [Fri, 1 Nov 2019 22:00:22 +0000 (15:00 -0700)]
Deprecate more code related to TLS-SNI-01 (#7483)

I tried to finish up #7214 by removing the code in acme but we can't really do that until #7478 is resolved which we cannot do until we release 0.40.0.

Since we have to wait, this PR adds deprecation warnings for code that uses the TLS-SNI-01 code or was only used by the long deprecated TLS-SNI-01 code.

I'd like this PR to land before our next release.

* Deprecate more code related to TLS-SNI-01.

* Assert about warning message.

2 weeks agoRemove changelog entry about unpackaged scripts. (#7490)
Brad Warren [Fri, 1 Nov 2019 20:59:17 +0000 (13:59 -0700)]
Remove changelog entry about unpackaged scripts. (#7490)

We don't package rebuild_dependencies.py so I don't think we need to mention changes to it in our changelog which is primarily read by users and packagers.

2 weeks agoUse distro library for all OS version detection (#7467)
Joona Hoikkala [Fri, 1 Nov 2019 17:51:21 +0000 (19:51 +0200)]
Use distro library for all OS version detection (#7467)

This pull request ensures that we use distro package in all the distribution version detection. It also replaces the custom systemd /etc/os-release parsing and adds a few version fingerprints to Apache override selection.

Fixes: #7405

* Revert "Try to use platform.linux_distribution() before distro equivalent (#7403)"

This reverts commit ca3077d0347aae12163a43bf74a0c8321284367e.

* Use distro for all os detection code

* Address review comments

* Add changelog entry

* Added tests

* Fix tests to return a consistent os name

* Do not crash on non-linux systems

* Minor fixes to distro compatibility checks

* Make the tests OS independent

* Update certbot/util.py

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Skip linux specific tests on other platforms

* Test fixes

* Better test state handling

* Lower the coverage target for Windows tests

2 weeks agoDon't use acme.test_util outside of acme. (#7484)
Brad Warren [Fri, 1 Nov 2019 17:06:32 +0000 (10:06 -0700)]
Don't use acme.test_util outside of acme. (#7484)

`certbot-compatibility-test` is using code in `acme` that I proposed making private and not trivially importable in https://github.com/certbot/certbot/issues/5775.

To fix it, I switched to using Certbot's test utilities which I proposed keeping public to help with writing tests for plugins. When doing this I had to change the name of the key because `rsa1024_key.pem` doesn't exist in Certbot.

I also deleted the keys in `certbot-compatibility-test`'s testdata because because they are unused.

2 weeks agoDon't use dev version of 3.8. (#7485)
Brad Warren [Fri, 1 Nov 2019 17:06:10 +0000 (10:06 -0700)]
Don't use dev version of 3.8. (#7485)

Now that Python 3.8 is out, we don't need to use the development version.

2 weeks agoFix invalid escape sequence \. rebuild_dependencies.py (#7486)
Mickaël Schoentgen [Fri, 1 Nov 2019 16:27:18 +0000 (17:27 +0100)]
Fix invalid escape sequence \. rebuild_dependencies.py (#7486)

Signed-off-by: Mickaël Schoentgen <contact@tiger-222.fr>
2 weeks agoRemove references to TLS-SNI-01 outside of ACME (#7479)
Brad Warren [Thu, 31 Oct 2019 17:17:29 +0000 (10:17 -0700)]
Remove references to TLS-SNI-01 outside of ACME (#7479)

This is a big part of #7214. It removes all references to TLS-SNI-01 outside of acme (and pytest.ini). Those changes will come in a subsequent PR. I thought this one was getting big enough.

* Remove references to TLS-SNI-01 in Apache plugin

* Remove references to TLS-SNI-01 from certbot-nginx

* Remove references to TLS-SNI from Certbot.

* Remove TLS-SNI reference from docs

* add certbot changelog

* Clarify test behavior

2 weeks agoPolish changelog (#7476)
Brad Warren [Thu, 31 Oct 2019 00:07:36 +0000 (17:07 -0700)]
Polish changelog (#7476)

I wanted to polish the changelog a bit. Changes made are:

* We don't ship our test farm tests so including info about them in our changelog seems unnecessary.
* I combined and expanded the info about the deprecation of Python 3.4.

2 weeks agoDeprecate certbot.plugins.common.TLSSNI01 (#7477)
Brad Warren [Wed, 30 Oct 2019 22:19:38 +0000 (15:19 -0700)]
Deprecate certbot.plugins.common.TLSSNI01 (#7477)

While working on #7214, I noticed that certbot.plugins.common.TLSSNI01 wasn't printing a deprecation warning and it was still being used in our Apache plugin. This PR fixes that.

2 weeks agochange random sleep to use fractional seconds (#7473)
James Renken [Wed, 30 Oct 2019 19:06:31 +0000 (14:06 -0500)]
change random sleep to use fractional seconds (#7473)

If we use fractional instead of whole seconds for the random sleep before renewing, it will reduce bunching of requests to Let's Encrypt's API.

3 weeks agoDeprecation warnings for Python 3.4 (#7378)
sydneyli [Wed, 30 Oct 2019 17:57:46 +0000 (10:57 -0700)]
Deprecation warnings for Python 3.4 (#7378)

Fixes #7367

* Deprecation warnings for Python 3.4 users

* CHANGELOG.md and AUTHORS.md

* double equals typo

3 weeks agoMigrate certbot-auto users on CentOS 6 to Python 3.6 (#7268)
Adrien Ferrand [Wed, 30 Oct 2019 17:39:45 +0000 (18:39 +0100)]
Migrate certbot-auto users on CentOS 6 to Python 3.6 (#7268)

Fixes #7007

Python 3.4 is [EOL](https://www.python.org/dev/peps/pep-0429/), and only Python 3.x version available for CentOS 6 through EPEL is this version, and so is used by `certbot-auto`, the only official way to install Certbot on this platform.

This unpleasant situation becomes a little more uncomfortable, considering that the newest `pip` version (19.2) [just dropped Python 3.4 support](https://github.com/pypa/pip/issues/6685) and will refuse to start on this Python version. We can expect a lot of dependencies to follow this path now.

One direct result of this situation is that a fix to support correctly the ARM platforms requires to upgrade `pip` to 19.2 for `certbot-auto`. So this is not possible right now.

Then, let's upgrade Certbot instances on CentOS 6 to a supported version of Python 3.

This PR proposes a new bootstrap approach for CentOS 6 platform, `BootstrapRpmPython3Legacy`, that will install Python 3.6 from [SCL](https://www.softwarecollections.org) (the latest one available for now on CentOS 6). In term of Python 3 specific bootstrap methods, I take the occasion here to completely separate the bootstrap of CentOS 6 as a legacy system, from the RPM-based newest systems (like Fedora 29+) that are simply dropping support for Python 2.x. This is in prevision of future migration for all systems on Python 3.x, that is a different problematic than supporting old systems.

* Add logic

* Rebuilt letsencrypt-auto

* Fix logic

* Focus on specific packages

* Maintain PATH for further invocations of letsencrypt-auto after bootstrap.

* Various corrections

* Fix farm test for RHEL6

* Working centos6 letsencrypt-auto self tests

* Fix test_sdist for CentOS 6

* Corrections

* Work in progress

* Working configuration

* Fix typo

* Remove EPEL. Add a test.

* Update letsencrypt-auto-source/letsencrypt-auto.template

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Improvements after review

* Improvements

* Add a comment

* Add a test

* Update a test

* Corrections

* Update function return

* Work in progress

* Correct behavior on oracle linux 6.

* Corrections

* Rebuild script

* Add letsencrypt-auto tests for oraclelinux6

* Update tox.ini

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update letsencrypt-auto-source/letsencrypt-auto

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update letsencrypt-auto-source/tests/oraclelinux6_tests.sh

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update letsencrypt-auto-source/letsencrypt-auto.template

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update letsencrypt-auto-source/letsencrypt-auto

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update letsencrypt-auto-source/letsencrypt-auto

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update letsencrypt-auto-source/letsencrypt-auto.template

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update letsencrypt-auto-source/tests/oraclelinux6_tests.sh

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Remove specific code for scientific linux

* Change some variables names

* Update letsencrypt-auto-source/tests/oraclelinux6_tests.sh

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

* Fix tests

* Add a comment

* Update message

* Fix test message

* Update letsencrypt-auto-source/letsencrypt-auto.template

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update letsencrypt-auto-source/letsencrypt-auto

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update letsencrypt-auto-source/letsencrypt-auto

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

* More focused assertion

* Add back a test

* Update script

* Update letsencrypt-auto-source/letsencrypt-auto.template

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update letsencrypt-auto-source/letsencrypt-auto.template

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Check quiet mode

* Add changelog

* Update letsencrypt-auto-source/tests/oraclelinux6_tests.sh

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
3 weeks agoCreate a release pipeline on Azure for Windows installer (#7441)
Adrien Ferrand [Wed, 30 Oct 2019 17:19:10 +0000 (18:19 +0100)]
Create a release pipeline on Azure for Windows installer (#7441)

This PR creates a pipeline triggered on tag push matching v0.* (eg. v0.40.0).

Once triggered, this pipeline will build the windows installer, and run integration tests on it, like for the pipeline run nightly.

I also add a simple script to extract from CHANGELOG.md file to extract the relevant part to put it in the body of the GitHub release. I believe it makes things nicer.

* Create release pipeline

* Relax condition on tags

* Put beta keyword

* Update job name

* Fix release pipeline

3 weeks agoRemove skip_unless cruft (#7410)
Brad Warren [Thu, 24 Oct 2019 12:46:55 +0000 (05:46 -0700)]
Remove skip_unless cruft (#7410)

* Remove skip_unless cruft.

* remove unused import

3 weeks agoRemove AppVeyor. (#7440)
Brad Warren [Thu, 24 Oct 2019 10:48:01 +0000 (03:48 -0700)]
Remove AppVeyor. (#7440)

4 weeks agoUpdate pluggy pinning. (#7459)
Brad Warren [Wed, 23 Oct 2019 08:50:18 +0000 (01:50 -0700)]
Update pluggy pinning. (#7459)

4 weeks agoRun at 4:00AM UTC not 0:04AM UTC. (#7460)
Brad Warren [Mon, 21 Oct 2019 21:42:51 +0000 (14:42 -0700)]
Run at 4:00AM UTC not 0:04AM UTC. (#7460)

Fixes [cron syntax](https://docs.microsoft.com/en-us/azure/devops/pipelines/build/triggers?view=azure-devops&tabs=yaml#supported-cron-syntax) to get the behavior I had in mind in https://github.com/certbot/certbot/pull/7377#discussion_r331295897.

4 weeks agoRequire newer versions of oauth2client (#7458)
Brad Warren [Mon, 21 Oct 2019 20:54:17 +0000 (13:54 -0700)]
Require newer versions of oauth2client (#7458)

Over the weekend, nightly tests on Windows failed for certbot-dns-google: https://dev.azure.com/certbot/web/build.aspx?pcguid=74ef9c03-9faf-405b-9d03-9acf8c43e8d6&builduri=vstfs%3a%2f%2f%2fBuild%2fBuild%2f72

The error occurred inside `oauth2client`'s locking code and the failure seems spurious as it did not reproduce this morning: https://dev.azure.com/certbot/certbot/_build/results?buildId=73

I could not find a relevant changelog entry in `oauth2client` saying they've fixed the problem, but the problematic code no longer exists in `oauth2client>=4.0`. This PR updates our minimum dependency required in an attempt to avoid spurious failures for us in the future. The only downside I am aware of is it'll make it harder for certbot-dns-google to be packaged in Debian Old Stable or Ubuntu 16.04, but I don't expect either of those things to happen anytime soon.

* bump oauth2client dep

* Update dev_constraints.txt.

* Add changelog entry for packagers.

4 weeks agoRemove warning about rename. (#7453)
Brad Warren [Sat, 19 Oct 2019 06:09:08 +0000 (23:09 -0700)]
Remove warning about rename. (#7453)

4 weeks agoRun nightly on Azure even if no commits landed. (#7455)
Brad Warren [Sat, 19 Oct 2019 06:06:37 +0000 (23:06 -0700)]
Run nightly on Azure even if no commits landed. (#7455)

4 weeks agoClarify possible existence of /etc/letsencrypt/cli.ini (#7449)
Victor Shih [Fri, 18 Oct 2019 20:36:45 +0000 (13:36 -0700)]
Clarify possible existence of /etc/letsencrypt/cli.ini (#7449)

5 weeks agocli: allow --dry-run to be combined with --server (#7436)
alexzorin [Wed, 9 Oct 2019 22:09:25 +0000 (09:09 +1100)]
cli: allow --dry-run to be combined with --server (#7436)

The value of --server will now be respected, except when it is the
default value, in which case it will be changed to the staging server,
preserving Certbot's existing behavior.

5 weeks agoUpload coverage for integration tests (#7433)
Brad Warren [Wed, 9 Oct 2019 21:39:49 +0000 (14:39 -0700)]
Upload coverage for integration tests (#7433)

* Upload coverage for integration tests.

* Use in not containsValue.

6 weeks agoUpgrade to pywin32>=225 and fix unit tests (#7429)
Adrien Ferrand [Tue, 8 Oct 2019 23:17:08 +0000 (01:17 +0200)]
Upgrade to pywin32>=225 and fix unit tests (#7429)

Fixes #7426

6 weeks agoAdd final newlines to files. (#7432)
Brad Warren [Tue, 8 Oct 2019 23:16:04 +0000 (16:16 -0700)]
Add final newlines to files. (#7432)

More conventional and makes it nicer when doing things like running cat to quickly look at the file like I was doing when I noticed this.

6 weeks agoUse shared variable group (#7431)
Brad Warren [Tue, 8 Oct 2019 23:12:02 +0000 (16:12 -0700)]
Use shared variable group (#7431)

When setting up Azure Pipelines, I didn't like having to define codecov_token for each pipeline. This works around it by using a shared variable group.

You can see this working successfully at https://dev.azure.com/certbot/certbot/_build/results?buildId=3.

* Use certbot-common.

* update instructions

6 weeks agoCreate a new CI for Certbot on Windows using Azure Pipelines (#7377)
Adrien Ferrand [Tue, 8 Oct 2019 21:40:17 +0000 (23:40 +0200)]
Create a new CI for Certbot on Windows using Azure Pipelines (#7377)

This PR defines pipelines that can be run on Azure Pipelines. Currently there are two:
* `.azure-pipelines/main.yml` is the main one, executed on PRs for master, and pushes to master,
* `.azure-pipelines/advanced.yml` add installer testing on top of the main pipeline, and is executed for `test-*` branches, release branches, and nightly run for master.

These two pipelines covers all existing stuff done by AppVeyor currently, and so AppVeyor can be decommissioned once Azure Pipelines is operational.

You can see working pipeline in my fork:
* a PR for `master` (so using main pipeline): https://github.com/adferrand/certbot/pull/65
* a PR for `test-something` (so using advanced pipeline): https://github.com/adferrand/certbot/pull/66
* uploaded coverage from Azure Pipelines: https://codecov.io/gh/adferrand/certbot/commit/499aa2cbf25e1e0ab4c93ab64057db92dfec0fba/build

Once this PR is merged, we need to enable Azure Pipelines for Certbot. Instructions are written in `azure-pipelines/INSTALL.md`. This document also references all access rights required to Azure Pipelines onto GitHub to make the CI process work.

Future work for future PRs:
* create a CD pipeline for the releases that will push the installer to GitHub releases
* implement a solution to generate notification on IRC or Mattermost when a nightly build fails

* Define pipelines

* Update locations

* Update nightly

* Use x86

* Update nightly.yml for Azure Pipelines

* Run script

* Use script

* Update install

* Use local installation

* Register warnings

* Fix pywin32 loading

* Clean context

* Enable coverage publication

* Consume codecov token

* Document installation

* Update tool to upload coverage

* Prepare pipeline artifacts

* Update artifact ignore

* Protect against codecov failures

* Add a comment about codecov

* Add a comment on RW access asked by Azure

* Add instructions

* Rename pipeline file

* Update instructions

* Update .azure-pipelines/templates/tests-suite.yml

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Update .azure-pipelines/INSTALL.md

Co-Authored-By: Brad Warren <bmw@users.noreply.github.com>
* Modified scheduled pipeline

* Add comment

* Remove dynamic version-based installer name

6 weeks agoRemove --fast from the test farm tests (#7427)
Andrzej Górski [Tue, 8 Oct 2019 19:24:55 +0000 (21:24 +0200)]
Remove --fast from the test farm tests (#7427)

6 weeks agoAdd test farm tests for Debian 10 (#7421)
Brad Warren [Thu, 3 Oct 2019 22:08:24 +0000 (15:08 -0700)]
Add test farm tests for Debian 10 (#7421)

Fixes #7225.

I got the AMI ID from https://wiki.debian.org/Cloud/AmazonEC2Image/Buster.

You can see all test farm tests including test_tests.sh passing with these changes at https://travis-ci.com/certbot/certbot/builds/130318446.

6 weeks agoRemove unnecessary account ID match check. (#7416)
Jacob Hoffman-Andrews [Wed, 2 Oct 2019 21:44:25 +0000 (14:44 -0700)]
Remove unnecessary account ID match check. (#7416)

* Remove unnecessary account ID match check.

Right now the Account object calculates an ID using md5. This is
unnecessary and causes problems on FIPS systems that forbid md5. It's
just as good to pick a random series of bytes for the ID, since the ID
gets read out of renewal/foo.conf.

However, if we switched the algorithm right now, we could wind up
breaking forward compatibility / downgradeability, since older versions
would run into this check.

Removing this check now lays the ground to change the ID-calculation
algorithm in the future.

Related to #1948 and
https://github.com/certbot/certbot/pull/1013#issuecomment-149983479.

* Remove test.

* Remove unused import.

7 weeks agoMerge pull request #7415 from certbot/candidate-0.39.0
Brad Warren [Tue, 1 Oct 2019 20:34:47 +0000 (13:34 -0700)]
Merge pull request #7415 from certbot/candidate-0.39.0

Candidate 0.39.0

7 weeks agoBump version to 0.40.0 candidate-0.39.0 7415/head
Erica Portnoy [Tue, 1 Oct 2019 20:04:10 +0000 (13:04 -0700)]
Bump version to 0.40.0

7 weeks agoAdd contents to CHANGELOG.md for next version
Erica Portnoy [Tue, 1 Oct 2019 20:04:10 +0000 (13:04 -0700)]
Add contents to CHANGELOG.md for next version

7 weeks agoRelease 0.39.0 0.39.x v0.39.0
Erica Portnoy [Tue, 1 Oct 2019 20:04:08 +0000 (13:04 -0700)]
Release 0.39.0

7 weeks agoUpdate changelog for 0.39.0 release
Erica Portnoy [Tue, 1 Oct 2019 19:48:40 +0000 (12:48 -0700)]
Update changelog for 0.39.0 release

7 weeks agoKeep compatibility with IE11 in the Nginx plugin (#7414) test-0.39.0
Brad Warren [Tue, 1 Oct 2019 17:34:11 +0000 (10:34 -0700)]
Keep compatibility with IE11 in the Nginx plugin (#7414)

As discussed at https://github.com/mozilla/server-side-tls/issues/263, Mozilla's current intermediate recommendations drop support for some non-EOL'd versions of IE. [Their TLS recommendations were updated to suggest a couple possible workarounds for people who need this support](https://github.com/mozilla/server-side-tls/pull/264) and [April suggested that we make this change in Certbot](https://github.com/mozilla/server-side-tls/issues/263#issuecomment-537085728).

We know `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA` translates to `ECDHE-RSA-AES128-SHA` because [nginx uses the same cipher format as OpenSSL](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers) and the translation is shown in the table at https://github.com/mozilla/server-side-tls/blob/gh-pages/Cipher_Suites.mediawiki.

The risk of regressions making this change is low as we always had this ciphersuite enabled just a few releases ago: https://github.com/certbot/certbot/tree/v0.36.0/certbot-nginx/certbot_nginx

* Keep compatibility with IE11

* update changelog

7 weeks agoAdd CentOS 8 support to certbot-auto. (#7406)
Brad Warren [Mon, 30 Sep 2019 16:19:05 +0000 (09:19 -0700)]
Add CentOS 8 support to certbot-auto. (#7406)

Fixes #7396.

7 weeks agoRemove listing for broken icecast plugin. (#7408)
Brad Warren [Fri, 27 Sep 2019 19:47:12 +0000 (12:47 -0700)]
Remove listing for broken icecast plugin. (#7408)

The repo description for the [3rd party Icecast plugin](https://github.com/e00E/lets-encrypt-icecast) says that the plugin isn't currently working and the repository hasn't been updated since 2017. Since it seems broken and unmaintained, let's remove it from the list of third party plugins.

I would happily add it again to the list of third party plugins if people fix and maintain it.

7 weeks agoRemove listing for broken heroku plugin (#7409)
Brad Warren [Fri, 27 Sep 2019 19:46:56 +0000 (12:46 -0700)]
Remove listing for broken heroku plugin (#7409)

The README for the [3rd party heroku plugin](https://github.com/gboudreau/certbot-heroku) says it has been deprecated. Because of this, let's remove it from the list of third party plugins.

7 weeks agoTry to use platform.linux_distribution() before distro equivalent (#7403)
Joona Hoikkala [Fri, 27 Sep 2019 16:50:38 +0000 (19:50 +0300)]
Try to use platform.linux_distribution() before distro equivalent (#7403)

Try to primarily fall back to using `platform.linux_distribution()` if `/etc/os-release` isn't available. Only use `distro.linux_distribution()` on Python >= 3.8.

* Try to use platform.linux_distribution() before distro equivalent

* Fix tests for py38

* Added changelog entry

7 weeks agoFix to run with Apache on RHEL 6 (#7401)
Kenichi Maehashi [Thu, 26 Sep 2019 20:25:48 +0000 (05:25 +0900)]
Fix to run with Apache on RHEL 6 (#7401)

This PR fixes a regression in #7337 (0.38.0) that certbot cannot run with Apache on RHEL 6.

In RHEL 6, `distro.linux_distribution()` returns `RedHatEnterpriseServer`.

In RHEL 6:

```py
>>> import distro
>>> distro.linux_distribution()
(u'RedHatEnterpriseServer', u'6.10', u'Santiago')

>>> import platform
>>> platform.linux_distribution()
('Red Hat Enterprise Linux Server', '6.10', 'Santiago')
```

In RHEL 7:

```py
>>> import distro
>>> distro.linux_distribution()
('Red Hat Enterprise Linux Server', '7.6', 'Maipo')

>>> import platform
>>> platform.linux_distribution()
('Red Hat Enterprise Linux Server', '7.6', 'Maipo')
```

* fix to run with Apache on RHEL 6

* fix docs

8 weeks agoList support for Python 3.8 (#7392)
Brad Warren [Tue, 24 Sep 2019 18:38:38 +0000 (11:38 -0700)]
List support for Python 3.8 (#7392)

Fixes #7368.

When updating the changelog, I replaced the line about running tests on Python 3.8 because I personally think that support for Python 3.8 is the most relevant information for our users/packagers about our changes in this area.

* List support for Python 3.8.

* Update changelog.

8 weeks agoDon't send OCSP requests for expired certificates (#7387)
ohemorange [Tue, 24 Sep 2019 00:20:11 +0000 (20:20 -0400)]
Don't send OCSP requests for expired certificates (#7387)

Fixes #7152.

* don't check ocsp if cert is expired when getting cert information

* don't check ocsp if the cert is expired in ocsp_revoked

* update tests

* update changelog

* move pytz import to the top of the test file

8 weeks ago[Windows] Create a certbot renew scheduled task using the installer (#7371)
Adrien Ferrand [Mon, 23 Sep 2019 19:29:18 +0000 (21:29 +0200)]
[Windows] Create a certbot renew scheduled task using the installer (#7371)

This PR implements the item "register a scheduled task for certificate renewal" from the list of requirements described in #7365.

This PR adds required instructions in the NSIS installer for Certbot to create a task, named "Certbot Renew Task" in the Windows Scheduler. This task is run twice a day, to execute the command certbot renew and keep the certificates up-to-date.

Uninstalling Certbot will also remove this scheduled task.

* Implementation

* Corrections

* Update template.nsi

* Improve scripts

* Add a random delay of 12 hours

* Synchronize template against default one in pynsist 2.4

* Clean config of scheduled task

* Install only in AllUsers mode

* Add comments

* Remove the logic of single user install

2 months agoFix Windows sdist. (#7384)
Brad Warren [Fri, 20 Sep 2019 15:21:07 +0000 (08:21 -0700)]
Fix Windows sdist. (#7384)

2 months agoUse xenial globally (#7380)
Brad Warren [Tue, 17 Sep 2019 22:24:53 +0000 (15:24 -0700)]
Use xenial globally (#7380)

As described at https://github.com/certbot/certbot/pull/7372#discussion_r323592366, Travis is transitioning people to Xenial, but it seems this transition still may not be complete as some of our jobs ran on Trusty with all references to `dist` removed as seen at https://travis-ci.com/certbot/certbot/builds/127960999.

This PR sets `dist: xenial` globally and overrides it as needed for the oldest tests.

* Set xenial globally.

* Use trusty in all oldest tests.

2 months agoGet integration tests working on python 3.8 (#7372)
ohemorange [Mon, 16 Sep 2019 18:14:26 +0000 (14:14 -0400)]
Get integration tests working on python 3.8 (#7372)

* Get integration tests working on python 3.8

* Run unit tests on py38

* Update coveragercs to use coverage 4.5+ format

* remove line added to tox.ini

* update changelog

* xenial is the new travis default; no need to specify in .travis.yml

2 months ago[Windows|Linux] Forbid os.stat and os.fstat (#7325)
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>
2 months 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)

2 months 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

2 months 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

2 months 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>
2 months 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

2 months 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

2 months 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

2 months 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 months 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 months 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