Venafi/vcert
GitHub: Venafi/vcert
VCert 是一个 Go SDK 和命令行工具,用于通过与 CyberArk(原 Venafi)机器身份管理服务集成来自动化 TLS 证书的密钥生成、申请、续期和撤销。
Stars: 105 | Forks: 74
[](https://opensource.org/licenses/Apache-2.0)


_**此开源项目由社区支持。** 如需报告问题或分享想法,请使用
**[Issues](../../issues)**;如果您对修复该问题有建议,请一并附上相关详情。
此外,请使用 **[Pull Requests](../../pulls)** 来贡献实际的 bug 修复或提议的增强功能。
我们欢迎并感谢所有贡献。有问题或想与我们的团队讨论什么吗?
**[在 Slack 上加入我们](https://join.slack.com/t/venafi-integrations/shared_invite/zt-i8fwc379-kDJlmzU8OiIQOJFSwiA~dg)**!_
# VCert
[](https://pkg.go.dev/github.com/Venafi/vcert)
[](https://goreportcard.com/report/github.com/Venafi/vcert)
[](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分析, 文档结构分析, 日志审计