自己成为一个证书颁发机构(CA)

为你的微服务架构或者集成测试创建一个简单的内部 CA。

传输层安全(TLS)模型(有时也称它的旧名称 SSL)基于证书颁发机构certificate authoritie(CA)的概念。这些机构受到浏览器和操作系统的信任,从而签名服务器的的证书以用于验证其所有权。

但是,对于内部网络,微服务架构或集成测试,有时候本地 CA更有用:一个只在内部受信任的 CA,然后签名本地服务器的证书。

这对集成测试特别有意义。获取证书可能会带来负担,因为这会占用服务器几分钟。但是在代码中使用“忽略证书”可能会被引入到生产环境,从而导致安全灾难。

CA 证书与常规服务器证书没有太大区别。重要的是它被本地代码信任。例如,在 Python requests 库中,可以通过将 REQUESTS_CA_BUNDLE 变量设置为包含此证书的目录来完成。

在为集成测试创建证书的例子中,不需要长期的证书:如果你的集成测试需要超过一天,那么你应该已经测试失败了。

因此,计算昨天明天作为有效期间隔:

>>> import datetime
>>> one_day = datetime.timedelta(days=1)
>>> today = datetime.date.today()
>>> yesterday = today - one_day
>>> tomorrow = today - one_day
复制代码

现在你已准备好创建一个简单的 CA 证书。你需要生成私钥,创建公钥,设置 CA 的“参数”,然后自签名证书:CA 证书总是自签名的。最后,导出证书文件以及私钥文件。

from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import hashes, serialization
from cryptography import x509
from cryptography.x509.oid import NameOID


private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
    backend=default_backend()
)
public_key = private_key.public_key()
builder = x509.CertificateBuilder()
builder = builder.subject_name(x509.Name([
    x509.NameAttribute(NameOID.COMMON_NAME, 'Simple Test CA'),
]))
builder = builder.issuer_name(x509.Name([
    x509.NameAttribute(NameOID.COMMON_NAME, 'Simple Test CA'),
]))
builder = builder.not_valid_before(yesterday)
builder = builder.not_valid_after(tomorrow)
builder = builder.serial_number(x509.random_serial_number())
builder = builder.public_key(public_key)
builder = builder.add_extension(
    x509.BasicConstraints(ca=True, path_length=None),
    critical=True)
certificate = builder.sign(
    private_key=private_key, algorithm=hashes.SHA256(),
    backend=default_backend()
)
private_bytes = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncrption())
public_bytes = certificate.public_bytes(
    encoding=serialization.Encoding.PEM)
with open("ca.pem", "wb") as fout:
    fout.write(private_bytes + public_bytes)
with open("ca.crt", "wb") as fout:
    fout.write(public_bytes)
复制代码

通常,真正的 CA 会需要证书签名请求(CSR)来签名证书。但是,当你是自己的 CA 时,你可以制定自己的规则!可以径直签名你想要的内容。

继续集成测试的例子,你可以创建私钥并立即签名相应的公钥。注意 COMMON_NAME 需要是 https URL 中的“服务器名称”。如果你已配置名称查询,你需要服务器能响应对 service.test.local 的请求。

service_private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
    backend=default_backend()
)
service_public_key = service_private_key.public_key()
builder = x509.CertificateBuilder()
builder = builder.subject_name(x509.Name([
   x509.NameAttribute(NameOID.COMMON_NAME, 'service.test.local')
]))
builder = builder.not_valid_before(yesterday)
builder = builder.not_valid_after(tomorrow)
builder = builder.public_key(public_key)
certificate = builder.sign(
    private_key=private_key, algorithm=hashes.SHA256(),
    backend=default_backend()
)
private_bytes = service_private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncrption())
public_bytes = certificate.public_bytes(
    encoding=serialization.Encoding.PEM)
with open("service.pem", "wb") as fout:
    fout.write(private_bytes + public_bytes)
复制代码

现在 service.pem 文件有一个私钥和一个“有效”的证书:它已由本地的 CA 签名。该文件的格式可以给 Nginx、HAProxy 或大多数其他 HTTPS 服务器使用。

通过将此逻辑用在测试脚本中,只要客户端配置信任该 CA,那么就可以轻松创建看起来真实的 HTTPS 服务器。


via: opensource.com/article/19/…

作者:Moshe Zadka 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Windows Server CA证书配置是指在Windows Server操作系统上配置证书颁发机构CA)的过程。具体包括以下步骤: 1. 安装证书服务角色:在Windows Server上安装证书服务角色,这样就可以创建和管理证书。 2. 创建证书颁发机构:使用证书服务管理控制台创建证书颁发机构,包括选择证书颁发机构类型、设置证书颁发机构名称和密钥长度等。 3. 配置证书模板:使用证书服务管理控制台配置证书模板,包括选择证书模板类型、设置证书模板名称和证书颁发机构等。 4. 颁发证书:使用证书服务管理控制台颁发证书,包括选择证书模板、输入证书请求信息和审核证书请求等。 5. 导出证书:使用证书服务管理控制台导出证书,包括选择证书、设置导出格式和保存证书等。 以上就是Windows Server CA证书配置的基本步骤。 ### 回答2: Windows Server CA证书配置指的是在Windows Server操作系统上配置数字证书颁发机构(Certificate Authority,简称CA)的过程。数字证书是一种可以证明身份或者加密通信的安全方式,通过CA颁发的数字证书可以保证网络安全,保护数据不被未经授权的人窃取或者篡改。 在Windows Server操作系统上配置CA证书的主要步骤如下: 第一步:安装CA证书服务 在Windows Server上安装证书服务有两种方式:在“服务器管理器”中选择“添加功能”然后选择“证书服务”;或者在命令行中运行“ServerManagerCmd -install ADCS-Cert-Authority”。 第二步:配置CA证书服务 在安装完证书服务后,需要对CA证书服务进行配置。在“服务器管理器”中选择“工具”,然后选择“证书授权和管理器”。 第三步:配置CA策略 在配置CA策略前,需要将CA证书导出成CER格式的证书文件。在“服务器管理器”中选择“工具”,然后选择“证书授权和管理器”。在左侧窗口中选择“颁发证书”,然后在右侧窗口中选择“发行新的证书”。 第四步:设置证书模板 证书模板包括各种类型的证书(如SSL证书、S/MIME证书等),用于配置数字证书的各种参数。在“服务器管理器”中选择“工具”,然后选择“证书授权和管理器”。在左侧窗口中选择“证书模板”,然后在右侧窗口中选择需要配置的证书模板。 第五步:颁发数字证书 在“服务器管理器”中选择“工具”,然后选择“证书授权和管理器”。在左侧窗口中选择“颁发证书”,然后在右侧窗口中选择证书模板,填写好各种参数,并向请求者颁发数字证书。 总之,通过以上步骤的操作,可以在Windows Server操作系统上成功地配置CA证书服务,并颁发数字证书,从而达到保障网络安全的效果。 ### 回答3: Windows Server CA证书配置是指在Windows Server操作系统下,配置证书颁发机构CA)的过程。CA证书是数字证书中最具有权威性的证书之一,它可以用来验证数字证书的真实性和合法性。在Windows Server系统中,可通过安装配置CA证书来提高计算机的安全性和信任度。 CA证书的配置包括以下几个步骤: 1. 安装CA证书 在Windows Server系统中,可以通过“添加角色和功能”向导来安装证书颁发机构CA)。安装后,系统会为CA颁发一个证书,称之为根证书。 2. 配置证书模板 证书模板是指在CA证书颁发过程中,所用到的证书模板。可以通过证书模板来限定证书的有效期、密钥长度等安全参数。Windows Server系统中,有多个内置的证书模板可供选择,同时也可以自定义证书模板,以满足个性化的需求。 3. 配置证书请求 在配置证书颁发之前,需要先生成证书请求。证书请求中包括申请人的公钥等信息,可通过Microsoft Management Console(MMC)来生成。在证书请求中,需要输入申请人的相关信息,如姓名、电子邮件地址等。 4. 颁发证书 完成以上配置后,即可进行证书颁发。在Windows Server系统中,可以通过MMC管理控制台来颁发证书,并将其安装到计算机或个人存储区中。在颁发证书时,可以设置证书的有效期、密钥长度等安全参数。 5. 配置证书验证 颁发证书后,需要对证书进行验证。在Windows Server系统中,可以通过配置证书链来实现证书验证。证书链是指由根证书、中间证书和最终证书组成的证书路径,其中根证书是最高级别的CA证书。 总之,通过以上步骤,可以在Windows Server系统中完成CA证书的配置过程,从而提高计算机的安全性和信任度。同时,在配置过程中,需要注意保护证书的私钥等关键信息,避免造成安全风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值