将根证书和中间证书从全链提取到单独的文件中

问题描述 投票:0回答:1

是否可以通过 openssl 命令或 ansible 模块 从包含服务器、中间证书和根证书的全链文件中仅提取根中间证书,例如:

全链.crt:

-----BEGIN CERTIFICATE -----

.
.

SERVER CRT

.
.

-----END CERTIFICATE -----

-----BEGIN CERTIFICATE -----

.
.

INTERMEDIATE CERT

.
.

-----END CERTIFICATE -----

-----BEGIN CERTIFICATE -----

.
.

ROOT CERT

.
.

-----END CERTIFICATE -----

我想要的是从全链中仅提取根证书和中间证书到另一个文件中

ansible openssl client-certificates
1个回答
0
投票

有几种方法可以做到这一点:

OpenSSL:

openssl crl2pkcs7 -nocrl -certfile fullchain.crt | openssl pkcs7 -print_certs -noout

类似上述提到的内容可能会为您提供您正在寻找的内容,并将生成主题和发行人。

AWK:

awk '/-----BEGIN CERTIFICATE-----/{flag=1}/-----END CERTIFICATE-----/{print;flag=0}flag' fullchain.crt | tail -n +4 > root_intermediate.crt

安塞布尔:

- name: Extract Root and Intermediate Certificates
  ansible.builtin.shell:
    cmd: >
      awk '/-----BEGIN CERTIFICATE-----/{flag=1}/-----END CERTIFICATE-----/{print;flag=0}flag' {{ fullchain_path }} | tail -n +4 > {{ output_path }}
  args:
    executable: /bin/bash
  register: shell_output

基本上是使用shell的AWK方法

对于 Ansible,我投票支持第一或第二,我宁愿尽可能避免使用最佳实践建议的

ansible.builtin.shell

© www.soinside.com 2019 - 2024. All rights reserved.