# certbot.plugins.enhancements module

<div id="module-certbot.plugins.enhancements" class="section">

<span id="certbot-plugins-enhancements-module"></span>

# certbot.plugins.enhancements module

New interface style Certbot enhancements

<span class="sig-prename descclassname"><span class="pre">certbot.plugins.enhancements.</span></span><span class="sig-name descname"><span class="pre">ENHANCEMENTS</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">\['redirect',</span> <span class="pre">'ensure-http-header',</span> <span class="pre">'ocsp-stapling'\]</span></span>  
List of possible <a href="/link/8918#certbot.interfaces.Installer" class="reference internal" title="certbot.interfaces.Installer"><span class="pre"><code class="sourceCode python xref py py-class docutils literal notranslate">certbot.interfaces.Installer</code></span></a> enhancements.

List of expected options parameters: - redirect: None - ensure-http-header: name of header (i.e. Strict-Transport-Security) - ocsp-stapling: certificate chain file path

<!-- -->

<span class="sig-prename descclassname"><span class="pre">certbot.plugins.enhancements.</span></span><span class="sig-name descname"><span class="pre">enabled_enhancements</span></span><span class="sig-paren">(</span>*<span class="n"><span class="pre">config</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">NamespaceConfig</span></span>*<span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a href="https://docs.python.org/3/library/typing.html#typing.Generator" class="reference external" title="(in Python v3.15)"><span class="pre">Generator</span></a><span class="p"><span class="pre">\[</span></span><a href="https://docs.python.org/3/builtins/stdtypes.html#dict" class="reference external" title="(in Python v3.15)"><span class="pre">dict</span></a><span class="p"><span class="pre">\[</span></span><a href="https://docs.python.org/3/builtins/stdtypes.html#str" class="reference external" title="(in Python v3.15)"><span class="pre">str</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a href="https://docs.python.org/3/library/typing.html#typing.Any" class="reference external" title="(in Python v3.15)"><span class="pre">Any</span></a><span class="p"><span class="pre">\]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a><span class="p"><span class="pre">\]</span></span></span></span><a href="https://eff-certbot.readthedocs.io/en/stable/enhancements.html#enabled_enhancements" class="reference internal"><span class="viewcode-link"><span class="pre">[source]</span></span></a>  
Generator to yield the enabled new style enhancements.

Parameters<span class="colon">:</span>  
**config** (*certbot.configuration.NamespaceConfig*) – Configuration.

<!-- -->

<span class="sig-prename descclassname"><span class="pre">certbot.plugins.enhancements.</span></span><span class="sig-name descname"><span class="pre">are_requested</span></span><span class="sig-paren">(</span>*<span class="n"><span class="pre">config</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">NamespaceConfig</span></span>*<span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a href="https://docs.python.org/3/builtins/functions.html#bool" class="reference external" title="(in Python v3.15)"><span class="pre">bool</span></a></span></span><a href="https://eff-certbot.readthedocs.io/en/stable/enhancements.html#are_requested" class="reference internal"><span class="viewcode-link"><span class="pre">[source]</span></span></a>  
Checks if one or more of the requested enhancements are those of the new enhancement interfaces.

Parameters<span class="colon">:</span>  
**config** (*certbot.configuration.NamespaceConfig*) – Configuration.

<!-- -->

<span class="sig-prename descclassname"><span class="pre">certbot.plugins.enhancements.</span></span><span class="sig-name descname"><span class="pre">are_supported</span></span><span class="sig-paren">(</span>*<span class="n"><span class="pre">config</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">NamespaceConfig</span></span>*, *<span class="n"><span class="pre">installer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="/link/8918#certbot.interfaces.Installer" class="reference internal" title="certbot.interfaces.Installer"><span class="pre">Installer</span></a><span class="w"> </span><span class="p"><span class="pre">\|</span></span><span class="w"> </span><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a></span>*<span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a href="https://docs.python.org/3/builtins/functions.html#bool" class="reference external" title="(in Python v3.15)"><span class="pre">bool</span></a></span></span><a href="https://eff-certbot.readthedocs.io/en/stable/enhancements.html#are_supported" class="reference internal"><span class="viewcode-link"><span class="pre">[source]</span></span></a>  
Checks that all of the requested enhancements are supported by the installer.

Parameters<span class="colon">:</span>  
- **config** (*certbot.configuration.NamespaceConfig*) – Configuration.

- **installer** (<a href="/link/8918#certbot.interfaces.Installer" class="reference internal" title="certbot.interfaces.Installer"><em>interfaces.Installer</em></a>) – Installer object

Returns<span class="colon">:</span>  
If all the requested enhancements are supported by the installer

Return type<span class="colon">:</span>  
<a href="https://docs.python.org/3/builtins/functions.html#bool" class="reference external" title="(in Python v3.15)">bool</a>

<!-- -->

<span class="sig-prename descclassname"><span class="pre">certbot.plugins.enhancements.</span></span><span class="sig-name descname"><span class="pre">enable</span></span><span class="sig-paren">(</span>*<span class="n"><span class="pre">lineage</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="/link/8918#certbot.interfaces.RenewableCert" class="reference internal" title="certbot.interfaces.RenewableCert"><span class="pre">RenewableCert</span></a><span class="w"> </span><span class="p"><span class="pre">\|</span></span><span class="w"> </span><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a></span>*, *<span class="n"><span class="pre">domains</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="https://docs.python.org/3/library/typing.html#typing.Iterable" class="reference external" title="(in Python v3.15)"><span class="pre">Iterable</span></a><span class="p"><span class="pre">\[</span></span><a href="https://docs.python.org/3/builtins/stdtypes.html#str" class="reference external" title="(in Python v3.15)"><span class="pre">str</span></a><span class="p"><span class="pre">\]</span></span></span>*, *<span class="n"><span class="pre">installer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="/link/8918#certbot.interfaces.Installer" class="reference internal" title="certbot.interfaces.Installer"><span class="pre">Installer</span></a><span class="w"> </span><span class="p"><span class="pre">\|</span></span><span class="w"> </span><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a></span>*, *<span class="n"><span class="pre">config</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">NamespaceConfig</span></span>*<span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a></span></span><a href="https://eff-certbot.readthedocs.io/en/stable/enhancements.html#enable" class="reference internal"><span class="viewcode-link"><span class="pre">[source]</span></span></a>  
Run enable method for each requested enhancement that is supported.

Parameters<span class="colon">:</span>  
- **lineage** (<a href="/link/8918#certbot.interfaces.RenewableCert" class="reference internal" title="certbot.interfaces.RenewableCert"><em>certbot.interfaces.RenewableCert</em></a>) – Certificate lineage object

- **domains** (<a href="https://docs.python.org/3/builtins/stdtypes.html#str" class="reference external" title="(in Python v3.15)"><em>str</em></a>) – List of domains in certificate to enhance

- **installer** (<a href="/link/8918#certbot.interfaces.Installer" class="reference internal" title="certbot.interfaces.Installer"><em>interfaces.Installer</em></a>) – Installer object

- **config** (*certbot.configuration.NamespaceConfig*) – Configuration.

<!-- -->

<span class="sig-prename descclassname"><span class="pre">certbot.plugins.enhancements.</span></span><span class="sig-name descname"><span class="pre">populate_cli</span></span><span class="sig-paren">(</span>*<span class="n"><span class="pre">add</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="https://docs.python.org/3/library/typing.html#typing.Callable" class="reference external" title="(in Python v3.15)"><span class="pre">Callable</span></a><span class="p"><span class="pre">\[</span></span><span class="p"><span class="pre">\[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">\]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a><span class="p"><span class="pre">\]</span></span></span>*<span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a></span></span><a href="https://eff-certbot.readthedocs.io/en/stable/enhancements.html#populate_cli" class="reference internal"><span class="viewcode-link"><span class="pre">[source]</span></span></a>  
Populates the command line flags for certbot.\_internal.cli.HelpfulParser

Parameters<span class="colon">:</span>  
**add** (*func*) – Add function of certbot.\_internal.cli.HelpfulParser

<!-- -->

<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">certbot.plugins.enhancements.</span></span><span class="sig-name descname"><span class="pre">AutoHSTSEnhancement</span></span><a href="https://eff-certbot.readthedocs.io/en/stable/enhancements.html#AutoHSTSEnhancement" class="reference internal"><span class="viewcode-link"><span class="pre">[source]</span></span></a>  
Bases: <a href="https://docs.python.org/3/builtins/functions.html#object" class="reference external" title="(in Python v3.15)"><span class="pre"><code class="sourceCode python xref py py-class docutils literal notranslate"><span class="bu">object</span></code></span></a>

Enhancement interface that installer plugins can implement in order to provide functionality that configures the software to have a ‘Strict-Transport-Security’ with initially low max-age value that will increase over time.

The plugins implementing new style enhancements are responsible of handling the saving of configuration checkpoints as well as calling possible restarts of managed software themselves. For update_autohsts method, the installer may have to call prepare() to finalize the plugin initialization.

Methods:  
enable_autohsts is called when the header is initially installed using a low max-age value.

update_autohsts is called every time when Certbot is run using ‘renew’ verb. The max-age value should be increased over time using this method.

deploy_autohsts is called for every lineage that has had its certificate renewed. A long HSTS max-age value should be set here, as we should be confident that the user is able to automatically renew their certificates.

<span class="property"><span class="k"><span class="pre">abstractmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">update_autohsts</span></span><span class="sig-paren">(</span>*<span class="n"><span class="pre">lineage</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="/link/8918#certbot.interfaces.RenewableCert" class="reference internal" title="certbot.interfaces.RenewableCert"><span class="pre">RenewableCert</span></a></span>*, *<span class="o"><span class="pre">\*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="https://docs.python.org/3/library/typing.html#typing.Any" class="reference external" title="(in Python v3.15)"><span class="pre">Any</span></a></span>*, *<span class="o"><span class="pre">\*\*</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="https://docs.python.org/3/library/typing.html#typing.Any" class="reference external" title="(in Python v3.15)"><span class="pre">Any</span></a></span>*<span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a></span></span><a href="https://eff-certbot.readthedocs.io/en/stable/enhancements.html#AutoHSTSEnhancement.update_autohsts" class="reference internal"><span class="viewcode-link"><span class="pre">[source]</span></span></a>  
Gets called for each lineage every time Certbot is run with ‘renew’ verb. Implementation of this method should increase the max-age value.

Parameters<span class="colon">:</span>  
**lineage** (<a href="/link/8918#certbot.interfaces.RenewableCert" class="reference internal" title="certbot.interfaces.RenewableCert"><em>certbot.interfaces.RenewableCert</em></a>) – Certificate lineage object

<div class="admonition note">

Note

prepare() method inherited from <span class="pre">`interfaces.Plugin`</span> might need to be called manually within implementation of this interface method to finalize the plugin initialization.

</div>

<span class="property"><span class="k"><span class="pre">abstractmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">deploy_autohsts</span></span><span class="sig-paren">(</span>*<span class="n"><span class="pre">lineage</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="/link/8918#certbot.interfaces.RenewableCert" class="reference internal" title="certbot.interfaces.RenewableCert"><span class="pre">RenewableCert</span></a></span>*, *<span class="o"><span class="pre">\*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="https://docs.python.org/3/library/typing.html#typing.Any" class="reference external" title="(in Python v3.15)"><span class="pre">Any</span></a></span>*, *<span class="o"><span class="pre">\*\*</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="https://docs.python.org/3/library/typing.html#typing.Any" class="reference external" title="(in Python v3.15)"><span class="pre">Any</span></a></span>*<span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a></span></span><a href="https://eff-certbot.readthedocs.io/en/stable/enhancements.html#AutoHSTSEnhancement.deploy_autohsts" class="reference internal"><span class="viewcode-link"><span class="pre">[source]</span></span></a>  
Gets called for a lineage when its certificate is successfully renewed. Long max-age value should be set in implementation of this method.

Parameters<span class="colon">:</span>  
**lineage** (<a href="/link/8918#certbot.interfaces.RenewableCert" class="reference internal" title="certbot.interfaces.RenewableCert"><em>certbot.interfaces.RenewableCert</em></a>) – Certificate lineage object

<span class="property"><span class="k"><span class="pre">abstractmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">enable_autohsts</span></span><span class="sig-paren">(</span>*<span class="n"><span class="pre">lineage</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="/link/8918#certbot.interfaces.RenewableCert" class="reference internal" title="certbot.interfaces.RenewableCert"><span class="pre">RenewableCert</span></a><span class="w"> </span><span class="p"><span class="pre">\|</span></span><span class="w"> </span><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a></span>*, *<span class="n"><span class="pre">domains</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="https://docs.python.org/3/library/typing.html#typing.Iterable" class="reference external" title="(in Python v3.15)"><span class="pre">Iterable</span></a><span class="p"><span class="pre">\[</span></span><a href="https://docs.python.org/3/builtins/stdtypes.html#str" class="reference external" title="(in Python v3.15)"><span class="pre">str</span></a><span class="p"><span class="pre">\]</span></span></span>*, *<span class="o"><span class="pre">\*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="https://docs.python.org/3/library/typing.html#typing.Any" class="reference external" title="(in Python v3.15)"><span class="pre">Any</span></a></span>*, *<span class="o"><span class="pre">\*\*</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a href="https://docs.python.org/3/library/typing.html#typing.Any" class="reference external" title="(in Python v3.15)"><span class="pre">Any</span></a></span>*<span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a href="https://docs.python.org/3/builtins/constants.html#None" class="reference external" title="(in Python v3.15)"><span class="pre">None</span></a></span></span><a href="https://eff-certbot.readthedocs.io/en/stable/enhancements.html#AutoHSTSEnhancement.enable_autohsts" class="reference internal"><span class="viewcode-link"><span class="pre">[source]</span></span></a>  
Enables the AutoHSTS enhancement, installing Strict-Transport-Security header with a low initial value to be increased over the subsequent runs of Certbot renew.

Parameters<span class="colon">:</span>  
- **lineage** (<a href="/link/8918#certbot.interfaces.RenewableCert" class="reference internal" title="certbot.interfaces.RenewableCert"><em>certbot.interfaces.RenewableCert</em></a>) – Certificate lineage object

- **domains** (<a href="https://docs.python.org/3/builtins/stdtypes.html#list" class="reference external" title="(in Python v3.15)"><span class="pre"><code class="sourceCode python xref py py-obj docutils literal notranslate"><span class="bu">list</span></code></span></a> of <a href="https://docs.python.org/3/builtins/stdtypes.html#str" class="reference external" title="(in Python v3.15)"><span class="pre"><code class="sourceCode python xref py py-obj docutils literal notranslate"><span class="bu">str</span></code></span></a>) – List of domains in certificate to enhance

</div>
