libre_ops.ca_keys
证书授权机构密钥
这是一个用于生成私有CA密钥和签名证书的Ansible角色。这些密钥和证书可以用于保护服务器/客户端应用程序,在这里需要加密传输中的数据和节点之间的身份验证。
当正确配置时,由私有CA签名的密钥可以防止中间人攻击(MITM),并可以用于双向身份验证。一个例子可能是在Kafka或Elastic Stack集群中保护节点之间的连接。
该角色遵循以下大致步骤:
- 生成CA(证书授权机构)密钥对
- 为指定节点生成密钥和CSR(证书签名请求)
- 使用CA签署CSR,创建签名证书(CRT)
- 可选地将必要的密钥打包到Java密钥库/信任库二进制文件中
默认值
查看所有默认值 这里,并根据需要覆盖它们。
使用方法
推荐的用法:在本地剧本中运行此角色(见下文),然后将生成的文件移到安全的地方。不要让密钥随意放置。此代码按原样提供,如何使用和存储生成的密钥是您的责任!
如果存在,您可以使用此角色从现有的CA证书创建新的密钥和CRT。
创建后,将所需的文件移到您正在使用的项目中。您可以使用
Ansible Vault 加密文件(包括jks二进制文件),并在上传时,如果提供了vault密码,Ansible模块如 copy
将在上传过程中解密它们。
检查密钥
您可以(并且应该)使用各种 openssl
命令检查密钥。以下是一些示例:
openssl x509 -in generated_keys/ca.crt -text -noout
openssl rsa -in generated_keys/<key-name>.key -check
openssl x509 -in generated_keys/<key-name>.crt -text -noout
Python限制
由于Ansible的一个错误(修复已合并到 devel
分支),在运行生成Java密钥库的任务时,您必须使用Python 2.7。有关详细信息,请查看 此问题。
示例剧本
- name: 生成密钥
hosts: 127.0.0.1
connection: local
vars:
ansible_python_interpreter: '/usr/bin/python2.7'
roles:
- role: libre_ops.ca_keys
vars:
cert_organisation: 示例公司
cert_unit: 密钥部门
cert_country: FR
cert_state: 巴黎
cert_location: 巴黎
create_keys:
- filename: 服务器
subject:
- "/CN=app.client.org"
- "/O={{ cert_organisation }}"
- "/OU={{ cert_unit }}"
- "/C={{ cert_country }}"
- "/ST={{ cert_state }}"
- "/L={{ cert_location }}"
- filename: 客户端
subject:
- "/CN=app.server.org"
- "/O={{ cert_organisation }}"
- "/OU={{ cert_unit }}"
- "/C={{ cert_country }}"
- "/ST={{ cert_state }}"
- "/L={{ cert_location }}"