跳转到主要内容

Custodia的FreeIPA Vault插件

项目描述

警告 custodia.ipa是一个技术预览版,具有临时API。

custodia.ipa是Custodia的一组插件集合。它提供了与Custodia的集成。它提供了与FreeIPA的集成。IPAVault插件是FreeIPA保险库的接口。机密信息被加密并存储在Dogtag的密钥恢复代理中。《IPACertRequest》插件按需创建私钥和签名证书。最后,《IPAInterface》插件是一个辅助插件,它封装了ipalib和GSSAPI身份验证。

要求

安装

  • pip

  • setuptools >= 18.0

运行时

  • custodia >= 0.5.0

  • ipalib >= 4.5.0

  • ipaclient >= 4.5.0

  • Python 2.7 (Python 3在IPA保险库中的支持不稳定。)

custodia.ipa需要一个IPA注册的主机和一个Kerberos TGT进行身份验证。建议使用密钥表文件或GSS-Proxy提供凭据。此外,《IPAVault》依赖于密钥恢复代理服务(ipa-kra-install)。

测试和开发

  • wheel

  • tox

虚拟环境需求

custodia.ipa依赖于几个二进制扩展和共享库,例如python-cryptography,python-gssapi,python-ldap和python-nss。在虚拟环境中安装时,需要C编译器和几个开发包。

$ virtualenv venv
$ venv/bin/pip install --upgrade custodia.ipa

Fedora

$ sudo dnf install python2 python-pip python-virtualenv python-devel \
    gcc redhat-rpm-config krb5-workstation krb5-devel libffi-devel \
    nss-devel openldap-devel cyrus-sasl-devel openssl-devel

Debian / Ubuntu

$ sudo apt-get update
$ sudo apt-get install -y python2.7 python-pip python-virtualenv python-dev \
    gcc krb5-user libkrb5-dev libffi-dev libnss3-dev libldap2-dev \
    libsasl2-dev libssl-dev

示例配置

创建目录

$ sudo mkdir /etc/custodia /var/lib/custodia /var/log/custodia /var/run/custodia
$ sudo chown USER:GROUP /var/lib/custodia /var/log/custodia /var/run/custodia
$ sudo chmod 750 /var/lib/custodia /var/log/custodia

创建服务帐户和密钥表

$ kinit admin
$ ipa service-add custodia/$HOSTNAME
$ ipa service-allow-create-keytab custodia/$HOSTNAME --users=admin
$ mkdir -p /etc/custodia
$ ipa-getkeytab -p custodia/$HOSTNAME -k /etc/custodia/ipa.keytab
$ chown custodia:custodia /etc/custodia/ipa.keytab

IPAcert请求插件需要额外的权限

$ ipa privilege-add \
    --desc="Create and request service certs with Custodia" \
    "Custodia Service Certs"
$ ipa privilege-add-permission \
    --permissions="Retrieve Certificates from the CA" \
    --permissions="Request Certificate" \
    --permissions="Revoke Certificate" \
    --permissions="System: Modify Services" \
    "Custodia Service Certs"
# for add_principal=True
$ ipa privilege-add-permission \
    --permissions="System: Add Services" \
    "Custodia Service Certs"
$ ipa role-add \
    --desc="Create and request service certs with Custodia" \
    "Custodia Service Cert Adminstrator"
$ ipa role-add-privilege \
    --privileges="Custodia Service Certs" \
    "Custodia Service Cert Adminstrator"
$ ipa role-add-member \
    --services="custodia/$HOSTNAME" \
    "Custodia Service Cert Adminstrator"

创建/etc/custodia/ipa.conf

# /etc/custodia/ipa.conf

[global]
debug = true
makedirs = true

[auth:ipa]
handler = IPAInterface
keytab = ${configdir}/${instance}.keytab
ccache = FILE:${rundir}/ccache

[auth:creds]
handler = SimpleCredsAuth
uid = root
gid = root

[authz:paths]
handler = SimplePathAuthz
paths = /. /secrets

[store:vault]
handler = IPAVault

[store:cert]
handler = IPACertRequest
backing_store = vault

[/]
handler = Root

[/secrets]
handler = Secrets
store = vault

[/secrets/certs]
handler = Secrets
store = cert

运行Custodia服务器

$ systemctl start custodia@ipa.socket

IPA证书请求

《IPACertRequest》存储插件可以即时生成或撤销证书。它使用后端存储来缓存证书和私钥。插件可以自动创建服务主体。然而,主机必须已经存在。《IPACertRequest》不会按需创建主机条目。

GET /path/to/store/HTTP/client1.ipa.example这样的请求为服务HTTP/client1.ipa.example生成私钥和CSR,DNS主题备用名称为client1.ipa.example。然后,CSR被转发到IPA并由Dogtag签名。生成的证书及其信任链与私钥一起作为PEM包返回。

$ export CUSTODIA_INSTANCE=ipa
$ custodia-cli get /certs/HTTP/client1.ipa.example
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

Issuer: organizationName=IPA.EXAMPLE, commonName=Certificate Authority
Subject: organizationName=IPA.EXAMPLE, commonName=client1.ipa.example
Serial Number: 22
Validity:
    Not Before: 2017-04-27 09:44:20
    Not After: 2019-04-28 09:44:20
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

Issuer: organizationName=IPA.EXAMPLE, commonName=Certificate Authority
Issuer: organizationName=IPA.EXAMPLE, commonName=Certificate Authority
Serial Number: 1
Validity:
    Not Before: 2017-04-26 08:24:11
    Not After: 2037-04-26 08:24:11
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

DELETE请求将从后端存储中删除证书/密钥对,并撤销证书。

尚未实现撤销或过期证书的自动续订。

FreeIPA 4.4支持

默认设置和权限针对FreeIPA >= 4.5进行优化。对于4.4,必须使用chain=False配置插件。还需要额外的权限“带有SubjectAltName的请求证书”。

ipa privilege-add-permission \
    --permissions="Request Certificate with SubjectAltName" \
    "Custodia Service Certs"

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

custodia.ipa-0.4.2.tar.gz (33.9 kB 查看哈希值)

上传时间

构建分布

custodia.ipa-0.4.2-py2.py3-none-any.whl (16.6 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持