mirror of
https://github.com/certbot/certbot.git
synced 2025-08-08 04:02:10 +03:00
Spelling and grammar fixes (#7695)
This commit is contained in:
committed by
Adrien Ferrand
parent
fcdeaf48f2
commit
1702cb90fd
@@ -69,12 +69,12 @@ Access can be defined for all or only selected repositories, which is nice.
|
|||||||
```
|
```
|
||||||
|
|
||||||
- Redirected to Azure DevOps, select the account created in _Having an Azure DevOps account_ section.
|
- Redirected to Azure DevOps, select the account created in _Having an Azure DevOps account_ section.
|
||||||
- Select the organization, and click "Create a new project" (let's name it the same than the targetted github repo)
|
- Select the organization, and click "Create a new project" (let's name it the same than the targeted github repo)
|
||||||
- The Visibility is public, to profit from 10 parallel jobs
|
- The Visibility is public, to profit from 10 parallel jobs
|
||||||
|
|
||||||
```
|
```
|
||||||
!!! ACCESS !!!
|
!!! ACCESS !!!
|
||||||
Azure Pipelines needs access to the GitHub account (in term of beeing able to check it is valid), and the Resources shared between the GitHub account and Azure Pipelines.
|
Azure Pipelines needs access to the GitHub account (in term of being able to check it is valid), and the Resources shared between the GitHub account and Azure Pipelines.
|
||||||
```
|
```
|
||||||
|
|
||||||
_Done. We can move to pipelines configuration._
|
_Done. We can move to pipelines configuration._
|
||||||
|
@@ -942,7 +942,7 @@ class ClientNetwork(object):
|
|||||||
:param messages.RegistrationResource account: Account object. Required if you are
|
:param messages.RegistrationResource account: Account object. Required if you are
|
||||||
planning to use .post() with acme_version=2 for anything other than
|
planning to use .post() with acme_version=2 for anything other than
|
||||||
creating a new account; may be set later after registering.
|
creating a new account; may be set later after registering.
|
||||||
:param josepy.JWASignature alg: Algoritm to use in signing JWS.
|
:param josepy.JWASignature alg: Algorithm to use in signing JWS.
|
||||||
:param bool verify_ssl: Whether to verify certificates on SSL connections.
|
:param bool verify_ssl: Whether to verify certificates on SSL connections.
|
||||||
:param str user_agent: String to send as User-Agent header.
|
:param str user_agent: String to send as User-Agent header.
|
||||||
:param float timeout: Timeout for requests.
|
:param float timeout: Timeout for requests.
|
||||||
|
@@ -36,7 +36,7 @@ ERROR_CODES = {
|
|||||||
' domain'),
|
' domain'),
|
||||||
'dns': 'There was a problem with a DNS query during identifier validation',
|
'dns': 'There was a problem with a DNS query during identifier validation',
|
||||||
'dnssec': 'The server could not validate a DNSSEC signed domain',
|
'dnssec': 'The server could not validate a DNSSEC signed domain',
|
||||||
'incorrectResponse': 'Response recieved didn\'t match the challenge\'s requirements',
|
'incorrectResponse': 'Response received didn\'t match the challenge\'s requirements',
|
||||||
# deprecate invalidEmail
|
# deprecate invalidEmail
|
||||||
'invalidEmail': 'The provided email for a registration was invalid',
|
'invalidEmail': 'The provided email for a registration was invalid',
|
||||||
'invalidContact': 'The provided contact URI was invalid',
|
'invalidContact': 'The provided contact URI was invalid',
|
||||||
|
@@ -1817,7 +1817,7 @@ class ApacheConfigurator(common.Installer):
|
|||||||
ssl_vhost.filep)
|
ssl_vhost.filep)
|
||||||
|
|
||||||
def _verify_no_matching_http_header(self, ssl_vhost, header_substring):
|
def _verify_no_matching_http_header(self, ssl_vhost, header_substring):
|
||||||
"""Checks to see if an there is an existing Header directive that
|
"""Checks to see if there is an existing Header directive that
|
||||||
contains the string header_substring.
|
contains the string header_substring.
|
||||||
|
|
||||||
:param ssl_vhost: vhost to check
|
:param ssl_vhost: vhost to check
|
||||||
|
@@ -764,7 +764,7 @@ class ApacheParser(object):
|
|||||||
split_arg = arg.split("/")
|
split_arg = arg.split("/")
|
||||||
for idx, split in enumerate(split_arg):
|
for idx, split in enumerate(split_arg):
|
||||||
if any(char in ApacheParser.fnmatch_chars for char in split):
|
if any(char in ApacheParser.fnmatch_chars for char in split):
|
||||||
# Turn it into a augeas regex
|
# Turn it into an augeas regex
|
||||||
# TODO: Can this instead be an augeas glob instead of regex
|
# TODO: Can this instead be an augeas glob instead of regex
|
||||||
split_arg[idx] = ("* [label()=~regexp('%s')]" %
|
split_arg[idx] = ("* [label()=~regexp('%s')]" %
|
||||||
self.fnmatch_to_re(split))
|
self.fnmatch_to_re(split))
|
||||||
|
@@ -26,7 +26,7 @@ Listen 443
|
|||||||
|
|
||||||
# Pass Phrase Dialog:
|
# Pass Phrase Dialog:
|
||||||
# Configure the pass phrase gathering process.
|
# Configure the pass phrase gathering process.
|
||||||
# The filtering dialog program (`builtin' is a internal
|
# The filtering dialog program (`builtin' is an internal
|
||||||
# terminal dialog) has to provide the pass phrase on stdout.
|
# terminal dialog) has to provide the pass phrase on stdout.
|
||||||
SSLPassPhraseDialog builtin
|
SSLPassPhraseDialog builtin
|
||||||
|
|
||||||
|
@@ -702,7 +702,7 @@ IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
|
|||||||
# English (en) - Esperanto (eo) - Estonian (et) - French (fr) - German (de)
|
# English (en) - Esperanto (eo) - Estonian (et) - French (fr) - German (de)
|
||||||
# Greek-Modern (el) - Hebrew (he) - Italian (it) - Japanese (ja)
|
# Greek-Modern (el) - Hebrew (he) - Italian (it) - Japanese (ja)
|
||||||
# Korean (ko) - Luxembourgeois* (ltz) - Norwegian Nynorsk (nn)
|
# Korean (ko) - Luxembourgeois* (ltz) - Norwegian Nynorsk (nn)
|
||||||
# Norwegian (no) - Polish (pl) - Portugese (pt)
|
# Norwegian (no) - Polish (pl) - Portuguese (pt)
|
||||||
# Brazilian Portuguese (pt-BR) - Russian (ru) - Swedish (sv)
|
# Brazilian Portuguese (pt-BR) - Russian (ru) - Swedish (sv)
|
||||||
# Simplified Chinese (zh-CN) - Spanish (es) - Traditional Chinese (zh-TW)
|
# Simplified Chinese (zh-CN) - Spanish (es) - Traditional Chinese (zh-TW)
|
||||||
#
|
#
|
||||||
|
@@ -13,7 +13,7 @@ Listen 443 https
|
|||||||
|
|
||||||
# Pass Phrase Dialog:
|
# Pass Phrase Dialog:
|
||||||
# Configure the pass phrase gathering process.
|
# Configure the pass phrase gathering process.
|
||||||
# The filtering dialog program (`builtin' is a internal
|
# The filtering dialog program (`builtin' is an internal
|
||||||
# terminal dialog) has to provide the pass phrase on stdout.
|
# terminal dialog) has to provide the pass phrase on stdout.
|
||||||
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
|
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
|
||||||
|
|
||||||
|
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
# Pass Phrase Dialog:
|
# Pass Phrase Dialog:
|
||||||
# Configure the pass phrase gathering process.
|
# Configure the pass phrase gathering process.
|
||||||
# The filtering dialog program (`builtin' is a internal
|
# The filtering dialog program (`builtin' is an internal
|
||||||
# terminal dialog) has to provide the pass phrase on stdout.
|
# terminal dialog) has to provide the pass phrase on stdout.
|
||||||
SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase
|
SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase
|
||||||
|
|
||||||
|
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
# Pass Phrase Dialog:
|
# Pass Phrase Dialog:
|
||||||
# Configure the pass phrase gathering process.
|
# Configure the pass phrase gathering process.
|
||||||
# The filtering dialog program (`builtin' is a internal
|
# The filtering dialog program (`builtin' is an internal
|
||||||
# terminal dialog) has to provide the pass phrase on stdout.
|
# terminal dialog) has to provide the pass phrase on stdout.
|
||||||
SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase
|
SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase
|
||||||
|
|
||||||
|
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
# Pass Phrase Dialog:
|
# Pass Phrase Dialog:
|
||||||
# Configure the pass phrase gathering process.
|
# Configure the pass phrase gathering process.
|
||||||
# The filtering dialog program (`builtin' is a internal
|
# The filtering dialog program (`builtin' is an internal
|
||||||
# terminal dialog) has to provide the pass phrase on stdout.
|
# terminal dialog) has to provide the pass phrase on stdout.
|
||||||
SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase
|
SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase
|
||||||
|
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
# English (en) - Esperanto (eo) - Estonian (et) - French (fr) - German (de)
|
# English (en) - Esperanto (eo) - Estonian (et) - French (fr) - German (de)
|
||||||
# Greek-Modern (el) - Hebrew (he) - Italian (it) - Japanese (ja)
|
# Greek-Modern (el) - Hebrew (he) - Italian (it) - Japanese (ja)
|
||||||
# Korean (ko) - Luxembourgeois* (ltz) - Norwegian Nynorsk (nn)
|
# Korean (ko) - Luxembourgeois* (ltz) - Norwegian Nynorsk (nn)
|
||||||
# Norwegian (no) - Polish (pl) - Portugese (pt)
|
# Norwegian (no) - Polish (pl) - Portuguese (pt)
|
||||||
# Brazilian Portuguese (pt-BR) - Russian (ru) - Swedish (sv)
|
# Brazilian Portuguese (pt-BR) - Russian (ru) - Swedish (sv)
|
||||||
# Simplified Chinese (zh-CN) - Spanish (es) - Traditional Chinese (zh-TW)
|
# Simplified Chinese (zh-CN) - Spanish (es) - Traditional Chinese (zh-TW)
|
||||||
AddLanguage ca .ca
|
AddLanguage ca .ca
|
||||||
|
@@ -43,7 +43,7 @@ SSLRandomSeed connect builtin
|
|||||||
|
|
||||||
## Pass Phrase Dialog:
|
## Pass Phrase Dialog:
|
||||||
# Configure the pass phrase gathering process. The filtering dialog program
|
# Configure the pass phrase gathering process. The filtering dialog program
|
||||||
# (`builtin' is a internal terminal dialog) has to provide the pass phrase on
|
# (`builtin' is an internal terminal dialog) has to provide the pass phrase on
|
||||||
# stdout.
|
# stdout.
|
||||||
SSLPassPhraseDialog builtin
|
SSLPassPhraseDialog builtin
|
||||||
|
|
||||||
|
@@ -62,7 +62,7 @@ def _setup_primary_node(config):
|
|||||||
"""
|
"""
|
||||||
Setup the environment for integration tests.
|
Setup the environment for integration tests.
|
||||||
Will:
|
Will:
|
||||||
- check runtime compatiblity (Docker, docker-compose, Nginx)
|
- check runtime compatibility (Docker, docker-compose, Nginx)
|
||||||
- create a temporary workspace and the persistent GIT repositories space
|
- create a temporary workspace and the persistent GIT repositories space
|
||||||
- configure and start paralleled ACME CA servers using Docker
|
- configure and start paralleled ACME CA servers using Docker
|
||||||
- transfer ACME CA servers configurations to pytest nodes using env variables
|
- transfer ACME CA servers configurations to pytest nodes using env variables
|
||||||
|
@@ -189,7 +189,7 @@ class ACMEServer(object):
|
|||||||
print('=> Finished configuring the HTTP proxy.')
|
print('=> Finished configuring the HTTP proxy.')
|
||||||
|
|
||||||
def _launch_process(self, command, cwd=os.getcwd(), env=None):
|
def _launch_process(self, command, cwd=os.getcwd(), env=None):
|
||||||
"""Launch silently an subprocess OS command"""
|
"""Launch silently a subprocess OS command"""
|
||||||
if not env:
|
if not env:
|
||||||
env = os.environ
|
env = os.environ
|
||||||
process = subprocess.Popen(command, stdout=self._stdout, stderr=subprocess.STDOUT, cwd=cwd, env=env)
|
process = subprocess.Popen(command, stdout=self._stdout, stderr=subprocess.STDOUT, cwd=cwd, env=env)
|
||||||
|
@@ -39,7 +39,7 @@ class ValidatorTest(unittest.TestCase):
|
|||||||
cert, "test.com", "127.0.0.1"))
|
cert, "test.com", "127.0.0.1"))
|
||||||
|
|
||||||
@mock.patch("certbot_compatibility_test.validator.requests.get")
|
@mock.patch("certbot_compatibility_test.validator.requests.get")
|
||||||
def test_succesful_redirect(self, mock_get_request):
|
def test_successful_redirect(self, mock_get_request):
|
||||||
mock_get_request.return_value = create_response(
|
mock_get_request.return_value = create_response(
|
||||||
301, {"location": "https://test.com"})
|
301, {"location": "https://test.com"})
|
||||||
self.assertTrue(self.validator.redirect("test.com"))
|
self.assertTrue(self.validator.redirect("test.com"))
|
||||||
|
@@ -1 +1 @@
|
|||||||
Gehirn Infrastracture Service DNS Authenticator plugin for Certbot
|
Gehirn Infrastructure Service DNS Authenticator plugin for Certbot
|
||||||
|
@@ -1,14 +1,14 @@
|
|||||||
"""
|
"""
|
||||||
The `~certbot_dns_gehirn.dns_gehirn` plugin automates the process of completing
|
The `~certbot_dns_gehirn.dns_gehirn` plugin automates the process of completing
|
||||||
a ``dns-01`` challenge (`~acme.challenges.DNS01`) by creating, and subsequently
|
a ``dns-01`` challenge (`~acme.challenges.DNS01`) by creating, and subsequently
|
||||||
removing, TXT records using the Gehirn Infrastracture Service DNS API.
|
removing, TXT records using the Gehirn Infrastructure Service DNS API.
|
||||||
|
|
||||||
|
|
||||||
Named Arguments
|
Named Arguments
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
======================================== =====================================
|
======================================== =====================================
|
||||||
``--dns-gehirn-credentials`` Gehirn Infrastracture Service
|
``--dns-gehirn-credentials`` Gehirn Infrastructure Service
|
||||||
credentials_ INI file.
|
credentials_ INI file.
|
||||||
(Required)
|
(Required)
|
||||||
``--dns-gehirn-propagation-seconds`` The number of seconds to wait for DNS
|
``--dns-gehirn-propagation-seconds`` The number of seconds to wait for DNS
|
||||||
@@ -22,15 +22,15 @@ Credentials
|
|||||||
-----------
|
-----------
|
||||||
|
|
||||||
Use of this plugin requires a configuration file containing
|
Use of this plugin requires a configuration file containing
|
||||||
Gehirn Infrastracture Service DNS API credentials,
|
Gehirn Infrastructure Service DNS API credentials,
|
||||||
obtained from your Gehirn Infrastracture Service
|
obtained from your Gehirn Infrastructure Service
|
||||||
`dashboard <https://gis.gehirn.jp/>`_.
|
`dashboard <https://gis.gehirn.jp/>`_.
|
||||||
|
|
||||||
.. code-block:: ini
|
.. code-block:: ini
|
||||||
:name: credentials.ini
|
:name: credentials.ini
|
||||||
:caption: Example credentials file:
|
:caption: Example credentials file:
|
||||||
|
|
||||||
# Gehirn Infrastracture Service API credentials used by Certbot
|
# Gehirn Infrastructure Service API credentials used by Certbot
|
||||||
dns_gehirn_api_token = 00000000-0000-0000-0000-000000000000
|
dns_gehirn_api_token = 00000000-0000-0000-0000-000000000000
|
||||||
dns_gehirn_api_secret = MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
|
dns_gehirn_api_secret = MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ to this file for use during renewal, but does not store the file's contents.
|
|||||||
|
|
||||||
.. caution::
|
.. caution::
|
||||||
You should protect these API credentials as you would the password to your
|
You should protect these API credentials as you would the password to your
|
||||||
Gehirn Infrastracture Service account. Users who can read this file can use
|
Gehirn Infrastructure Service account. Users who can read this file can use
|
||||||
these credentials to issue arbitrary API calls on your behalf. Users who can
|
these credentials to issue arbitrary API calls on your behalf. Users who can
|
||||||
cause Certbot to run using these credentials can complete a ``dns-01``
|
cause Certbot to run using these credentials can complete a ``dns-01``
|
||||||
challenge to acquire new certificates or revoke existing certificates for
|
challenge to acquire new certificates or revoke existing certificates for
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
"""DNS Authenticator for Gehirn Infrastracture Service DNS."""
|
"""DNS Authenticator for Gehirn Infrastructure Service DNS."""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from lexicon.providers import gehirn
|
from lexicon.providers import gehirn
|
||||||
@@ -15,14 +15,14 @@ DASHBOARD_URL = "https://gis.gehirn.jp/"
|
|||||||
@zope.interface.implementer(interfaces.IAuthenticator)
|
@zope.interface.implementer(interfaces.IAuthenticator)
|
||||||
@zope.interface.provider(interfaces.IPluginFactory)
|
@zope.interface.provider(interfaces.IPluginFactory)
|
||||||
class Authenticator(dns_common.DNSAuthenticator):
|
class Authenticator(dns_common.DNSAuthenticator):
|
||||||
"""DNS Authenticator for Gehirn Infrastracture Service DNS
|
"""DNS Authenticator for Gehirn Infrastructure Service DNS
|
||||||
|
|
||||||
This Authenticator uses the Gehirn Infrastracture Service API to fulfill
|
This Authenticator uses the Gehirn Infrastructure Service API to fulfill
|
||||||
a dns-01 challenge.
|
a dns-01 challenge.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
description = 'Obtain certificates using a DNS TXT record ' + \
|
description = 'Obtain certificates using a DNS TXT record ' + \
|
||||||
'(if you are using Gehirn Infrastracture Service for DNS).'
|
'(if you are using Gehirn Infrastructure Service for DNS).'
|
||||||
ttl = 60
|
ttl = 60
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@@ -32,20 +32,20 @@ class Authenticator(dns_common.DNSAuthenticator):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def add_parser_arguments(cls, add): # pylint: disable=arguments-differ
|
def add_parser_arguments(cls, add): # pylint: disable=arguments-differ
|
||||||
super(Authenticator, cls).add_parser_arguments(add, default_propagation_seconds=30)
|
super(Authenticator, cls).add_parser_arguments(add, default_propagation_seconds=30)
|
||||||
add('credentials', help='Gehirn Infrastracture Service credentials file.')
|
add('credentials', help='Gehirn Infrastructure Service credentials file.')
|
||||||
|
|
||||||
def more_info(self): # pylint: disable=missing-docstring,no-self-use
|
def more_info(self): # pylint: disable=missing-docstring,no-self-use
|
||||||
return 'This plugin configures a DNS TXT record to respond to a dns-01 challenge using ' + \
|
return 'This plugin configures a DNS TXT record to respond to a dns-01 challenge using ' + \
|
||||||
'the Gehirn Infrastracture Service API.'
|
'the Gehirn Infrastructure Service API.'
|
||||||
|
|
||||||
def _setup_credentials(self):
|
def _setup_credentials(self):
|
||||||
self.credentials = self._configure_credentials(
|
self.credentials = self._configure_credentials(
|
||||||
'credentials',
|
'credentials',
|
||||||
'Gehirn Infrastracture Service credentials file',
|
'Gehirn Infrastructure Service credentials file',
|
||||||
{
|
{
|
||||||
'api-token': 'API token for Gehirn Infrastracture Service ' + \
|
'api-token': 'API token for Gehirn Infrastructure Service ' + \
|
||||||
'API obtained from {0}'.format(DASHBOARD_URL),
|
'API obtained from {0}'.format(DASHBOARD_URL),
|
||||||
'api-secret': 'API secret for Gehirn Infrastracture Service ' + \
|
'api-secret': 'API secret for Gehirn Infrastructure Service ' + \
|
||||||
'API obtained from {0}'.format(DASHBOARD_URL),
|
'API obtained from {0}'.format(DASHBOARD_URL),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -66,7 +66,7 @@ class Authenticator(dns_common.DNSAuthenticator):
|
|||||||
|
|
||||||
class _GehirnLexiconClient(dns_common_lexicon.LexiconClient):
|
class _GehirnLexiconClient(dns_common_lexicon.LexiconClient):
|
||||||
"""
|
"""
|
||||||
Encapsulates all communication with the Gehirn Infrastracture Service via Lexicon.
|
Encapsulates all communication with the Gehirn Infrastructure Service via Lexicon.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, api_token, api_secret, ttl):
|
def __init__(self, api_token, api_secret, ttl):
|
||||||
|
@@ -38,7 +38,7 @@ class PyTest(TestCommand):
|
|||||||
setup(
|
setup(
|
||||||
name='certbot-dns-gehirn',
|
name='certbot-dns-gehirn',
|
||||||
version=version,
|
version=version,
|
||||||
description="Gehirn Infrastracture Service DNS Authenticator plugin for Certbot",
|
description="Gehirn Infrastructure Service DNS Authenticator plugin for Certbot",
|
||||||
url='https://github.com/certbot/certbot',
|
url='https://github.com/certbot/certbot',
|
||||||
author="Certbot Project",
|
author="Certbot Project",
|
||||||
author_email='client-dev@letsencrypt.org',
|
author_email='client-dev@letsencrypt.org',
|
||||||
|
@@ -248,7 +248,7 @@ More details about these changes can be found on our GitHub repo.
|
|||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
* dns_rfc2136 plugin now supports explicitly specifing an authorative
|
* dns_rfc2136 plugin now supports explicitly specifying an authoritative
|
||||||
base domain for cases when the automatic method does not work (e.g.
|
base domain for cases when the automatic method does not work (e.g.
|
||||||
Split horizon DNS)
|
Split horizon DNS)
|
||||||
|
|
||||||
@@ -632,7 +632,7 @@ https://github.com/certbot/certbot/milestone/62?closed=1
|
|||||||
* Log warning about TLS-SNI deprecation in Certbot
|
* Log warning about TLS-SNI deprecation in Certbot
|
||||||
* Stop preferring TLS-SNI in the Apache, Nginx, and standalone plugins
|
* Stop preferring TLS-SNI in the Apache, Nginx, and standalone plugins
|
||||||
* OVH DNS plugin now relies on Lexicon>=2.7.14 to support HTTP proxies
|
* OVH DNS plugin now relies on Lexicon>=2.7.14 to support HTTP proxies
|
||||||
* Default time the Linode plugin waits for DNS changes to propogate is now 1200 seconds.
|
* Default time the Linode plugin waits for DNS changes to propagate is now 1200 seconds.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
@@ -751,7 +751,7 @@ https://github.com/certbot/certbot/milestone/58?closed=1
|
|||||||
increased over time. The max-age value is not increased to a large value
|
increased over time. The max-age value is not increased to a large value
|
||||||
until you've successfully managed to renew your certificate. This enhancement
|
until you've successfully managed to renew your certificate. This enhancement
|
||||||
can be requested with the --auto-hsts flag.
|
can be requested with the --auto-hsts flag.
|
||||||
* New official DNS plugins have been created for Gehirn Infrastracture Service,
|
* New official DNS plugins have been created for Gehirn Infrastructure Service,
|
||||||
Linode, OVH, and Sakura Cloud. These plugins can be found on our Docker Hub
|
Linode, OVH, and Sakura Cloud. These plugins can be found on our Docker Hub
|
||||||
page at https://hub.docker.com/u/certbot and on PyPI.
|
page at https://hub.docker.com/u/certbot and on PyPI.
|
||||||
* The ability to reuse ACME accounts from Let's Encrypt's ACMEv1 endpoint on
|
* The ability to reuse ACME accounts from Let's Encrypt's ACMEv1 endpoint on
|
||||||
|
@@ -1414,7 +1414,7 @@ def _plugins_parsing(helpful, plugins):
|
|||||||
helpful.add(["plugins", "certonly"], "--dns-gehirn", action="store_true",
|
helpful.add(["plugins", "certonly"], "--dns-gehirn", action="store_true",
|
||||||
default=flag_default("dns_gehirn"),
|
default=flag_default("dns_gehirn"),
|
||||||
help=("Obtain certificates using a DNS TXT record "
|
help=("Obtain certificates using a DNS TXT record "
|
||||||
"(if you are using Gehirn Infrastracture Service for DNS)."))
|
"(if you are using Gehirn Infrastructure Service for DNS)."))
|
||||||
helpful.add(["plugins", "certonly"], "--dns-google", action="store_true",
|
helpful.add(["plugins", "certonly"], "--dns-google", action="store_true",
|
||||||
default=flag_default("dns_google"),
|
default=flag_default("dns_google"),
|
||||||
help=("Obtain certificates using a DNS TXT record (if you are "
|
help=("Obtain certificates using a DNS TXT record (if you are "
|
||||||
|
@@ -192,7 +192,7 @@ def _check_ocsp_cryptography(cert_path, chain_path, url):
|
|||||||
|
|
||||||
|
|
||||||
def _check_ocsp_response(response_ocsp, request_ocsp, issuer_cert, cert_path):
|
def _check_ocsp_response(response_ocsp, request_ocsp, issuer_cert, cert_path):
|
||||||
"""Verify that the OCSP is valid for serveral criterias"""
|
"""Verify that the OCSP is valid for serveral criteria"""
|
||||||
# Assert OCSP response corresponds to the certificate we are talking about
|
# Assert OCSP response corresponds to the certificate we are talking about
|
||||||
if response_ocsp.serial_number != request_ocsp.serial_number:
|
if response_ocsp.serial_number != request_ocsp.serial_number:
|
||||||
raise AssertionError('the certificate in response does not correspond '
|
raise AssertionError('the certificate in response does not correspond '
|
||||||
|
@@ -192,7 +192,7 @@ def _restore_pref_challs(unused_name, value):
|
|||||||
:returns: converted option value to be stored in the runtime config
|
:returns: converted option value to be stored in the runtime config
|
||||||
:rtype: `list` of `str`
|
:rtype: `list` of `str`
|
||||||
|
|
||||||
:raises errors.Error: if value can't be converted to an bool
|
:raises errors.Error: if value can't be converted to a bool
|
||||||
|
|
||||||
"""
|
"""
|
||||||
# If pref_challs has only one element, configobj saves the value
|
# If pref_challs has only one element, configobj saves the value
|
||||||
@@ -203,7 +203,7 @@ def _restore_pref_challs(unused_name, value):
|
|||||||
|
|
||||||
|
|
||||||
def _restore_bool(name, value):
|
def _restore_bool(name, value):
|
||||||
"""Restores an boolean key-value pair from a renewal config file.
|
"""Restores a boolean key-value pair from a renewal config file.
|
||||||
|
|
||||||
:param str name: option name
|
:param str name: option name
|
||||||
:param str value: option value
|
:param str value: option value
|
||||||
@@ -211,7 +211,7 @@ def _restore_bool(name, value):
|
|||||||
:returns: converted option value to be stored in the runtime config
|
:returns: converted option value to be stored in the runtime config
|
||||||
:rtype: bool
|
:rtype: bool
|
||||||
|
|
||||||
:raises errors.Error: if value can't be converted to an bool
|
:raises errors.Error: if value can't be converted to a bool
|
||||||
|
|
||||||
"""
|
"""
|
||||||
lowercase_value = value.lower()
|
lowercase_value = value.lower()
|
||||||
@@ -244,7 +244,7 @@ def _restore_int(name, value):
|
|||||||
|
|
||||||
|
|
||||||
def _restore_str(unused_name, value):
|
def _restore_str(unused_name, value):
|
||||||
"""Restores an string key-value pair from a renewal config file.
|
"""Restores a string key-value pair from a renewal config file.
|
||||||
|
|
||||||
:param str unused_name: option name
|
:param str unused_name: option name
|
||||||
:param str value: option value
|
:param str value: option value
|
||||||
|
@@ -541,7 +541,7 @@ def _generate_windows_flags(rights_desc):
|
|||||||
# write access on Linux: for Windows, FILE_GENERIC_WRITE does not include delete, move or
|
# write access on Linux: for Windows, FILE_GENERIC_WRITE does not include delete, move or
|
||||||
# rename. This is something that requires ntsecuritycon.FILE_ALL_ACCESS.
|
# rename. This is something that requires ntsecuritycon.FILE_ALL_ACCESS.
|
||||||
# So to reproduce the write right as POSIX, we will apply ntsecuritycon.FILE_ALL_ACCESS
|
# So to reproduce the write right as POSIX, we will apply ntsecuritycon.FILE_ALL_ACCESS
|
||||||
# substracted of the rights corresponding to POSIX read and POSIX execute.
|
# subtracted of the rights corresponding to POSIX read and POSIX execute.
|
||||||
#
|
#
|
||||||
# Finally, having read + write + execute gives a ntsecuritycon.FILE_ALL_ACCESS,
|
# Finally, having read + write + execute gives a ntsecuritycon.FILE_ALL_ACCESS,
|
||||||
# so a "Full Control" on the file.
|
# so a "Full Control" on the file.
|
||||||
|
@@ -340,7 +340,7 @@ def validated_input(validator, *args, **kwargs):
|
|||||||
"""Like `~certbot.interfaces.IDisplay.input`, but with validation.
|
"""Like `~certbot.interfaces.IDisplay.input`, but with validation.
|
||||||
|
|
||||||
:param callable validator: A method which will be called on the
|
:param callable validator: A method which will be called on the
|
||||||
supplied input. If the method raises a `errors.Error`, its
|
supplied input. If the method raises an `errors.Error`, its
|
||||||
text will be displayed and the user will be re-prompted.
|
text will be displayed and the user will be re-prompted.
|
||||||
:param list `*args`: Arguments to be passed to `~certbot.interfaces.IDisplay.input`.
|
:param list `*args`: Arguments to be passed to `~certbot.interfaces.IDisplay.input`.
|
||||||
:param dict `**kwargs`: Arguments to be passed to `~certbot.interfaces.IDisplay.input`.
|
:param dict `**kwargs`: Arguments to be passed to `~certbot.interfaces.IDisplay.input`.
|
||||||
@@ -355,7 +355,7 @@ def validated_directory(validator, *args, **kwargs):
|
|||||||
"""Like `~certbot.interfaces.IDisplay.directory_select`, but with validation.
|
"""Like `~certbot.interfaces.IDisplay.directory_select`, but with validation.
|
||||||
|
|
||||||
:param callable validator: A method which will be called on the
|
:param callable validator: A method which will be called on the
|
||||||
supplied input. If the method raises a `errors.Error`, its
|
supplied input. If the method raises an `errors.Error`, its
|
||||||
text will be displayed and the user will be re-prompted.
|
text will be displayed and the user will be re-prompted.
|
||||||
:param list `*args`: Arguments to be passed to `~certbot.interfaces.IDisplay.directory_select`.
|
:param list `*args`: Arguments to be passed to `~certbot.interfaces.IDisplay.directory_select`.
|
||||||
:param dict `**kwargs`: Arguments to be passed to
|
:param dict `**kwargs`: Arguments to be passed to
|
||||||
|
@@ -451,7 +451,7 @@ plugins:
|
|||||||
--dns-dnsmadeeasy Obtain certificates using a DNS TXT record (if you are
|
--dns-dnsmadeeasy Obtain certificates using a DNS TXT record (if you are
|
||||||
using DNS Made Easy for DNS). (default: False)
|
using DNS Made Easy for DNS). (default: False)
|
||||||
--dns-gehirn Obtain certificates using a DNS TXT record (if you are
|
--dns-gehirn Obtain certificates using a DNS TXT record (if you are
|
||||||
using Gehirn Infrastracture Service for DNS).
|
using Gehirn Infrastructure Service for DNS).
|
||||||
(default: False)
|
(default: False)
|
||||||
--dns-google Obtain certificates using a DNS TXT record (if you are
|
--dns-google Obtain certificates using a DNS TXT record (if you are
|
||||||
using Google Cloud DNS). (default: False)
|
using Google Cloud DNS). (default: False)
|
||||||
@@ -560,14 +560,14 @@ dns-dnsmadeeasy:
|
|||||||
|
|
||||||
dns-gehirn:
|
dns-gehirn:
|
||||||
Obtain certificates using a DNS TXT record (if you are using Gehirn
|
Obtain certificates using a DNS TXT record (if you are using Gehirn
|
||||||
Infrastracture Service for DNS).
|
Infrastructure Service for DNS).
|
||||||
|
|
||||||
--dns-gehirn-propagation-seconds DNS_GEHIRN_PROPAGATION_SECONDS
|
--dns-gehirn-propagation-seconds DNS_GEHIRN_PROPAGATION_SECONDS
|
||||||
The number of seconds to wait for DNS to propagate
|
The number of seconds to wait for DNS to propagate
|
||||||
before asking the ACME server to verify the DNS
|
before asking the ACME server to verify the DNS
|
||||||
record. (default: 30)
|
record. (default: 30)
|
||||||
--dns-gehirn-credentials DNS_GEHIRN_CREDENTIALS
|
--dns-gehirn-credentials DNS_GEHIRN_CREDENTIALS
|
||||||
Gehirn Infrastracture Service credentials file.
|
Gehirn Infrastructure Service credentials file.
|
||||||
(default: None)
|
(default: None)
|
||||||
|
|
||||||
dns-google:
|
dns-google:
|
||||||
|
@@ -579,7 +579,7 @@ class AtexitRegisterTest(unittest.TestCase):
|
|||||||
with mock.patch('certbot.util.atexit') as mock_atexit:
|
with mock.patch('certbot.util.atexit') as mock_atexit:
|
||||||
self._call(self.func, *self.args, **self.kwargs)
|
self._call(self.func, *self.args, **self.kwargs)
|
||||||
|
|
||||||
# _INITAL_PID must be mocked when calling atexit_func
|
# _INITIAL_PID must be mocked when calling atexit_func
|
||||||
self.assertTrue(mock_atexit.register.called)
|
self.assertTrue(mock_atexit.register.called)
|
||||||
args, kwargs = mock_atexit.register.call_args
|
args, kwargs = mock_atexit.register.call_args
|
||||||
atexit_func = args[0]
|
atexit_func = args[0]
|
||||||
|
@@ -63,7 +63,7 @@ CERTBOT_REPO_PATH = dirname(dirname(abspath(__file__)))
|
|||||||
# - then this venv is used to consistently construct an empty new venv
|
# - then this venv is used to consistently construct an empty new venv
|
||||||
# - once pipstraped, this new venv pip-installs certbot runtime (including apache/nginx),
|
# - once pipstraped, this new venv pip-installs certbot runtime (including apache/nginx),
|
||||||
# without pinned dependencies, and respecting input authoritative requirements
|
# without pinned dependencies, and respecting input authoritative requirements
|
||||||
# - `certbot plugins` is called to check we have an healthy environment
|
# - `certbot plugins` is called to check we have a healthy environment
|
||||||
# - finally current set of dependencies is extracted out of the docker using pip freeze
|
# - finally current set of dependencies is extracted out of the docker using pip freeze
|
||||||
SCRIPT = r"""#!/bin/sh
|
SCRIPT = r"""#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
@@ -100,7 +100,7 @@ echo "PASSED: certbot-auto did not install Python3.6 in a non-interactive shell
|
|||||||
# now bootstrap from current letsencrypt-auto, that will install python3.6 from SCL
|
# now bootstrap from current letsencrypt-auto, that will install python3.6 from SCL
|
||||||
"$LE_AUTO" --no-self-upgrade -n --version >/dev/null 2>/dev/null
|
"$LE_AUTO" --no-self-upgrade -n --version >/dev/null 2>/dev/null
|
||||||
|
|
||||||
# Following test is exectued in a subshell, to not leak any environment variable
|
# Following test is executed in a subshell, to not leak any environment variable
|
||||||
(
|
(
|
||||||
# enable SCL rh-python36
|
# enable SCL rh-python36
|
||||||
. /opt/rh/rh-python36/enable
|
. /opt/rh/rh-python36/enable
|
||||||
@@ -124,7 +124,7 @@ echo "PASSED: certbot-auto did not install Python3.6 in a non-interactive shell
|
|||||||
fi
|
fi
|
||||||
)
|
)
|
||||||
|
|
||||||
# Following test is exectued in a subshell, to not leak any environment variable
|
# Following test is executed in a subshell, to not leak any environment variable
|
||||||
(
|
(
|
||||||
# enable SCL rh-python36
|
# enable SCL rh-python36
|
||||||
. /opt/rh/rh-python36/enable
|
. /opt/rh/rh-python36/enable
|
||||||
|
@@ -16,7 +16,7 @@ WHITELIST_PACKAGES = ['acme', 'certbot_compatibility_test', 'letshelp_certbot',
|
|||||||
class ForbidStandardOsModule(BaseChecker):
|
class ForbidStandardOsModule(BaseChecker):
|
||||||
"""
|
"""
|
||||||
This checker ensures that standard os module (and submodules) is not imported by certbot
|
This checker ensures that standard os module (and submodules) is not imported by certbot
|
||||||
modules. Otherwise a 'os-module-forbidden' error will be registered for the faulty lines.
|
modules. Otherwise an 'os-module-forbidden' error will be registered for the faulty lines.
|
||||||
"""
|
"""
|
||||||
__implements__ = IAstroidChecker
|
__implements__ = IAstroidChecker
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
# 1- decodestring: https://github.com/rthalley/dnspython/issues/338
|
# 1- decodestring: https://github.com/rthalley/dnspython/issues/338
|
||||||
# 2- ignore warn for importing abstract classes from collections instead of collections.abc,
|
# 2- ignore warn for importing abstract classes from collections instead of collections.abc,
|
||||||
# too much third party dependencies are still relying on this behavior,
|
# too much third party dependencies are still relying on this behavior,
|
||||||
# but it should be corrected to allow Certbot compatiblity with Python >= 3.8
|
# but it should be corrected to allow Certbot compatibility with Python >= 3.8
|
||||||
filterwarnings =
|
filterwarnings =
|
||||||
error
|
error
|
||||||
ignore:decodestring:DeprecationWarning
|
ignore:decodestring:DeprecationWarning
|
||||||
|
Reference in New Issue
Block a user