如何创建自签名证书
community.crypto 集合提供了多个模块,可以创建私钥、证书签名请求和证书。本指南介绍如何创建自签名证书。
要创建任何类型的证书,您始终必须从私钥开始。您可以使用 community.crypto.openssl_privatekey 模块 来创建私钥。如果您只指定 path
,将使用默认参数。这将生成一个 4096 位 RSA 私钥
- name: Create private key (RSA, 4096 bits)
community.crypto.openssl_privatekey:
path: /path/to/certificate.key
您可以指定 type
来选择其他密钥类型,size
来选择不同的密钥大小(仅适用于 RSA 和 DSA 密钥),或者 passphrase
如果您想存储受密码保护的密钥
- name: Create private key (X25519) with password protection
community.crypto.openssl_privatekey:
path: /path/to/certificate.key
type: X25519
passphrase: changeme
要创建一个非常简单的自签名证书,不包含任何特定信息,您可以直接使用 community.crypto.x509_certificate 模块
- name: Create simple self-signed certificate
community.crypto.x509_certificate:
path: /path/to/certificate.pem
privatekey_path: /path/to/certificate.key
provider: selfsigned
(如果您为私钥使用了 passphrase
,则必须提供 privatekey_passphrase
。)
您可以使用 selfsigned_not_after
来定义证书的过期时间(默认:大约 10 年),并使用 selfsigned_not_before
来定义证书的有效起始时间(默认:现在)。
要定义证书的更多属性,如主题、主题备用名称 (SAN)、密钥用法、名称约束等,您需要先创建一个证书签名请求 (CSR) 并将其提供给 community.crypto.x509_certificate 模块。如果您不需要 CSR 文件,可以使用 community.crypto.openssl_csr_pipe 模块,如下例所示。(要将其存储到磁盘,请改用 community.crypto.openssl_csr 模块。)
- name: Create certificate signing request (CSR) for self-signed certificate
community.crypto.openssl_csr_pipe:
privatekey_path: /path/to/certificate.key
common_name: ansible.com
organization_name: Ansible, Inc.
subject_alt_name:
- "DNS:ansible.com"
- "DNS:www.ansible.com"
- "DNS:docs.ansible.com"
register: csr
- name: Create self-signed certificate from CSR
community.crypto.x509_certificate:
path: /path/to/certificate.pem
csr_content: "{{ csr.csr }}"
privatekey_path: /path/to/certificate.key
provider: selfsigned