148 lines
5.5 KiB
HTML
148 lines
5.5 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}{{ cert.common_name }} - 证书详情{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
<h2>证书详情: {{ cert.common_name }}</h2>
|
|
<div>
|
|
{% if cert.status == 'active' %}
|
|
<a href="{{ url_for('revoke_certificate_view', cert_id=cert.id) }}" class="btn btn-warning me-2">吊销证书</a>
|
|
{% endif %}
|
|
<a href="{{ url_for('renew_certificate_view', cert_id=cert.id) }}" class="btn btn-primary me-2">续期</a>
|
|
<a href="{{ url_for('export_certificate_view', cert_id=cert.id) }}" class="btn btn-success">导出</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="card-title">基本信息</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<dl class="row">
|
|
<dt class="col-sm-4">通用名</dt>
|
|
<dd class="col-sm-8">{{ cert.common_name }}</dd>
|
|
|
|
<dt class="col-sm-4">颁发CA</dt>
|
|
<dd class="col-sm-8">{{ ca.name }}</dd>
|
|
|
|
<dt class="col-sm-4">组织</dt>
|
|
<dd class="col-sm-8">{{ cert.organization }}</dd>
|
|
|
|
<dt class="col-sm-4">组织单位</dt>
|
|
<dd class="col-sm-8">{{ cert.organizational_unit or 'N/A' }}</dd>
|
|
|
|
<dt class="col-sm-4">国家</dt>
|
|
<dd class="col-sm-8">{{ cert.country }}</dd>
|
|
|
|
<dt class="col-sm-4">州/省</dt>
|
|
<dd class="col-sm-8">{{ cert.state or 'N/A' }}</dd>
|
|
|
|
<dt class="col-sm-4">城市</dt>
|
|
<dd class="col-sm-8">{{ cert.locality or 'N/A' }}</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="card-title">技术信息</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<dl class="row">
|
|
<dt class="col-sm-4">密钥长度</dt>
|
|
<dd class="col-sm-8">{{ cert.key_size }}位</dd>
|
|
|
|
<dt class="col-sm-4">有效期</dt>
|
|
<dd class="col-sm-8">{{ cert.days_valid }}天</dd>
|
|
|
|
<dt class="col-sm-4">状态</dt>
|
|
<dd class="col-sm-8">
|
|
{% if cert.status == 'active' %}
|
|
<span class="badge bg-success">有效</span>
|
|
{% elif cert.status == 'revoked' %}
|
|
<span class="badge bg-danger">已吊销</span>
|
|
{% else %}
|
|
<span class="badge bg-secondary">已过期</span>
|
|
{% endif %}
|
|
</dd>
|
|
|
|
{% if cert.status == 'revoked' %}
|
|
<dt class="col-sm-4">吊销原因</dt>
|
|
<dd class="col-sm-8">{{ cert.revocation_reason or '未指定' }}</dd>
|
|
|
|
<dt class="col-sm-4">吊销时间</dt>
|
|
<dd class="col-sm-8">{{ cert.revoked_at.strftime('%Y-%m-%d %H:%M') }}</dd>
|
|
{% endif %}
|
|
|
|
<dt class="col-sm-4">创建者</dt>
|
|
<dd class="col-sm-8">{{ get_username(ca.created_by) }}</dd>
|
|
|
|
<dt class="col-sm-4">创建时间</dt>
|
|
<dd class="col-sm-8">{{ cert.created_at.strftime('%Y-%m-%d %H:%M') }}</dd>
|
|
|
|
<dt class="col-sm-4">过期时间</dt>
|
|
<dd class="col-sm-8">{{ cert.expires_at.strftime('%Y-%m-%d %H:%M') }}</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h5 class="card-title">SAN扩展</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
{% if cert.san_dns or cert.san_ip %}
|
|
{% if cert.san_dns %}
|
|
<h6>DNS名称:</h6>
|
|
<ul>
|
|
{% for dns in cert.san_dns.split(',') %}
|
|
<li>{{ dns }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
|
|
{% if cert.san_ip %}
|
|
<h6>IP地址:</h6>
|
|
<ul>
|
|
{% for ip in cert.san_ip.split(',') %}
|
|
<li>{{ ip }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
{% else %}
|
|
<p>未配置SAN扩展</p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h5 class="card-title">文件路径</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<dl class="row">
|
|
<dt class="col-sm-4">证书文件</dt>
|
|
<dd class="col-sm-8"><code>{{ cert.cert_path }}</code></dd>
|
|
|
|
<dt class="col-sm-4">私钥文件</dt>
|
|
<dd class="col-sm-8"><code>{{ cert.key_path }}</code></dd>
|
|
|
|
<dt class="col-sm-4">CSR文件</dt>
|
|
<dd class="col-sm-8"><code>{{ cert.csr_path }}</code></dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %} |