{% extends 'generic/object_list.html' %} {% load helpers %} {% load i18n %} {% block title %}Import Certificates from URLs (CSV){% endblock %} {% block tabs %}{% endblock %} {% block table %}{% endblock %} {% block content %}
{{ row_count }} URL(s) ready to scan.
{% if errors %}{{ err.field }}{% endif %}: {{ err.message }}| # | URL | Host | Port | Verify chain | Tenant |
|---|---|---|---|---|---|
| {{ row.row }} | {{ row.url }} |
{{ row.host }} | {{ row.port }} | {% if row.verify_chain %}Yes{% else %}No{% endif %} | {{ row.tenant|default:"—" }} |
{{ imported }} certificate(s) imported.
| URL | Outcome | Detail |
|---|---|---|
{{ o.url }} |
{% if o.status == "imported" %}Imported {% elif o.status == "imported_untrusted" %}Imported (untrusted chain) {% elif o.status == "matched" %}Matched existing {% elif o.status == "blocked" %}Blocked (policy) {% elif o.status == "unreachable" %}Unreachable {% else %}Error{% endif %} | {% if o.pk %}{{ o.detail }} {% else %}{{ o.detail }}{% endif %} |
Provide a CSV of URLs. For each row the plugin opens a TLS connection, scrapes the certificate the server presents, and imports it. Only the public certificate is stored — private keys are never transmitted in a handshake. HTTPS only; private/loopback addresses are blocked unless an administrator allowlists their range.
{% if errors %}{{ err.field }}{% endif %}: {{ err.message }}url — required, https://host[:port] or host:port (port defaults to 443)assigned_device, assigned_vm, assigned_service — optional, name or IDtenant — optional, name/slug/IDverify_chain — optional true/false (default true); false imports self-signed/untrusted certs with a flagsni — optional SNI override