#证书 #ca #tls #mtls #域名 #ssl证书 #自签名

app cert-gen

使用CA生成自签名证书以供mtls使用

1 个不稳定版本

0.1.0 2023年4月13日

#7#mtls

MIT/Apache

11KB
103

cert-gen

这是一个Rust函数,用于生成由指定的证书颁发机构(CA)签名的新的SSL证书和私钥。该函数接受两个参数

  • ca_cert:一个Certificate对象,表示用于签署新证书的CA。
  • dn_name:一个String对象,表示要为其生成证书的域名。

该函数使用指定的域名创建一个新的DistinguishedName对象,并创建一个新的具有以下属性的CertificateParams对象

  • distinguished_name:具有指定域名的DistinguishedName对象。
  • not_before:当前日期和时间。
  • not_after:当前日期和时间加20年。
  • subject_alt_names:一个包含域名、"localhost"以及IP地址127.0.0.1和::1的Vec<SanType>

然后,该函数使用CertificateParams对象创建一个新的Certificate对象,并使用serialize_pem_with_signer方法使用指定的CA进行签名。最后,该函数将签名证书和私钥文件保存到磁盘上,文件名为您运行命令的目录中的certs目录,文件名基于指定的域名。

用法

要在您的Rust代码中使用此函数,您需要导入必要的crate和依赖项,然后使用所需参数调用该函数。以下是一个示例

use rcgen::Certificate;
use signed_cert_with_ca;

// Assume `ca_cert` is a `Certificate` object representing the CA to sign the new certificate with.
let dn_name = "example.com".to_string();

signed_cert_with_ca(ca_cert, dn_name);

这将生成一个由指定CA签名的用于example.com域的新SSL证书和私钥。

依赖项

此函数依赖于以下Rust crate

rcgen:用于生成SSL证书和私钥。std::fs:用于将生成的文件保存到磁盘。

许可协议

此代码在MIT许可证下发布。有关详细信息,请参阅LICENSE文件。

感谢

没有brsnik和est31的出色帮助,这个项目无法完成,所以非常感谢他们。

依赖项

~14–25MB
~448K SLoC