Commit Graph
11412 Commits
Author SHA1 Message Date
Steffen NeumannandGitHub cf062f4c6d Fix ubuntu package name (#8654)
Since Ubuntu 18.04 there is python3-certbot-apache which should be the recommended version. 
The Debian package names should probably be updated accordingly.
2021-02-09 12:18:29 -08:00
Brad WarrenandGitHub 3d0dad8718 Remove dependency on six (#8650)
Fixes https://github.com/certbot/certbot/issues/8494.

I left the `six` dependency pinned in `tests/letstest/requirements.txt` and `tools/oldest_constraints.txt` because `six` is still a transitive dependency with our current pinnings.

The extra moving around of imports is due to me using `isort` to help me keep dependencies in sorted order after replacing imports of `six`.

* remove some six usage in acme

* remove six from acme

* remove six.add_metaclass usage

* fix six.moves.zip

* fix six.moves.builtins.open

* six.moves server fixes

* 's/six\.moves\.range/range/g'

* stop using six.moves.xrange

* fix urllib imports

* s/six\.binary_type/bytes/g

* s/six\.string_types/str/g

* 's/six\.text_type/str/g'

* fix six.iteritems usage

* fix itervalues usage

* switch from six.StringIO to io.StringIO

* remove six imports

* misc fixes

* stop using six.reload_module

* no six.PY2

* rip out six

* keep six pinned in oldest constraints

* fix log_test.py

* update changelog
2021-02-09 11:43:15 -08:00
sommersoftandGitHub edad9bd82b Fix Sphinx manpage Building (#8646)
* certbot docs: include & orphan 'man/cerbot.rst'; fixes manpage building

* acme docs: include & orphan 'man/jws.rst'; fixes manpage building
2021-02-09 11:29:31 +01:00
2a16aa16c3 Update cli.ini (#8603)
* Update cli.ini

Sharing back some extended examples I desired, did not find,  and derived on my own

* Update cli.ini

Alex,
ok - simplified as requested
Matt

* Update cli.ini

removed trailing quote on line 32

* Update certbot/examples/cli.ini

Co-authored-by: alexzorin <alex@zor.io>

* Update certbot/examples/cli.ini

Co-authored-by: alexzorin <alex@zor.io>

* Update certbot/examples/cli.ini

Co-authored-by: alexzorin <alex@zor.io>

* remove stray newline

Co-authored-by: alexzorin <alex@zor.io>
2021-02-07 18:19:49 +11:00
Brad WarrenandGitHub 711cc95dc4 Remove mock dependency (#8630)
Fixes https://github.com/certbot/certbot/issues/7913.

I only added the deprecation warning to `certbot.tests.util` because that's the only place where I think someone could be using the `mock` module through our API.

* remove external mock from acme

* update Certbot's mock usage

* remove mock dependency in plugins

* remove external mock from compatibility test

* add changelog entry
2021-02-05 15:51:18 -08:00
Brad WarrenandGitHub c2ee0d2938 Remove requests[security] dependency (#8626)
Fixes https://github.com/certbot/certbot/issues/7901.

* stop using requests[security]

* add changelog entry

* remove unused import
2021-02-05 15:33:45 -08:00
Brad WarrenandGitHub c668172ef0 merge dev and dev3 (#8639) 2021-02-04 21:31:47 +11:00
Brad WarrenandGitHub 666ee35e29 remove crufty pytest warning (#8638) 2021-02-04 21:04:03 +11:00
Brad WarrenandGitHub 13af3f7ec2 Cleanup venv scripts (#8629)
Fixes https://github.com/certbot/certbot/issues/8387.

* update _venv_common.py

* delete venv.py scripts

* rename venv script

* update relevant venv3 references

* remove set_python_envvars
2021-02-03 12:03:09 -08:00
Brad WarrenandGitHub 5ad0c254ca Merge pull request #8624 from certbot/external-mock
Fixes #8616.

Add tests with external mock
2021-02-03 12:02:43 -08:00
Brad WarrenandGitHub 236062c2d2 Merge pull request #8632 from certbot/candidate-1.12.0
Release 1.12.0
2021-02-02 13:11:27 -08:00
Erica Portnoy 2bcd8c59db Bump version to 1.13.0 2021-02-02 11:06:48 -08:00
Erica Portnoy 57cba3690d Add contents to certbot/CHANGELOG.md for next version 2021-02-02 11:06:47 -08:00
Erica Portnoy 786a130b7d Release 1.12.0 v1.12.0 2021-02-02 11:06:40 -08:00
Erica Portnoy df866b907b Update changelog for 1.12.0 release 2021-02-02 10:58:41 -08:00
Brad WarrenandGitHub f0b32783f0 Start disabling certbot-auto upgrades (#8623)
* add amazon linux to auto targets

* disable updates outside of debian and rhel

* test certbot-auto with disabled upgrades

* try new approach to testing

* remove bad space

* tweak error text

* add changelog entry

* fix bad certbot-auto commit

* test new error text

* update changelog

* update error text
2021-02-01 13:11:04 -08:00
Brad Warren 534af33a50 add external-mock tests to azure config 2021-01-29 15:32:04 -08:00
Brad Warren 2e33aec8a8 add tests with external mock library 2021-01-29 15:31:11 -08:00
ohemorangeandGitHub bdfb9f19c4 Remove deprecated options as early as possible using an explicit list (#8617)
* Remove deprecated options as early as possible using an explicit list

* add deprecated options to cli init import list

* use correct dict comprehension syntax for py3

* lint

* add test for renewal reconstitution code

* add test to ensure we're not saving deprecated values

* comment code
2021-01-28 12:34:50 -08:00
Brad WarrenandGitHub b4e955a60e Switch away from ubuntu-latest (#8606)
I noticed warnings on Azure like [this](https://dev.azure.com/certbot/certbot/_build/results?buildId=3311&view=logs&j=d74e04fe-9740-597d-e9fa-1d0400037dfd) which say:

> ##[warning]Ubuntu-latest pipelines will use Ubuntu-20.04 soon. For more details, see https://github.com/actions/virtual-environments/issues/1816

I was worried about us suddenly switching to Ubuntu 20.04 and things breaking so I tested that `ubuntu-20.04` works and am opening this PR to switch things over explicitly now. I'd rater have our VM images pinned to specific versions than a generic version specification like `latest` which might see an upgrade and break our tests unexpectedly.

I ran the notification code on Ubuntu 20.04 at https://dev.azure.com/certbot/certbot/_build/results?buildId=3315&view=results and you can see the notification at https://opensource.eff.org/eff-open-source/pl/ojjhde5j4jyw7dcurd5zfduymr.
2021-01-25 15:20:51 -08:00
Adrien FerrandandGitHub 7399807ff2 Drop Python 2 support (#8591)
Fixes #8389 #8584.

This PR makes the necessary modifications to officially drop Python 2 support in the Certbot project.

I did not remove the specific Python 2 compatibility branches that has been added in various places in the codebase, to reduce the size of this PR and this will be done in a future one

* Update classifiers and python_requires in setup.py

* Remove warnings about Python 2 deprecation

* Remove Azure jobs on Python 2.7

* Remove references to python 2 in documentation

* Pin dnspython to 2.1.0

* Update changelog

* Remove warning ignore
2021-01-25 15:07:43 -08:00
Brad WarrenandGitHub 00235d3807 Switch oldest tests to Python 3 (#8590)
Fixes https://github.com/certbot/certbot/issues/8580.

With this PR, it should now be possible to run the oldest tests natively on Linux, at least when using an older version of Python 3, which hasn't been possible in a long time. Unfortunately, this isn't possible on macOS which I opened https://github.com/certbot/certbot/issues/8589 to track.

You can see the full test suite running with these changes at https://dev.azure.com/certbot/certbot/_build/results?buildId=3283&view=results.

I took the version numbers for the packages I updated by searching for the oldest version of the dependency I think we should try and support based on the updated comments at the top of `oldest_constraints.txt`. While kind of annoying, I think it'd be a good idea for the reviewer to double check that I didn't make a mistake with the versions I used here.

To find these versions, I used https://packages.ubuntu.com, https://packages.debian.org, and a CentOS 7 Docker image with EPEL 7 installed. For the latter, not all packages are available in Python 3 yet (which is something Certbot's EPEL package maintainers are working on) and in that case I didn't worry about the system because I think they can/will package the newest version available. If they end up hitting any issues here when trying to package Certbot on Python 3, we can always work with them to fix it.

* remove py27 from oldest name

* update min cryptography version

* remove run_oldest_tests.sh

* upgrade setuptools and pyopenssl

* update cffi, pyparsing, and idna

* expand oldest_constraints comments

* clarify oldest comment

* update min configobj version

* update min parsedatetime version

* quote tox env name

* use Python 3.6 in the oldest tests

* use Python 3.6 for oldest integration tests

* properly pin asn1crypto

* update min six version

* set basepython for a nicer error message

* remove outdated python 2 oldest constraints
2021-01-25 12:59:14 -08:00
Brad WarrenandGitHub adb7e5e62f remove unused pyicu pinning (#8607) 2021-01-16 07:13:59 +11:00
261b5a76d8 Minor fix to logging message (#8605)
* Minor fix to logging message

the `if socket_kwargs` will always evaluate to `true`.

* Update acme/acme/crypto_util.py

Co-authored-by: alexzorin <alex@zor.io>
2021-01-14 20:39:42 +11:00
Aaron GableandGitHub 2fca48caaa --preferred-chain: only match root name (#8596)
* --preferred-chain: only match root name

Currently, when certbot is given the `--preferred-chain='Some Name'`
flag, it iterates through all alternate chains offered by the ACME
server until it finds any certificate which has `'Some Name'` as its
Issuer Common Name. Unfortunately, this means that if the desired
alternate chain is a strict subset of any earlier chain (e.g. the
default chain is 'EE <-- Int <-- Root1 <-- Root2', but the desired
chain is 'EE <-- Int <-- Root1'), there is no name which can be
provided by the user which will allow the client to select the desired
chain.

This change makes it so that the `find_chain_with_issuer` logic only
cares about the Issuer Common Name found in the last certificate in
each chain. In the example above, the user would then be able to get
their desired chain by specifying `--preferred-chain='Root1'`: although
that name appears in the default chain, it does not appear in the
highest certificate of that chain.

This change is technically backwards-incompatible. However, the only
advice that has been given to users of certbot (and the only usecase
that we believe has existed so far) involved setting the flag to a
value that is the name of a root, not an intermediate, so we don't
expect any real-world configurations or use-cases to be broken.

Fixes #8577

* Update interfaces.py
2021-01-14 12:12:48 +11:00
Adrien FerrandandGitHub c0917a0302 Use os.path.normcase to have Windows compatible challenge paths on Windows (#8599)
* Use os.path.normcase to have Windows compatible challenge paths on Windows.

* Add integration test and fix lint
2021-01-13 14:38:57 -08:00
alexzorinandGitHub 13d4a99251 test: certbot-ci crash due to no p521 on boulder (#8602)
* test: certbot-ci crash due to no p521 on boulder

The bugfix in #8598 added an integration test to request a certificate
for an EC P-521 key, which is unsupported when ACME_SERVER=boulder,
failing our nightly integration tests.

* add an integration test for all EC curves
2021-01-12 16:08:32 -08:00
Brad WarrenandGitHub b9de48e93e Always sign certbot-auto with a yubikey (#8600)
* always sign certbot-auto with the yubikey

* remove tools/offline-sigrequest.sh
2021-01-12 13:45:26 -08:00
Brad WarrenandGitHub 7a02deeeba Modify release script to support yubikey sig (#8574)
Using `tools/offline-sigrequest.sh` is annoying. A while ago I looked into how we could use our yubikeys for our Windows code signing signatures and in the process of doing that learned how to use them for the certbot-auto signature. The certbot-auto signature won't be needed once https://github.com/certbot/certbot/issues/8526 is resolved and we've implemented that plan which will hopefully be in 2-3 months, but despite that, doing this still felt worth it to me.

The script still defaults to using `tools/offline-sign.sh`, but you can set an environment variable to use the yubikey instead. I tested both branches here and it worked.
2021-01-11 15:41:55 -08:00
Daniel AlmasiandGitHub 42f20455cd Fix EC curve name typo in crypto_util (#8598)
* Fix EC curve name typo in crypto_util

Fix typo of secp521r1 in crypto util module.
- secp521r1 is to be supported by certbot, but a typo of "SECP521R1" in the input validation section of the make_key function results in an error being thrown

* Add myself to authors.md 

Add myself to authors.md ^^

* Add test for secp521r1 key generation

Add test for secp521r1 key generation to cli-tests
2021-01-11 13:40:12 -08:00
Antonio LarrosaandGitHub 434ca1985f Change the SUSE override to use apachectl (#8592)
For some time, SUSE distributions have had both an apachectl
executable and an apache2ctl compat symlink so both could be used
but apachectl is preferred since that's the official upstream name.
This is currently the case in SLE 15 SP2 and openSUSE Leap 15.2
(and every release since SLE 12 SP1)

OTOH, openSUSE Tumbleweed removed the apache2ctl compat symlink
some weeks ago and both SLE/Leap will follow in one of the next
releases so it's better to change certbot to use the official name,
apachectl.
2021-01-08 09:49:21 -08:00
Brad WarrenandGitHub 4a9748ace5 Add matching route53 readme (#8583)
Building on https://github.com/certbot/certbot/pull/8581, our other DNS plugins have a simple `README.rst` file and this PR adds a matching one for the route53 plugin.
2021-01-07 11:30:52 -08:00
sommersoftandGitHub fb8cd063eb Automatically Catch Sphinx Errors (#8530)
* clean up some Sphinx warnings

* first attempt at a doc-test pipeline job

* fix formatting

* fix test name

* set env for bash

* try bash vs script

* maybe it didn't like me setting 'PATH'...derp

* drop use of venv

* sphinx-build isn't a py script

* try activating venv

* docs: remove unused html_static tags

* clean up final sphinx build errors for certbot

* clean up final sphinx build errors for acme

* better names for docs pipeline

* fix spelling

* add docs_extras to setup.py

* remove temp doc-testing pipeline; add template to main.yml

* rearrange pipeline execution; run sphinx builds in one job

* add documentation note to compat.os

* add uninstall.rst as a sub-toctree to avoid build error
2021-01-07 20:26:59 +01:00
Brad WarrenandGitHub e602736bda remove route53 readme (#8581) 2021-01-07 08:08:15 +01:00
ccde1eef64 Enable Python 3.8 for Certbot on Windows (#8465)
Now that we have a new pipstrap script with recent version of pip, dependencies for Windows can be resolved correctly on Python 3.8.

This PR enables tests on Python 3.8, and package Certbot for Windows on Python 3.8 also. I do not move up to Python 3.9 since some dependencies (`cryptography`, `pynacl`) do not provide wheels for Python 3.9 yet on Windows, which would require a complete C++ build system to compile them.

* Enable windows tests on Python 3.8 and package it on Python 3.8 also.

* Upgrade pynsist, nsis and pywin32, remove old workarounds

Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
2021-01-06 16:17:34 -08:00
Brad WarrenandGitHub c44a5a7701 Fix plugin param type (#8578)
* Fix plugin param type in updater

The command used to do this was:

sed -i 's/\(:type .*plugins:\) `list` of `str`/\1 certbot._internal.plugins.disco.PluginsRegistry/g' certbot/certbot/_internal/updater.py

* fix plugin param type in main.py

The command used to do this was:

sed -i 's/\(:type .*plugins:\) `list` of `str`/\1 plugins_disco.PluginsRegistry/g' certbot/certbot/_internal/main.py
2021-01-06 18:26:01 +11:00
Brad WarrenandGitHub 6e1d042f76 mock out plugin discovery in test_plugins (#8576) 2021-01-06 18:14:43 +11:00
Brad WarrenandGitHub daf989fc21 skip meta creation to speed up tests (#8575) 2021-01-06 17:47:25 +11:00
ohemorangeandGitHub 5c3fd7d9ee Merge pull request #8573 from certbot/candidate-1.11.0
Update files from 1.11.0 release
2021-01-05 13:25:11 -08:00
Brad Warren fc6c238bf9 Bump version to 1.12.0 2021-01-05 09:51:11 -08:00
Brad Warren a49b84d64e Add contents to certbot/CHANGELOG.md for next version 2021-01-05 09:51:10 -08:00
Brad Warren 7567e8d8db Release 1.11.0 v1.11.0 2021-01-05 09:51:09 -08:00
Brad Warren 02a5d000cb Update changelog for 1.11.0 release 2021-01-05 09:37:05 -08:00
98fb9d2d93 Forbid os.readlink() (#8472)
The method `os.readlink()` has a significant behavior change with Python 3.8+ on Windows. 

Starting with this version, it will return the resolved path in its "extended-style" form unconditionally, a form which allows to use more than 259 characters in a Windows path, and its string representation is prepended with "\\\\?\\".

See https://docs.microsoft.com/fr-fr/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maximum-path-length-limitation

Problem is that `os.readlink()` does it for any path, including paths that could be represented with the normal form. As a consequence, any string comparison with a path provided in the normal form will fail even if it represents the same path. This makes Certbot partially break on Windows with Python 3.8.

My proposition in this PR is to forbid `os.readlink()`, and provide `certbot.compat.filesystem.readlink()` which serves the same purpose at resolving the pointed path of a link, and has a consistent behavior over supported Python versions.

* Forbid os.readlink()

* Use readlink

* Raise error with long paths on Windows

* Add unit tests

* Update certbot/certbot/compat/filesystem.py

Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
2021-01-05 09:34:12 -08:00
alexzorinandGitHub 32fb89df7e docs: add missing /directory to ACMEv2 server URL (#8564) 2020-12-22 15:10:59 -08:00
Brad WarrenandGitHub d3b82a4e8e Fix test farm tests by using a local Pebble instance (#8561)
[As discussed in Mattermost](https://opensource.eff.org/eff-open-source/pl/yhtp4qu4zpfczm5wxmzxhndrto), our Apache test farm tests are failing because the CA certificate in the old version of boulder we have pinned expired over the weekend. This PR fixes that by running a local Pebble instance instead of an external boulder instance.

* switch from external boulder to local pebble

* add --http-01-port to run_acme_server
2020-12-22 10:24:20 -08:00
18faf4f7ab Edit certs -> certificates in user-facing text. (#8541)
* Edit certs -> certificates in user-facing text.

To reduce confusion, we should consistently use the full term.

* Edit certs->certificates in more user-facing text.

* fix failing lint (line too long)

* fix typo

Co-authored-by: Jacob Hoffman-Andrews <github@hoffman-andrews.com>

Co-authored-by: Alex Zorin <alex@zorin.id.au>
2020-12-21 16:00:31 -08:00
Tim GatesandGitHub a7c3c0b90c docs: fix simple typo, serveral -> several (#8558)
There is a small typo in certbot/certbot/ocsp.py.

Should read `several` rather than `serveral`.
2020-12-21 15:29:00 -08:00
Brad WarrenandGitHub 421e8b6270 fix fix_test_non_systemd_os_info (#8539) 2020-12-21 13:31:37 -08:00
Brad WarrenandGitHub 8e7353900c Add certbot-auto uninstall docs (#8552)
This is part of #8545.

* add certbot-auto uninstall docs

* add uninstall.rst

* write a more aggressive sed command
2020-12-21 09:02:22 -08:00