Commit graph

9359 commits

Author SHA1 Message Date
Seth Schoen
85f8f68263 Documentation fix-ups 2018-12-07 14:18:28 -08:00
Seth Schoen
ecc1c5ddb5 Merge remote-tracking branch 'georgio/TLS-SNI-01-Deprecation-1' into no-more-tls-sni-01 2018-12-07 13:36:49 -08:00
Seth Schoen
bc9865371a Merge remote-tracking branch 'georgio/TLS-SNI-01-Deprecation' into no-more-tls-sni-01 2018-12-07 13:36:47 -08:00
Brad Warren
353d092585
Remove -q/--quiet from pip invocations. (#6568)
While reducing noise in test output is valuable, this flag has made a couple aspects of Certbot's development difficult:

1. We test with different sets of dependencies and running pip in quiet mode removes all output about the packages being installed which has made reviewing changes to these tests more difficult.
2. When pip fails, it provides significantly less output about the failure in quiet mode than it does normally. The output is reduced so much that in the two times I've hit this issue in the last month, I was only able to see that installing package X failed rather than what the cause of that failure was which could be seen with `--quiet` removed.

Also, since running pip without `--quiet` is the tox default, I expect Python developers to be familiar with what they see here.
2018-12-06 16:02:16 -08:00
Adrien Ferrand
adedcc6416 Reduce to the minimal requirements to ensure Windows compatibility: execute tests only against lower and higher version of Python supported by Certbot on Windows. (#6565) 2018-12-06 09:33:46 -08:00
Brad Warren
bdfda3005e
Merge pull request #6564 from certbot/candidate-0.29.1
Candidate 0.29.1
2018-12-05 17:45:42 -08:00
ohemorange
cb1226c938
Merge branch 'master' into candidate-0.29.1 2018-12-05 17:23:30 -08:00
Erica Portnoy
82cfff8d35 Bump version to 0.30.0 2018-12-05 16:31:09 -08:00
Erica Portnoy
5ff4fa91b0 Add contents to CHANGELOG.md for next version 2018-12-05 16:31:08 -08:00
Erica Portnoy
be8638dad0
Release 0.29.1 2018-12-05 16:31:07 -08:00
Erica Portnoy
87215c7faf Update changelog for 0.29.1 release 2018-12-05 15:47:59 -08:00
Brad Warren
1651bdd86b Fix default directories on Linux (#6560) (#6562)
* fix default directories

* update changelog

(cherry picked from commit 11e0fa52d0)
2018-12-05 15:37:06 -08:00
Brad Warren
11e0fa52d0
Fix default directories on Linux (#6560)
* fix default directories

* update changelog
2018-12-05 14:52:58 -08:00
Brad Warren
59a6d94b0a
Merge pull request #6558 from certbot/candidate-0.29.0
Candidate 0.29.0
2018-12-05 14:12:16 -08:00
Brad Warren
3edfe92069 Bump version to 0.30.0 2018-12-05 10:57:46 -08:00
Brad Warren
245dbc7a95 Add contents to CHANGELOG.md for next version 2018-12-05 10:57:45 -08:00
Brad Warren
6476663516
Release 0.29.0 2018-12-05 10:57:43 -08:00
Brad Warren
d151481dea Update changelog for 0.29.0 release 2018-12-05 10:52:20 -08:00
Brad Warren
9b9ba9b5fe List packages that changed in CHANGELOG. 2018-12-05 10:52:02 -08:00
sydneyli
9c0b27de68 Preserve other-read bit on private keys too (#6544)
Not updating the guidelines in using.rst-- I don't want to encourage people to use this. now that Certbot preserves gid, the better way to set permissions is to change the group permisisons!

* Preserve other-read bit on private keys too

* fix integration test

* fix and rename permission routines in integration tests
2018-12-04 10:59:23 -08:00
sydneyli
f5aad1440f Conditionally depend on imgconverter for newer versions of Sphinx (#6536)
Fixes #6343.

* conditionally depend on imgconverter

* Pin docutils dependency for old Sphinx bug
2018-12-04 10:56:15 -08:00
ohemorange
daa77b5023 During the release, reset local-oldest-requirements.txts that might have been changed during development. (#6547)
* During the release, reset local-oldest-requirements.txts that might have been changed during development.

* only modify the file if it exists

* no need to specifically add certbot-compatibility-test because it doesn't have the file anyway

* Use double quotes instead of single

* escape dots and brackets

* Escape and quote correctly
2018-12-03 16:42:52 -08:00
Oshawk
d30afbea57 Remove duplicate route53 options (#6405)
* Remove duplicate route53 options

Duplicate route53 option (certbot-route53:auth) removed.

* Remove duplicate route53 options from help

Removed duplicate route53 options from help by adding a couple of if statements in cli.py.

* Fix formatting

* Use cleaner solution to remove duplicate route53 options from help

Used a cleaner method to remove the duplicate option from the help text

* Fix line too long

* Add regression test

Added a regression test and fixed a couple of minor issues.

* Fix trailing whitespace

* Add missing newline

* Put newline in correct place
2018-12-03 15:32:47 -08:00
Robert Kästel
1f4297d0ed WIP External Account Binding (#6059)
* Rough draft of External Account Binding.

* Remove parameter --eab and namespace kid and hmac. Also add parameters to "register" subcommand.

* Refactor as much as possible of the EAB functionality into ExternalAccountBinding class.

* Remove debug line.

* Added external account binding to Directory.Meta.

* Rename to account_public_key, hmac_key and make some non-optional.
Rename command line argument to --eab-hmac-key.

* Error out when the server requires External Account Binding and the user
has not supplied kid and hmac key.

* Remove whitespace.

* Refactor a bit to make it possible to set the url argument.

* Move from_data method into client.

* Revert "Move from_data method into client."

This reverts commit 8963fae

* Refactored to use json field on Registration.

* Inherit from object according to Google Python Style Guide.

* Move to two separate ifs.

* Get tests to pass after External Account Binding additions.

* messages.py back to 100% test coverage with some EAB tests.

* .encode() this JSON key.

* Set eab parameter default values to None.

* * Remove unnecessary public key mock on most of the test.
* Restructure the directory mock to be able to mock both True and False for externalAccountRequired easily.
* Add EAB client tests.

* Move external_account_required check into BackwardsCompatibleClientV2 to be able to mock it.

* Update versions.

* Try 0.29.0.

* Revert "Try 0.29.0."

This reverts commit 5779509

* Try 0.29.0 again.

* Try this.

* Fix pylint failures.

* Add tests for external_account_required method.

* Test not needed, avoid:
************* Module acme.client_test
C:  1, 0: Too many lines in module (1258/1250) (too-many-lines)

* Move real external_account_required method into ClientV2 and pass through to it in BackwardsCompatibleClientV2.

* Handle missing meta key in server ACME directory.

* Add docstring for BackwardsCompatibleClientV2.external_account_required().

* Add tests for BackwardsCompatibleClientV2.external_account_required().

* Fix coverage for ACMEv1 code in BackwardsCompatibleClientV2.

* Disable pylint too-many-lines check for client_test.py.

* Fix versions.

* Remove whitespace that accidently snuck into an earlier commit.

* Remove these two stray whitespaces also.

* And the last couple of whitespaces.

* Add External Account Binding to changelog.

* Add dev0 suffix to setup.py.

Co-Authored-By: robaman <robert@kastel.se>

* Set to "-e acme[dev]" again.

Co-Authored-By: robaman <robert@kastel.se>
2018-12-03 15:27:35 -08:00
Brad Warren
37d4b983c8
Don't use pytest.ini during the release. (#6550)
Currently the release script in master fails for a few reasons. First, it's trying to use --numprocesses which comes from a pytest plugin that we're not installing in the release script. Second, many new warnings are raised when we're not using pinned versions of our dependencies.

I'm not sure I agree, but one could argue that we should fix these issues and use the file during the release. I'm particularly hesitant for us to do this when it comes to warnings. We currently do not pin our dependencies in the release script. Do we really want to stop the release because a new package was released and is warning about something? One could argue we do because these warnings may be visible to the user, but they very rarely are and I think this makes the release process much too painful.

I especially do not think we should block the release on this now as we are not up to date on the warnings raised by the latest versions of our packages so there is a lot to work through.

* Don't use pytest.ini during the release.

* State that pytest.ini isn't used in release script.
2018-11-30 17:40:55 -08:00
Brad Warren
11dae13c2f
Fix oldest Certbot version that works with Apache. (#6549) 2018-11-30 17:40:30 -08:00
hannay Mohanna
d461655ec6 removed unused sys imports (#6546) 2018-11-30 15:59:19 -08:00
Brad Warren
73458daac9
whitelist docker-compose (#6516) 2018-11-30 14:44:47 -08:00
Adrien Ferrand
0b5468e992 Implement POST-as-GET requests (#6522)
* Setup an integration tests env against Pebble, that enforce post-as-get

* Implement POST-as-GET requests, with fallback to GET.

* Fix unit tests

* Fix coverage.

* Fix or ignore lint errors

* Corrections after review

* Correct test

* Try a simple delegate approach

* Add a test

* Simplify test mocking

* Clean comment
2018-11-29 19:42:06 -05:00
Brad Warren
8b5ac9e257 Ask people not to rewrite commits. (#6538) 2018-11-29 18:42:08 -05:00
sydneyli
7d0ac47139 Change default privkey permissions while preserving group permissions (#6480)
Fixes #1473.

writes privkey.pem to 0600 by default for new lineages
on renewals where a new privkey is generated, preserves group mode and gid
Things this PR does not do:

we talked about forcing 0600 on privkeys when a Certbot upgrade is detected. Instead, this PR only creates new lineages with the more restrictive permission to prevent renewal breakages.
this doesn't solve many of the problems mentioned in #1473 that are not directly related to the title issue!

* safe_open on archive keyfiles

* keep group from current lineage

* clean up integration test

* safe_open can follow symlinks

* fix tests on windows, maybe

* Address Brad's comments

* Revert changes to safe_open
* Test chown is called when saving new key
* Reorder chown operation

* Changelog and documentation

* Fix documentation style
2018-11-29 09:33:05 -08:00
Jacob Hoffman-Andrews
7527a6c959 Remove "beta" label from Apache plugin. (#6537) 2018-11-28 19:01:05 -08:00
Brad Warren
6310d1e996
Merge pull request #6455 from certbot/warnings-are-errors
Fixes #6080
2018-11-28 09:05:10 -08:00
Erica Portnoy
1c23fea076 ignore erroneously no-member lint error 2018-11-27 17:24:34 -08:00
Erica Portnoy
3e155d443d Merge branch 'master' into warnings-are-errors 2018-11-27 17:18:55 -08:00
schoen
a6ac2269b6
Merge pull request #6488 from certbot/whats-a-certbot
Clarify letsencrypt-auto to certbot-auto message
2018-11-26 17:46:53 -08:00
schoen
32fb5b3c47
Merge pull request #6525 from b3n4kh/google-dns-typo-fix
Fix example filename to end with ".json"
2018-11-26 17:46:08 -08:00
schoen
a7f65eb5ac
Merge pull request #6517 from certbot/whats_a_venv_common
Don't mention _venv_common.sh in certbot-auto.
2018-11-26 17:44:30 -08:00
ohemorange
f65cb070b3
Automation for changelog changes during release (#6489)
* Automation for changelog changes during release

* Update changelog during release before modifying version numbers

* don't link to the GitHub repo

* no need to sign the commit bumping version numbers

* simplify tail call
2018-11-26 17:48:59 -05:00
schoen
76bfe09393
Merge pull request #6514 from ye/issue-3190
Add clarification of what "$domain" means in the case of creating a SAN cert.
2018-11-26 12:13:23 -08:00
schoen
ff66b641e3
Re-adding period 2018-11-26 11:46:57 -08:00
Erica Portnoy
3edb36c4cc Revert acme/acme/client.py 2018-11-22 03:43:25 +00:00
Erica Portnoy
fe840d5d46 Merge branch 'master' into warnings-are-errors 2018-11-22 03:03:43 +00:00
Adrien Ferrand
41bf9c70f6 Update pinned version of cffi to 1.11.5 (#6512)
Current pinned version of cffi is 1.10.0. This version does not provide pre-compiled wheels for latest Python versions on Windows. This implies on this plateform, when certbot is installed, to compile cffi from sources.

But for that, the computer will need to have the Visual C compiler available locally. This environnement is really heavy to setup, and totally outside of the scope.

This PR updates cffi to version 1.11.5, that has the required wheels, and makes certbot installable without a full .NET dev profile.
2018-11-21 14:49:04 -08:00
schoen
e8e3534335 Add a random sleep for noninteractive renewals (#6393)
* WIP on adding a random sleep for noninteractive renewal

* Update changelog

* Log the fact that we're randomly sleeping

* stdin may better define interactivity than stdout

* Try mocking time.sleep for all tests

* Move mocked sleep elsewhere

* mock the right object

* Somewhat ugly synthetic PTY trick

* Move set -u down below self-exec

* Revert "Move set -u down below self-exec"

This reverts commit 6bde65a738.

* Revert "Somewhat ugly synthetic PTY trick"

This reverts commit 89c704a4be.

* Log specific duration of random sleep

* Test coverage for random sleep() logic in main.py
2018-11-20 23:55:51 -05:00
ohemorange
ca42945264
Fix test_sdists test farm test (#6524)
* Switch to using _venv_common.py in test_sdists.sh

* Upgrade setuptools in _venv_common.py

* Upgrade setuptools before running pip_install
2018-11-20 18:39:12 -05:00
Adrien Ferrand
a23d76beb0 [Windows] Change default paths for Certbot when run on Windows (#6416)
Defaults path of Certbot are the following:

config: /etc/letsencrypt
workdir: /var/letsencrypt/lib
logs: /var/letsencrypt/log
On Windows, this translate into:

config: C:\etc\letsencrypt
workdir: C:\var\letsencrypt\lib
logs: C:\var\letsencrypt\log
As Windows does not follow the standard POSIX filesystem layout, theses paths do not have a lot of sense in this case.

This PR sets the following default paths when Certbot is run on Windows:

config: C:\Certbot
workdir: C:\Certbot\lib
logs: C:\Certbot\log
Better to decide the default paths for Certbot before users start to run it on Windows, to avoid future migration procedures.
2018-11-20 14:06:09 -08:00
Benjamin Akhras
fce5af50fd Fixed Typo in the examples section since .ini files are not supported. 2018-11-20 21:48:20 +01:00
Adrien Ferrand
1dd7db12e0 Workaround for old pip versions that are not exposed as importable modules. (#6500)
Fallback to pipstrap 1.5.0. Manipulate PATH variable on higher level to activate the virtual environment before calling pipstrap.
2018-11-19 15:38:37 -08:00
Adrien Ferrand
78cf8ec4de Protect certbot-auto against automated downgrades (#6448)
With current code, the certbot-auto self-upgrade process can make it actually to downgrade itself, because the comparison done is an equality test between local certbot-auto version and the remote one. This is a flaw for attackers, that could make certbot-auto break itself by falsely advertising it about an old version as the latest one available.

A function is added to make a more advanced comparison between version. Certbot-auto will upgrade itself only if the local version is strictly inferior to the latest one available. For instance, a version 0.28.0 will not upgrade itself if the latest one available on internet is 0.27.1. Similarly, non-official versions like 0.28.0.dev0 will never trigger a self-upgrade, to help development workflows.

This implementation relies only on the Python distribution installed by certbot-auto (supporting 2.7+) and basic shell operations, to be compatible with any UNIX-based system.

* Check version with protection again downgrade

* Create a stable version of letsencrypt-auto to use correctly self-upgrade functionality

* Update letsencrypt-auto-source/letsencrypt-auto.template
2018-11-19 14:28:59 -08:00