<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Venafi_python</id>
	<title>Venafi python - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Venafi_python"/>
	<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Venafi_python&amp;action=history"/>
	<updated>2026-04-05T19:16:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Venafi_python&amp;diff=5213&amp;oldid=prev</id>
		<title>Busk at 00:48, 18 April 2024</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Venafi_python&amp;diff=5213&amp;oldid=prev"/>
		<updated>2024-04-18T00:48:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:48, 18 April 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;https://docs.venafi.com/Docs/current/TopNav/Content/SDK/WebSDK/r-SDK-POST-Certificates-retrieve.php&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;https://docs.venafi.com/Docs/current/TopNav/Content/SDK/WebSDK/r-SDK-POST-Certificates-retrieve.php&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.env.secrets&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;```&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;set -a&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PASSWORD=ChangeMe&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;```&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;```&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. .env.secrets&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;```&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;```&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;./get-venafi-cert.py -u myuser -c foo -F venafi.example.com -s &amp;quot;certificate:manage&amp;quot; -P &amp;quot;mycert\dev\test.com&amp;quot; --include-private-key --cert-password &amp;quot;ChangeMe111111&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;```&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;get-venafi-cert.py&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;```&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;```&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/env python3&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/env python3&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Venafi_python&amp;diff=5212&amp;oldid=prev</id>
		<title>Busk at 00:42, 18 April 2024</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Venafi_python&amp;diff=5212&amp;oldid=prev"/>
		<updated>2024-04-18T00:42:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:42, 18 April 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https://docs.venafi.com/Docs/current/TopNav/Content/SDK/WebSDK/r-SDK-POST-Certificates-retrieve.php&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;```&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;```&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/env python3&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/env python3&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Venafi_python&amp;diff=5211&amp;oldid=prev</id>
		<title>Busk: Created page with &quot;``` #!/usr/bin/env python3 import argparse import base64 from getpass import getpass import json import os import requests import sys  class EnvDefault(argparse.Action):     d...&quot;</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Venafi_python&amp;diff=5211&amp;oldid=prev"/>
		<updated>2024-04-18T00:42:19Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;``` #!/usr/bin/env python3 import argparse import base64 from getpass import getpass import json import os import requests import sys  class EnvDefault(argparse.Action):     d...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;```&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
import argparse&lt;br /&gt;
import base64&lt;br /&gt;
from getpass import getpass&lt;br /&gt;
import json&lt;br /&gt;
import os&lt;br /&gt;
import requests&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
class EnvDefault(argparse.Action):&lt;br /&gt;
    def __init__(self, envvar, required=True, default=None, **kwargs):&lt;br /&gt;
        if not default and envvar:&lt;br /&gt;
            if envvar in os.environ:&lt;br /&gt;
                default = os.environ[envvar]&lt;br /&gt;
        if required and default:&lt;br /&gt;
            required = False&lt;br /&gt;
        super(EnvDefault, self).__init__(default=default, required=required,&lt;br /&gt;
                                         **kwargs)&lt;br /&gt;
&lt;br /&gt;
    def __call__(self, parser, namespace, values, option_string=None):&lt;br /&gt;
        setattr(namespace, self.dest, values)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def get_required_environment_variables(variables):&lt;br /&gt;
    for var in variables:&lt;br /&gt;
        if os.environ.get(var) is None:&lt;br /&gt;
            raise EnvironmentError(f&amp;quot;Environment variable {var} is not set.&amp;quot;)&lt;br /&gt;
    return {var: os.environ[var] for var in variables}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def get_env_var(env_name):&lt;br /&gt;
    env_value = os.environ.get(env_name)&lt;br /&gt;
    if env_value is None:&lt;br /&gt;
        raise EnvironmentError(f&amp;quot;Environment variable '{env_name}' is not set.&amp;quot;)&lt;br /&gt;
    return env_value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def get_cert_via_dn(token, cert_path, include_private_key=False, cert_password=False):&lt;br /&gt;
    url = f&amp;quot;https://{args.fqdn}/vedsdk/Certificates/Retrieve&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Escape backslashes in cert_path&lt;br /&gt;
    cert_path_escaped = cert_path.replace(&amp;quot;\\&amp;quot;, &amp;quot;\\\\&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    cert_prefix = &amp;quot;\\VED\\Policy\\Certificates\\&amp;quot;&lt;br /&gt;
    cert_prefix_escaped = cert_prefix.replace(&amp;quot;\\&amp;quot;, &amp;quot;\\\\&amp;quot;)&lt;br /&gt;
    cert_dn = cert_prefix_escaped + cert_path_escaped&lt;br /&gt;
&lt;br /&gt;
    if cert_password and include_private_key:&lt;br /&gt;
        payload = {&lt;br /&gt;
            &amp;quot;CertificateDN&amp;quot;: cert_dn,&lt;br /&gt;
            &amp;quot;Format&amp;quot;: &amp;quot;Base64&amp;quot;,&lt;br /&gt;
            &amp;quot;IncludeChain&amp;quot;: True,&lt;br /&gt;
            &amp;quot;IncludePrivateKey&amp;quot;: include_private_key,&lt;br /&gt;
            &amp;quot;Password&amp;quot;: cert_password,&lt;br /&gt;
            &amp;quot;RootFirstOrder&amp;quot;: True&lt;br /&gt;
        }&lt;br /&gt;
    else:&lt;br /&gt;
        payload = {&lt;br /&gt;
            &amp;quot;CertificateDN&amp;quot;: cert_dn,&lt;br /&gt;
            &amp;quot;Format&amp;quot;: &amp;quot;Base64&amp;quot;,&lt;br /&gt;
            &amp;quot;IncludeChain&amp;quot;: True,&lt;br /&gt;
            &amp;quot;RootFirstOrder&amp;quot;: True&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    headers = {&lt;br /&gt;
        &amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {token}&amp;quot;,&lt;br /&gt;
        &amp;quot;Content-Type&amp;quot;: &amp;quot;application/json&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    response = requests.post(url, json=payload, headers=headers)&lt;br /&gt;
&lt;br /&gt;
    if response.status_code == 200:&lt;br /&gt;
        b64 = response.json()[&amp;quot;CertificateData&amp;quot;].encode(&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
        data = base64.b64decode(b64)&lt;br /&gt;
        return data.decode(&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
        # pretty_json = json.dumps(data, indent=4)&lt;br /&gt;
    else:&lt;br /&gt;
        print(f&amp;quot;Error: {response.status_code} - {response.text}&amp;quot;)&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def get_access_token(username, password, client_id, scope):&lt;br /&gt;
    url = f&amp;quot;https://{args.fqdn}/vedauth/authorize/oauth&amp;quot;&lt;br /&gt;
    payload = {&lt;br /&gt;
        &amp;quot;username&amp;quot;: username,&lt;br /&gt;
        &amp;quot;password&amp;quot;: password,&lt;br /&gt;
        &amp;quot;client_id&amp;quot;: client_id,&lt;br /&gt;
        &amp;quot;scope&amp;quot;: scope&lt;br /&gt;
    }&lt;br /&gt;
    response = requests.post(url, json=payload)&lt;br /&gt;
    if response.status_code == 200:&lt;br /&gt;
        return response.json()[&amp;quot;access_token&amp;quot;]&lt;br /&gt;
    else:&lt;br /&gt;
        response.raise_for_status()&lt;br /&gt;
&lt;br /&gt;
def search_cert_by_alias(token, alias):&lt;br /&gt;
    url = f&amp;quot;https://{args.fqdn}/api/v1/certificate/search&amp;quot;&lt;br /&gt;
    headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {token}&amp;quot;}&lt;br /&gt;
    params = {&amp;quot;alias&amp;quot;: alias}&lt;br /&gt;
    response = requests.get(url, headers=headers, params=params)&lt;br /&gt;
    if response.status_code == 200:&lt;br /&gt;
        certificates = response.json()[&amp;quot;certificates&amp;quot;]&lt;br /&gt;
        if certificates:&lt;br /&gt;
            return certificates[0][&amp;quot;id&amp;quot;]  # Assuming we take the first certificate ID found&lt;br /&gt;
    else:&lt;br /&gt;
        response.raise_for_status()&lt;br /&gt;
&lt;br /&gt;
def download_cert_pfx(token, certificate_id, output_file):&lt;br /&gt;
    url = f&amp;quot;https://args.fqdn/api/v1/certificate/{certificate_id}&amp;quot;&lt;br /&gt;
    headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {token}&amp;quot;}&lt;br /&gt;
    response = requests.get(url, headers=headers)&lt;br /&gt;
    if response.status_code == 200:&lt;br /&gt;
        # Assuming the certificate is returned in PKCS#12 format&lt;br /&gt;
        with open(output_file, &amp;quot;wb&amp;quot;) as f:&lt;br /&gt;
            f.write(response.content)&lt;br /&gt;
    else:&lt;br /&gt;
        response.raise_for_status()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    global args&lt;br /&gt;
    parser = argparse.ArgumentParser(&lt;br /&gt;
        description='Get venafi certifcate.')&lt;br /&gt;
    parser.add_argument('-a', '--alias', required=True, type=str,&lt;br /&gt;
                        action=EnvDefault, envvar='ALIAS',&lt;br /&gt;
                        help='Venafi alias.')&lt;br /&gt;
    parser.add_argument('-c', '--client-id', required=True, type=str,&lt;br /&gt;
                        action=EnvDefault, envvar='CLIENT_ID',&lt;br /&gt;
                        # default=os.environ.get('CLIENT_ID'),&lt;br /&gt;
                        help='Venafi client_id - Example: certificate:manage.')&lt;br /&gt;
    parser.add_argument('-p', '--password', required=True, type=str,&lt;br /&gt;
                        action=EnvDefault, envvar='PASSWORD',&lt;br /&gt;
                        # default=os.environ.get('PASSWORD'),&lt;br /&gt;
                        help='Venafi alias. Often the CN of hostname portion of CN')&lt;br /&gt;
    parser.add_argument('-s', '--scope', required=True, type=str,&lt;br /&gt;
                        action=EnvDefault, envvar='SCOPE',&lt;br /&gt;
                        # default=os.environ.get('SCOPE'),&lt;br /&gt;
                        help='Venafi scope.')&lt;br /&gt;
    parser.add_argument('-u', '--username', required=True, type=str,&lt;br /&gt;
                        action=EnvDefault, envvar='USERNAME',&lt;br /&gt;
                        # default=os.environ.get('USERNAME'),&lt;br /&gt;
                        help='Venafi alias.')&lt;br /&gt;
    parser.add_argument('-P', '--path', required=True, type=str,&lt;br /&gt;
                        help='Venafi certificate path.')&lt;br /&gt;
    parser.add_argument('-F', '--fqdn', required=True, type=str,&lt;br /&gt;
                        action=EnvDefault, envvar='FQDN',&lt;br /&gt;
                        # default=os.environ.get('FQDN'),&lt;br /&gt;
                        help='Venafi API FQDN.')&lt;br /&gt;
    parser.add_argument('--include-private-key', action='store_const', const=True, default=False,&lt;br /&gt;
                        help='Include certifcate private key.')&lt;br /&gt;
    parser.add_argument('--cert-password', type=str, default=False,&lt;br /&gt;
                        action=EnvDefault, envvar='CERT_PASSWORD',&lt;br /&gt;
                        help='Include certifcate private key.')&lt;br /&gt;
    args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
    token = get_access_token(args.username, args.password, args.client_id, args.scope)&lt;br /&gt;
    print(f&amp;quot;Access token: {token}&amp;quot;)&lt;br /&gt;
    print(args.include_private_key)&lt;br /&gt;
    rsp = get_cert_via_dn(token, args.path, args.include_private_key, args.cert_password)&lt;br /&gt;
    # rsp.raise_for_status()&lt;br /&gt;
    print(rsp)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
        main()&lt;br /&gt;
```&lt;/div&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
</feed>