当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang pkix_test_data(ChainConf)用法及代码示例


pkix_test_data(ChainConf) -> TestConf
OTP 20.1
类型:
ChainConf = 
    #{server_chain := chain_opts(), client_chain := chain_opts()} |
 chain_opts()
TestConf = test_config() | [conf_opt()]

为客户端和服务器创建由证书及其私钥和 CA 证书捆绑组成的证书配置,旨在促进使用 X509 证书(通常通过 SSL/TLS)对应用程序进行自动测试。当您在测试场景中同时控制客户端和服务器时,可以使用测试数据。

当使用包含客户端和服务器链规范的映射调用此函数时;它生成客户端和服务器证书链,其中cacerts返回给服务器的包含服务器应信任的根证书以及服务器应向连接客户端提供的中间证书。服务器应该信任的根证书是用作客户端证书链的根的证书。反之亦然适用于cacerts为客户返回。根证书可以预先生成pkix_test_root_cert/2,或者如果指定了选项;它是(它们)生成的。

当使用证书选项列表调用此函数时;它生成仅包含一个节点证书的配置,其中 cacerts 包含根证书和应提供给对等方的中间证书。在这种情况下,所有对等方必须使用相同的根证书。例如,这在 Erlang 分布式集群中非常有用,其中任何节点对于另一个节点来说,或者充当服务器,或者充当客户端,具体取决于谁连接到谁。生成的证书包含主题替代名称,客户端证书中不需要该名称,但使证书对这两个角色都有用。

用于在生成的链中自定义证书的选项说明:

{digest, digest_type()}

用于与 key 选项一起签署证书的哈希算法。默认为 sha,即 sha1。

{key, key_params() | private_key()}

用于调用public_key:generate_key/1 的参数,以生成 key 或现有 key 。默认生成 ECDSA key 。请注意,如果 Erlang/OTP 是使用非常旧的 cryptolib 编译的,则这可能会失败。

{validity, {From::erlang:timestamp(), To::erlang:timestamp()}}

证书的有效期。

{extensions, [#'Extension'{}]}

要包含在证书中的扩展。

如果没有另外指定,CA 证书中包含的默认扩展是:

[#'Extension'{extnID = ?'id-ce-keyUsage',
              extnValue = [keyCertSign, cRLSign],
              critical = false},
#'Extension'{extnID = ?'id-ce-basicConstraints',
             extnValue = #'BasicConstraints'{cA = true},
             critical = true}]

如果没有另外指定,服务器对等证书中包含的默认扩展是:

[#'Extension'{extnID = ?'id-ce-keyUsage',
              extnValue = [digitalSignature, keyAgreement],
              critical = false},
#'Extension'{extnID = ?'id-ce-subjectAltName',
             extnValue = [{dNSName, Hostname}],
             critical = false}]

Hostname 是在调用该函数的 Erlang 节点中调用 net_adm:localhost() 的结果。

注意

请注意,生成的证书和 key 不提供正式正确的PKIX-trust-chain,并且它们不能用于实现真正的安全性。此函数仅供测试之用。

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 pkix_test_data(ChainConf) -> TestConf。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。