OpenSSL

密碼編譯和 SSL/TLS 工具組

openssl-ca

名稱

openssl-ca - 最小化 CA 應用程式範例

語法

openssl ca [-help] [-verbose] [-quiet] [-config 檔名] [-name 區段] [-section 區段] [-gencrl] [-revoke 檔案] [-valid 檔案] [-status 序號] [-updatedb] [-crl_reason 原因] [-crl_hold 指示] [-crl_compromise 時間] [-crl_CA_compromise 時間] [-crl_lastupdate 日期] [-crl_nextupdate 日期] [-crldays 天數] [-crlhours 小時] [-crlsec 秒數] [-crlexts 區段] [-startdate 日期] [-enddate 日期] [-days 引數] [-md 引數] [-policy 引數] [-keyfile 檔名|URI] [-keyform DER|PEM|P12|ENGINE] [-key 引數] [-passin 引數] [-cert 檔案] [-certform DER|PEM|P12] [-selfsign] [-in 檔案] [-inform DER|<PEM>] [-out 檔案] [-notext] [-dateopt] [-outdir 目錄] [-infiles] [-spkac 檔案] [-ss_cert 檔案] [-preserveDN] [-noemailDN] [-batch] [-msie_hack] [-extensions 區段] [-extfile 區段] [-subj 引數] [-utf8] [-sigopt nm:v] [-vfyopt nm:v] [-create_serial] [-rand_serial] [-multivalue-rdn] [-rand 檔案] [-writerand 檔案] [-engine 識別碼] [-provider 名稱] [-provider-path 路徑] [-propquery propq] [憑證要求...]

說明

此指令模擬 CA 應用程式。請參閱 警告,特別是在考慮要將其用於生產環境時。

它會產生包含 X.509 版本 3 的憑證。除非另有指定,否則會包含金鑰識別碼擴充功能,如 x509v3_config(5) 中所述。

它可以用於簽署各種形式的證書請求 (CSR) 和產生證書吊銷清單 (CRL)。它也會維護一個已發布證書及其狀態的文字資料庫。在簽署證書時,可以使用 -in 選項指定單一請求,或在所有選項後指定一組 certreq 檔案來處理多個請求。

請注意,還有產生證書的精簡方式:reqx509 指令可以用於直接建立證書。有關詳細資訊,請參閱 openssl-req(1)openssl-x509(1)

ca 指令選項的說明依據各個目的區分。

選項

-help

列印使用說明訊息。

-verbose

這會列印關於正在執行的作業的額外詳細資訊。

-quiet

這會列印關於正在執行的作業的較少詳細資訊,這在批次指令碼或管線中可能很方便。

-config 檔名

指定要使用的組態檔。此選項為選用;有關預設值的說明,請參閱 openssl(1) 中的「指令摘要」

-name 區段, -section 區段

指定要使用的組態檔區段(覆寫 ca 區段中的 default_ca)。

-in 檔名

包含單一證書請求 (CSR) 的輸入檔名,由 CA 簽署。

-inform DER|PEM

載入證書請求 (CSR) 輸入檔時要使用的格式;預設會先嘗試 PEM。有關詳細資訊,請參閱 openssl-format-options(1)

-ss_cert 檔名

由 CA 簽署的單一自簽證書。

-spkac 檔名

包含單一 Netscape 簽署的公開金鑰和挑戰以及由 CA 簽署的其他欄位值的檔案。有關所需的輸入和輸出格式的資訊,請參閱 SPKAC 格式 區段。

-infiles

如果存在,這應該是最後一個選項,所有後續引數都會視為包含證書請求的檔案名稱。

-out 檔名

輸出證書的輸出檔。預設為標準輸出。證書詳細資訊也會以 PEM 格式列印到此檔案(但 -spkac 會輸出 DER 格式)。

-outdir 目錄

輸出證書的目錄。證書會寫入一個檔名,其中包含十六進位的序號,並附加上 .pem

-cert 檔名

CA 證書,必須與 -keyfile 相符。

-certform DER|PEM|P12

憑證輸入檔案中資料的格式;預設為未指定。有關詳細資料,請參閱 openssl-format-options(1)

-keyfile filename|uri

用於簽署憑證要求的 CA 私密金鑰。這必須與 -cert 相符。

-keyform DER|PEM|P12|ENGINE

私密金鑰輸入檔案的格式;預設為未指定。有關詳細資料,請參閱 openssl-format-options(1)

-sigopt nm:v

在簽署操作期間傳遞選項給簽章演算法。這些選項的名稱和值與演算法有關。

-vfyopt nm:v

在驗證操作期間傳遞選項給簽章演算法。這些選項的名稱和值與演算法有關。

簽署時通常也需要提供此選項,因為憑證簽署要求 (CSR) 的自簽章會針對所包含的公開金鑰進行驗證,而驗證可能需要其自己的選項集。

-key password

用於加密私密金鑰的密碼。由於在某些系統中,命令列引數是可見的(例如,在 Unix 上使用 ps(1) 時),因此應謹慎使用此選項。建議使用 -passin

-passin arg

金鑰檔案和憑證 PKCS#12 檔案的金鑰密碼來源。有關 arg 格式的詳細資訊,請參閱 openssl-passphrase-options(1)

-selfsign

表示已發行的憑證將使用簽署憑證要求的金鑰進行簽署(使用 -keyfile 提供)。使用不同金鑰簽署的憑證要求將被忽略。如果提供了 -spkac-ss_cert-gencrl,則會忽略 -selfsign

使用 -selfsign 的後果是,自簽章憑證會出現在憑證資料庫中的條目中(請參閱組態選項 database),並使用與自簽章憑證簽署的所有其他憑證相同的序號計數器。

-notext

不要將憑證的文字格式輸出到輸出檔案。

-dateopt

指定日期輸出格式。值為:rfc_822 和 iso_8601。預設為 rfc_822。

-startdate date

這允許明確設定開始日期。日期格式為 YYMMDDHHMMSSZ(與 ASN1 UTCTime 結構相同),或 YYYYMMDDHHMMSSZ(與 ASN1 GeneralizedTime 結構相同)。在兩種格式中,秒數 SS 和時區 Z 都必須存在。

-enddate date

這允許明確設定到期日。日期格式為 YYMMDDHHMMSSZ(與 ASN1 UTCTime 結構相同),或 YYYYMMDDHHMMSSZ(與 ASN1 GeneralizedTime 結構相同)。在兩種格式中,秒數 SS 和時區 Z 都必須存在。

-days arg

認證憑證的天數。

-md alg

要使用的訊息摘要。可以使用 openssl-dgst(1) 命令支援的任何摘要。對於不支援摘要的簽署演算法(例如 Ed25519 和 Ed448),將忽略任何設定的訊息摘要。此選項也適用於 CRL。

-policy arg

此選項定義要使用的 CA「政策」。這是設定檔中的區段,用於決定哪些欄位應為強制性或與 CA 憑證相符。請查看政策格式區段以取得更多資訊。

-msie_hack

此為已棄用的選項,用於讓此命令與 IE 憑證註冊控制項「certenr3」的非常舊版本搭配使用。它幾乎對所有內容都使用 UniversalStrings。由於舊控制項有各種安全漏洞,因此強烈建議不要使用它。

-preserveDN

通常,憑證的 DN 順序與相關政策區段中欄位的順序相同。當設定此選項時,順序與要求相同。這主要是為了與舊的 IE 註冊控制項相容,它僅接受 DN 順序與要求相符的憑證。Xenroll 不需要這樣做。

-noemailDN

如果要求 DN 中存在 EMAIL 欄位,則憑證的 DN 可以包含該欄位,但是,只將電子郵件設定到憑證的 altName 延伸模組中會是個好政策。當設定此選項時,EMAIL 欄位會從憑證的主旨中移除,並只設定到最終存在的延伸模組中。可以在設定檔中使用 email_in_dn 關鍵字來啟用此行為。

-batch

這會設定批次模式。在此模式中,不會詢問任何問題,所有憑證都將自動認證。

-extensions 區段

組態檔的區段,包含在簽發憑證時要新增的憑證延伸模組(除非使用 -extfile 選項,否則預設為 x509_extensions)。

請參閱 x509v3_config(5) 手冊頁面,以取得延伸模組區段格式的詳細資料。

-extfile 檔案

要從中讀取憑證延伸模組的額外組態檔(除非也使用 -extensions 選項,否則使用預設區段)。

-subj 引數

取代要求中提供的主旨名稱。

引數必須以 /type0=value0/type1=value1/type2=... 格式設定。特殊字元可以用 \(反斜線)跳脫,空白會保留。允許空白值,但對應的類型不會包含在產生的憑證中。只提供一個 / 會產生空的 RDN 序列(NULL-DN)。多值 RDN 可以透過在指定集合成員的屬性值斷言 (AVA) 之間放置 + 字元(而非 /)來形成。範例

/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe

-utf8

此選項會將欄位值詮釋為 UTF8 字串,預設會將其詮釋為 ASCII。這表示欄位值(無論是從終端機提示或從組態檔取得)都必須是有效的 UTF8 字串。

-create_serial

如果無法從組態檔中指定的文字檔讀取序號,指定此選項會產生一個新的亂數字號,做為下一個序號。若要取得亂數字號,請改用 -rand_serial 旗標;這只應使用於簡單的錯誤復原。

-rand_serial

產生一個大型亂數,做為序號。這會覆寫任何使用序號檔的選項或組態。

-multivalue-rdn

此選項已過時,沒有作用。

-rand 檔案, -writerand 檔案

請參閱 openssl(1) 中的「亂數狀態選項」 以取得詳細資料。

-engine id

請參閱 openssl(1) 中的「引擎選項」。此選項已過時。

-provider 名稱
-provider-path 路徑
-propquery propq

請參閱 openssl(1) 中的「提供者選項」provider(7)property(7)

CRL 選項

-gencrl

此選項會根據索引檔中的資訊產生 CRL。

-crl_lastupdate 時間

允許明確設定 CRL 的 lastUpdate 欄位的數值;如果沒有此選項,則使用目前時間。接受 YYMMDDHHMMSSZ 格式(與 ASN1 UTCTime 結構相同)或 YYYYMMDDHHMMSSZ 格式(與 ASN1 GeneralizedTime 結構相同)的時間。

-crl_nextupdate 時間

允許明確設定 CRL 的 nextUpdate 欄位的數值;如果存在此選項,則會忽略為 -crldays-crlhours-crlsec 提供的任何數值。接受與 -crl_lastupdate 相同格式的時間。

-crldays 數字

下一個 CRL 到期之前的日期數。也就是從現在開始到放置在 CRL nextUpdate 欄位中的日期數。

-crlhours 數字

下一個 CRL 到期之前的時數。

-crlsec 數字

下一個 CRL 到期之前的秒數。

-revoke 檔名

包含要吊銷的憑證的檔名。

-valid 檔名

包含要新增有效憑證項目的憑證的檔名。

-status 序號

顯示具有指定序號的憑證的吊銷狀態,然後結束。

-updatedb

更新資料庫索引以清除過期的憑證。

-crl_reason 原因

吊銷原因,其中 原因為下列其中之一:unspecifiedkeyCompromiseCACompromiseaffiliationChangedsupersededcessationOfOperationcertificateHoldremoveFromCRL原因的比對不區分大小寫。設定任何吊銷原因會使 CRL 為 v2。

實際上 removeFromCRL 並沒有特別有用,因為它只用於目前尚未執行的增量 CRL。

-crl_hold 指示

這會將 CRL 吊銷原因代碼設定為 certificateHold,並將保留指示設定為 指示,它必須是 OID。雖然可以使用任何 OID,但通常會使用 holdInstructionNone(RFC2459 不建議使用)、holdInstructionCallIssuerholdInstructionReject

-crl_compromise 時間

這會將吊銷原因設定為 keyCompromise,並將危害時間設定為 時間時間應為 GeneralizedTime 格式,即 YYYYMMDDHHMMSSZ

-crl_CA_compromise 時間

這與 crl_compromise 相同,除了撤銷原因已設為 CACompromise

-crlexts 區段

組態檔中包含要納入的 CRL 延伸區段。如果沒有 CRL 延伸區段,則會建立 V1 CRL;如果 CRL 延伸區段存在(即使為空),則會建立 V2 CRL。指定的 CRL 延伸為 CRL 延伸,而非 CRL 項目延伸。應注意,有些軟體(例如 Netscape)無法處理 V2 CRL。有關延伸區段格式的詳細資訊,請參閱 x509v3_config(5) 手冊頁面。

組態檔選項

包含此命令選項的組態檔區段如下:如果使用 -name 命令列選項,則會命名要使用的區段。否則,必須在組態檔的 ca 區段的 default_ca 選項中(或在組態檔的預設區段中)命名要使用的區段。除了 default_ca 之外,下列選項會直接從 ca 區段讀取:RANDFILE preserve msie_hack 除了 RANDFILE 之外,這可能是一個錯誤,並且可能會在未來的版本中變更。

許多組態檔選項與命令列選項相同。如果選項存在於組態檔和命令列中,則會使用命令列值。如果選項被描述為強制選項,則必須存在於組態檔中,或使用等效的命令列(如果有)。

oid_file

這會指定包含其他 物件識別碼 的檔案。檔案的每一行都應包含物件識別碼的數字形式,後接空白,然後是簡短名稱,後接空白,最後是長名稱。

oid_section

這會指定組態檔中包含額外物件識別碼的區段。每一行都應包含物件識別碼的簡短名稱,後接 = 和數字形式。使用此選項時,簡短名稱和長名稱相同。

new_certs_dir

-outdir 命令列選項相同。它指定將放置新憑證的目錄。強制選項。

certificate

-cert 相同。它提供包含 CA 憑證的檔案。強制選項。

private_key

-keyfile 選項相同。包含 CA 私密金鑰的檔案。強制選項。

RANDFILE

在啟動時,指定的檔案會載入亂數產生器,而在結束時,會寫入 256 個位元組。 (注意:不再需要使用 RANDFILE,請參閱 「歷史記錄」 區段。

default_days

-days 選項相同。認證憑證的天數。

default_startdate

-startdate 選項相同。認證憑證的開始日期。如果未設定,則會使用目前時間。

預設結束日期

-enddate 選項相同。此選項或 default_days(或命令列等效項)必須存在。

default_crl_hours default_crl_days

-crlhours-crldays 選項相同。這些選項僅在不存在命令列選項時使用。其中至少一個必須存在才能產生 CRL。

default_md

-md 選項相同。簽署演算法不需要摘要(例如 Ed25519 和 Ed448)的情況除外,否則為強制選項。

資料庫

要使用的文字資料庫檔案。強制選項。此檔案必須存在,但最初會是空的。

唯一主旨

如果給定值 yes,資料庫中的有效憑證項目必須具有唯一主旨。如果給定值 no,多個有效憑證項目可能具有完全相同的主旨。預設值為 yes,以與舊版(0.9.8 之前)的 OpenSSL 相容。但是,為了讓 CA 憑證更換更容易,建議使用值 no,特別是與 -selfsign 命令列選項結合使用時。

請注意,在某些情況下,建立憑證時沒有主旨是有效的。在沒有主旨的多個憑證的情況下,這不算是重複。

序號

包含下一個要使用的十六進位序號的文字檔案。強制選項。此檔案必須存在且包含有效的序號。

CRL 號碼

包含下一個要使用的十六進位 CRL 號碼的文字檔案。僅在此檔案存在時,CRL 號碼才會插入 CRL 中。如果此檔案存在,它必須包含有效的 CRL 號碼。

x509 擴充功能

-extensions 選項的後備選項。

CRL 擴充功能

-crlexts 選項的後備選項。

保留

-preserveDN 相同

DN 中的電子郵件

-noemailDN 相同。如果您希望從憑證的 DN 中移除 EMAIL 欄位,只需將其設定為「no」即可。如果不存在,預設值是允許在憑證的 DN 中使用 EMAIL 欄位。

MSIE 駭客

-msie_hack 相同

政策

-policy 相同。強制選項。有關更多資訊,請參閱 政策格式 部分。

name_optcert_opt

這些選項允許在要求使用者確認簽署時,用於顯示憑證詳細資料的格式。x509 工具程式 -nameopt-certopt 開關支援的所有選項都可以在這裡使用,但 no_signameno_sigdump 已永久設定,且無法停用(這是因為此時憑證尚未簽署,因此無法顯示憑證簽章)。

為方便起見,兩個值都接受 ca_default,以產生合理的輸出。

如果兩個選項都不存在,則使用 OpenSSL 較早版本中使用的格式。強烈建議不要使用舊格式,因為它只顯示政策區段中提到的欄位,錯誤處理多字元字串類型,而且不顯示延伸。

copy_extensions

決定如何處理憑證要求中的延伸。如果設為none或此選項不存在,則忽略延伸,而且不會複製到憑證。如果設為copy,則要求中存在的任何延伸(如果尚未存在)都會複製到憑證。如果設為copyall,則要求中的所有延伸都會複製到憑證:如果延伸已經存在於憑證中,則會先將其刪除。使用此選項前,請參閱警告區段。

此選項的主要用途是允許憑證要求提供某些延伸(例如 subjectAltName)的值。

政策格式

政策區段包含一組對應於憑證 DN 欄位的變數。如果值為「match」,則欄位值必須與 CA 憑證中的相同欄位相符。如果值為「supplied」,則必須存在。如果值為「optional」,則可以存在。除非設定了-preserveDN選項,否則不會提及政策區段中的任何欄位都會被靜默刪除,但這可以被視為一種怪癖,而不是預期的行為。

SPKAC 格式

-spkac命令列選項的輸入是 Netscape 簽署的公開金鑰和挑戰。這通常來自 HTML 表單中的KEYGEN標籤,用於建立新的私密金鑰。但是,可以使用 openssl-spkac(1) 建立 SPKAC。

檔案應包含變數 SPKAC,其設為 SPKAC 的值,以及所需的 DN 組成部分,作為名稱值對。如果您需要包含相同的組成部分兩次,則可以在其前面加上數字和「。」。

處理 SPKAC 格式時,如果使用-out標誌,則輸出為 DER,但如果傳送至 stdout 或使用-outdir標誌,則輸出為 PEM 格式。

範例

注意:這些範例假設此命令假設的目錄結構已經設定,而且相關檔案已經存在。這通常包括使用 openssl-req(1) 建立 CA 憑證和私密金鑰、序號檔案和空的索引檔案,並將它們放在相關目錄中。

若要使用以下範例組態檔,會建立目錄demoCAdemoCA/privatedemoCA/newcerts。CA 憑證會複製到demoCA/cacert.pem,其私密金鑰會複製到demoCA/private/cakey.pem。會建立一個檔案demoCA/serial,例如包含「01」,以及空的索引檔案demoCA/index.txt

簽署憑證要求

openssl ca -in req.pem -out newcert.pem

簽署 SM2 憑證要求

openssl ca -in sm2.csr -out sm2.crt -md sm3 \
        -sigopt "distid:1234567812345678" \
        -vfyopt "distid:1234567812345678"

簽署憑證要求,使用 CA 延伸

openssl ca -in req.pem -extensions v3_ca -out newcert.pem

產生 CRL

openssl ca -gencrl -out crl.pem

簽署多個要求

openssl ca -infiles req1.pem req2.pem req3.pem

驗證 Netscape SPKAC

openssl ca -spkac spkac.txt

範例 SPKAC 檔案(SPKAC 行已截斷以利清楚閱讀)

SPKAC=MIG0MGAwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PDhCeV/xIxUg8V70YRxK2A5
CN=Steve Test
emailAddress=steve@openssl.org
0.OU=OpenSSL Group
1.OU=Another Group

範例設定檔,其中包含此命令相關的區段

[ ca ]
default_ca      = CA_default            # The default ca section

[ CA_default ]

dir            = ./demoCA              # top dir
database       = $dir/index.txt        # index file.
new_certs_dir  = $dir/newcerts         # new certs dir

certificate    = $dir/cacert.pem       # The CA cert
serial         = $dir/serial           # serial no file
#rand_serial    = yes                  # for random serial#'s
private_key    = $dir/private/cakey.pem# CA private key

default_days   = 365                   # how long to certify for
default_crl_days= 30                   # how long before next CRL
default_md     = md5                   # md to use

policy         = policy_any            # default policy
email_in_dn    = no                    # Don't add the email into cert DN

name_opt       = ca_default            # Subject name display option
cert_opt       = ca_default            # Certificate display option
copy_extensions = none                 # Don't copy extensions from request

[ policy_any ]
countryName            = supplied
stateOrProvinceName    = optional
organizationName       = optional
organizationalUnitName = optional
commonName             = supplied
emailAddress           = optional

檔案

注意:所有檔案的位置都可能因編譯時期選項、設定檔項目、環境變數或命令列選項而變更。下列值反映預設值。

/usr/local/ssl/lib/openssl.cnf - master configuration file
./demoCA                       - main CA directory
./demoCA/cacert.pem            - CA certificate
./demoCA/private/cakey.pem     - CA private key
./demoCA/serial                - CA serial number file
./demoCA/serial.old            - CA serial number backup file
./demoCA/index.txt             - CA text database file
./demoCA/index.txt.old         - CA text database backup file
./demoCA/certs                 - certificate output file

限制

文字資料庫索引檔案是此程序的關鍵部分,如果損毀,可能很難修復。理論上可以從所有已發行的憑證和目前的 CRL 重新建置索引檔案:但沒有選項可以執行此動作。

目前不支援 V2 CRL 功能,例如 delta CRL。

儘管可以一次輸入和處理多個要求,但只能包含一個 SPKAC 或自簽憑證。

錯誤

此命令很古怪,有時甚至很惡意。

當存在大量憑證時,使用記憶體內文字資料庫可能會造成問題,因為顧名思義,資料庫必須儲存在記憶體中。

此命令真的需要重新撰寫,或在命令或介面層級公開所需功能,以便更友善的替代方案可以妥善處理事情。指令碼 CA.pl 有點幫助,但不多。

要求中不存在於政策中的任何欄位都會被靜默刪除。如果使用 -preserveDN 選項,則不會發生這種情況。為了強制執行 DN 中沒有 EMAIL 欄位(如 RFC 建議),不論要求主旨的內容為何,都可以使用 -noemailDN 選項。行為應該更友善且可設定。

拒絕驗證憑證來取消某些命令可能會建立一個空檔案。

警告

此命令最初是作為 CA 中如何執行的範例。其程式碼沒有生產品質。它不應該被用作一個完整的 CA,儘管有些人至少在內部將其用於此目的。這樣做時,應特別注意妥善保護用於簽署憑證的私密金鑰。建議將它們保存在安全硬體儲存裝置中,例如智慧卡或 HSM,並透過合適的引擎或加密提供者存取它們。

此命令實際上是一個單一使用者命令:不會在各種檔案上執行鎖定,而且嘗試在同一個資料庫上執行多個 openssl ca 命令可能會產生無法預測的結果。

應謹慎使用 copy_extensions 選項。如果不注意,可能會造成安全風險。例如,如果憑證要求包含具有 CA:TRUE 的 basicConstraints 延伸,且 copy_extensions 值設為 copyall,而使用者在顯示憑證時沒有發現這一點,那麼這將會給予要求者一個有效的 CA 憑證。可以透過將 copy_extensions 設為 copy,並在設定檔中包含具有 CA:FALSE 的 basicConstraints 來避免這種情況。然後,如果要求包含 basicConstraints 延伸,它將會被忽略。

建議也包含其他延伸的值,例如 keyUsage,以防止要求提供自己的值。

CA 憑證本身可以加上額外的限制。例如,如果 CA 憑證有

basicConstraints = CA:TRUE, pathlen:0

那麼即使憑證已使用 CA:TRUE 簽發,也不會有效。

歷程

自 OpenSSL 1.1.1 起,程式遵循 RFC5280。具體來說,憑證有效期(由 -startdate-enddate-days 指定)和 CRL 最後/下次更新時間(由 -crl_lastupdate-crl_nextupdate-crldays-crlhours-crlsec 指定)會編碼為 UTCTime,如果日期早於(包含)2049 年,則編碼為 GeneralizedTime,如果日期在 2050 年或之後。

OpenSSL 1.1.1 引進新的隨機產生器 (CSPRNG),並改善了種子機制。新的種子機制無需定義 RANDFILE 來儲存和還原隨機性。此選項主要保留以維持相容性。

-section 選項已於 OpenSSL 3.0.0 中新增。

-multivalue-rdn 選項已於 OpenSSL 3.0.0 中過時,且不具任何效果。

-engine 選項已於 OpenSSL 3.0 中棄用。

自 OpenSSL 3.2 起,產生的憑證會帶有 X.509 版本 3,且預設包含金鑰識別碼延伸。

另請參閱

openssl(1)openssl-req(1)openssl-spkac(1)openssl-x509(1)CA.pl(1)config(5)x509v3_config(5)

版權所有 2000-2023 The OpenSSL Project Authors。保留所有權利。

根據 Apache 授權條款 2.0(「授權條款」)授權。您只能在遵守授權條款的情況下使用此檔案。您可以在原始程式碼散佈中的 LICENSE 檔案或 https://www.openssl.org/source/license.html 取得一份副本。