當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。