Venafi/vcert

GitHub: Venafi/vcert

VCert 是一个 Go SDK 和命令行工具,用于通过与 CyberArk(原 Venafi)机器身份管理服务集成来自动化 TLS 证书的密钥生成、申请、续期和撤销。

Stars: 105 | Forks: 74

[![Apache 2.0 License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![社区支持](https://img.shields.io/badge/Support%20Level-Community-brightgreen) ![兼容 Certificate Manager, Self-hosted 17.3+ & Certificate Manager, SaaS & Workload Identity Manager](https://img.shields.io/badge/Compatibility-Certificate%20Manager%2C%20Self--Hosted_17.3%2B_%26_Certificate%20Manager%2C%20SaaS_%26_Workload%20Identity%20Manager-f9a90c) _**此开源项目由社区支持。** 如需报告问题或分享想法,请使用 **[Issues](../../issues)**;如果您对修复该问题有建议,请一并附上相关详情。 此外,请使用 **[Pull Requests](../../pulls)** 来贡献实际的 bug 修复或提议的增强功能。 我们欢迎并感谢所有贡献。有问题或想与我们的团队讨论什么吗? **[在 Slack 上加入我们](https://join.slack.com/t/venafi-integrations/shared_invite/zt-i8fwc379-kDJlmzU8OiIQOJFSwiA~dg)**!_ # VCert [![GoDoc](https://godoc.org/github.com/Venafi/vcert?status.svg)](https://pkg.go.dev/github.com/Venafi/vcert) [![Go Report Card](https://goreportcard.com/badge/github.com/Venafi/vcert)](https://goreportcard.com/report/github.com/Venafi/vcert) [![Used By](https://sourcegraph.com/github.com/Venafi/vcert/-/badge.svg)](https://sourcegraph.com/github.com/Venafi/vcert?badge) VCert 是一个 Go 库、SDK 和命令行实用工具,旨在简化密钥生成和机器身份(也称为 SSL/TLS 证书和密钥)的注册 这些操作通过使用 [CyberArk Certificate Manager, Self-Hosted](https://www.cyberark.com/products/certificate-manager/) 或 [CyberArk Certificate Manager, SaaS](https://www.cyberark.com/products/certificate-manager/) 或 [CyberArk Workload Identity Manager](https://www.cyberark.com/products/workload-identity-manager/) 来确保符合企业安全策略。 请参阅 [VCert CLI for CyberArk Certificate Manager, Self-Hosted](README-CLI-PLATFORM.md) 或 [VCert CLI for CyberArk Certificate Manager, SaaS](README-CLI-CLOUD.md) 或 [VCert CLI for CyberArk Workload Identity Manager](README-CLI-FIREFLY.md) 以开始使用此命令行实用工具。 #### 兼容性 VCert 版本使用最新版本的 CyberArk Certificate Manager, Self-Hosted 进行测试。 [最新的 VCert 版本](../../releases/latest) 的常规功能应与 CyberArk Certificate Manager, Self-Hosted 17.3 或更高版本兼容。 自定义字段和实例跟踪需要 CyberArk Certificate Manager, Self-Hosted 18.2 或更高版本,而令牌认证需要 CyberArk Certificate Manager, Self-Hosted 20.1 或更高版本。 ## 开发者设置 1. 根据 https://golang.org/doc/install 配置您的 Go 环境。 2. 验证 GOPATH 环境变量是否设置正确 3. 下载源代码: go get github.com/Venafi/vcert/v5 或在 Go 1.13 之前的版本中 git clone https://github.com/Venafi/vcert.git $GOPATH/src/github.com/Venafi/vcert/v5 如果在启用了 go modules 的 Go 1.11 或 Go 1.13 及更高版本中,请确保在 `$GOPATH/src` 之外进行 clone git clone https://github.com/Venafi/vcert.git 4. 为 Linux、macOS 和 Windows 构建命令行实用工具: make build ## 使用 VCert 将 CyberArk 与您的应用集成 有关编程使用的代码示例,请查看 [examples 文件夹](./examples) 中的文件。 ### 通用部分 1. 在您的 `main.go` 文件中,进行以下导入声明: import ( "github.com/Venafi/vcert/v5" "github.com/Venafi/vcert/v5/pkg/certificate" "github.com/Venafi/vcert/v5/pkg/endpoint" ) 2. 创建一个类型为 `&vcert.Config` 的配置对象,用于指定 CyberArk 的连接详细信息。解决方案通常 设计为从 secrets vault、.ini 文件、环境变量或命令行参数中获取这些详细信息。 ### 注册证书 1. 通过使用配置对象调用 vcert 类的 `NewClient` 方法来实例化客户端。 2. 组合一个类型为 `&certificate.Request` 的证书请求对象。 3. 通过调用客户端的 `GenerateRequest` 方法,为证书请求生成密钥对和 CSR。 4. 将证书请求对象传递给客户端的 `RequestCertificate` 方法以提交请求。 5. 使用请求 ID 通过客户端的 `RetrieveCertificate` 方法提取证书。 ### 针对域的新 TLS 监听器 1. 调用 `vcert.Config` 的 `NewListener` 方法,并将域列表作为参数传入。 例如 `("test.example.com:8443", "example.com")` 2. 将获取到的 `net.Listener` 作为参数传递给内置的 `http.Serve` 或其他 https 服务器。 示例目前处于一种可以使用以下命令(在设置好稍后讨论的环境变量之后)构建/执行的状态: ``` go build -o cli ./example go test -v ./example -run TestRequestCertificate ``` ## 与 CyberArk Certificate Manager, Self-Hosted 配合使用的前置条件 1. 一个已被授予 WebSDK 访问权限的用户账户 2. 一个文件夹(区域),在该文件夹中用户已被授予以下权限:`View`、`Read`、`Write`、`Create`、 `Revoke`(用于撤销操作)和 `Private Key Read`(用于当 CSR 由服务生成时的提取操作) 3. 应用于该文件夹的策略须指定: 1. CyberArk Certificate Manager, Self-Hosted 将用于注册由 VCert 提交的证书请求的 CA 模板 2. 组织单位 (OU)、组织 (O)、城市 (L)、州/省 (ST) 和国家 (C) 的 Subject DN 值 3. 管理类型未锁定或锁定为 'Enrollment' 4. 证书签名请求 (CSR) 生成已解锁或未锁定为 'Service Generated CSR' 5. 在应用程序上生成密钥/CSR 未锁定或锁定为 'No' 6. (推荐)将禁用自动续订设置为 'Yes' 7. (推荐)将密钥位长设置为 2048 或更高 8. (推荐)适当分配域名白名单策略 要求通过策略分配 CA 模板遵循了 CyberArk 的长期最佳实践, 这也符合我们的设计目标,即为 VCert 用户保持证书请求过程简单。 如果您需要能够在请求中指定 CA 模板,可以使用 CyberArk Certificate Manager, Self-Hosted REST API, 但请注意,这违背了 CyberArk 的建议。 ## 与 CyberArk Certificate Manager, Self-Hosted 和 CyberArk Certificate Manager, SaaS 的测试 单元测试: ``` make test ``` CyberArk Certificate Manager, Self-Hosted 和 CyberArk Certificate Manager, SaaS 的集成测试需要访问这些产品。环境 变量用于指定所需的设置,包括凭据。CyberArk Certificate Manager, SaaS API 密钥和区域值 片段(即 `Application Name`\\`Issuing Template API Alias`)可以在 Web 界面中轻松找到。 ``` export TPP_URL=https://cmsh.cyberark.example/vedsdk export TPP_USER=tpp-user export TPP_PASSWORD=tpp-password export TPP_ZONE='some\suggested_policy' export TPP_ZONE_RESTRICTED='some\locked_policy' export TPP_ZONE_ECDSA='some\ecdsa_policy' make tpp_test ``` ``` export CLOUD_URL=https://api.venafi.cloud/v1 export CLOUD_APIKEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx export CLOUD_ZONE='My Application\Permissive CIT' export CLOUD_ZONE_RESTRICTED='Your Application\Restrictive CIT' make cloud_test ``` 命令行实用工具测试使用了 [Cucumber & Aruba](https://github.com/cucumber/aruba) 功能文件。 - 并行运行所有功能的测试: make cucumber - 仅运行特定功能的测试: make cucumber FEATURE=./features/basic/version.feature 可用的功能包括: - `basic` - `config` - `enroll` - `format` - `gencsr` - `renew` - `revoke` 运行时,这些测试将在其自己的 Docker 容器中使用 Ruby 版本的 Cucumber 执行。 完成的测试运行将报告通过、失败或跳过的测试场景和步骤的数量。 ## Playbook 功能 有关 playbook 及其构建方式的详细说明,请点击此处查看:[Readme Playbook](./README-PLAYBOOK.md) ## 许可证 版权所有 © Venafi, Inc. 和 CyberArk Software Ltd.("CyberArk") VCert 根据 Apache License, Version 2.0 获得许可。有关完整的许可证文本,请参阅 [LICENSE](./LICENSE)。 如有问题/意见,请发送至 mis-opensource@cyberark.com。
标签:EVTX分析, 文档结构分析, 日志审计