建立一個 CSR,其中 OU 用逗號而不是加號分隔
在使用SSL憑證時,建立一個CSR(憑證簽署要求)是不可或缺的一步。而在建立CSR時,有一個重要的參數是OU(組織單位)欄位。通常情況下,OU欄位使用加號( )來分隔不同的組織單位。然而,根據php小編香蕉的建議,如果要正確創建CSR,應該使用逗號(,)來分隔不同的組織單位。這樣做可以確保CSR的正確性,避免在證書申請過程中出現問題。因此,在建立CSR時,請記得使用逗號分隔OU字段,以確保證書的準確性和順利申請。
問題內容
我正在嘗試使用加密庫在 go 中建立憑證簽署請求。問題是它產生的 CSR 的 OU 由
分隔,即
Subject: O = Example Org, OU = OU1 + OU = OU2, CN = example.com
如何產生由 、
分隔的 OU 的 CSR,例如
Subject: O = Example Org, OU = OU1, OU = OU2, CN = example.com
產生由
分隔的 OU 似乎是 crypto
lib 的預設行為。這可以使用加密庫來完成嗎?如果沒有,那麼是否有任何其他函式庫可以產生CSR,其OU由,
分隔
我嘗試使用下面的程式碼產生 CSR
package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "fmt" "os" ) func main() { privKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { fmt.Println(err) os.Exit(1) } csrTemplate := x509.CertificateRequest{ Subject: pkix.Name{ CommonName: "example.com", Organization: []string{"Example Org"}, OrganizationalUnit: []string{"OU1", "OU2"}, }, EmailAddresses: []string{"[email protected]"}, } csrBytes, err := x509.CreateCertificateRequest(rand.Reader, &csrTemplate, privKey) if err != nil { fmt.Println(err) os.Exit(1) } csrPem := pem.EncodeToMemory(&pem.Block{ Type: "CERTIFICATE REQUEST", Bytes: csrBytes, }) fmt.Println(string(csrPem)) }
解決方法
“ ”和“,”都不是憑證的一部分。它正是在提供憑證請求的人類可讀字串表示形式時所使用的。
詳細資訊:您的程式碼只是列印出 PEM 格式的 CSR 文件,而不是人類可讀的證書請求表示形式。使用 asn1parse 查看此 CSR 會得出:
$ openssl asn1parse -in csr.pem ... 37:d=4 hl=2 l= 10 cons: SEQUENCE 39:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName 44:d=5 hl=2 l= 3 prim: PRINTABLESTRING :OU1 49:d=4 hl=2 l= 10 cons: SEQUENCE 51:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName 56:d=5 hl=2 l= 3 prim: PRINTABLESTRING :OU2 61:d=3 hl=2 l= 20 cons: SET
因此,這些是單獨的對象,而不是中間有「 」的組合字串。當使用 req 顯示憑證要求時,會出現此「 」:
$ openssl req -in csr.pem -text Certificate Request: Data: Version: 1 (0x0) Subject: O = Example Org, OU = OU1 + OU = OU2, CN = example.com
這裡使用哪個分隔符號實際上可以進行配置。請參閱 openssl-namedisplay-options 並尋找 sep_comma_plus_space
,這是預設分隔符號。引用文件:
所以你已經明白了:在不同的RDN(即O、OU、CN、...)之間使用逗號,而在同一RDN 內的多個AVA 之間使用加號(如多個OU) 。另外,無論如何都不鼓勵使用多個 AVA。
以上是建立一個 CSR,其中 OU 用逗號而不是加號分隔的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

OpenSSL,作為廣泛應用於安全通信的開源庫,提供了加密算法、密鑰和證書管理等功能。然而,其歷史版本中存在一些已知安全漏洞,其中一些危害極大。本文將重點介紹Debian系統中OpenSSL的常見漏洞及應對措施。 DebianOpenSSL已知漏洞:OpenSSL曾出現過多個嚴重漏洞,例如:心臟出血漏洞(CVE-2014-0160):該漏洞影響OpenSSL1.0.1至1.0.1f以及1.0.2至1.0.2beta版本。攻擊者可利用此漏洞未經授權讀取服務器上的敏感信息,包括加密密鑰等。

後端學習路徑:從前端轉型到後端的探索之旅作為一名從前端開發轉型的後端初學者,你已經有了nodejs的基礎,...

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

在BeegoORM框架下,如何指定模型關聯的數據庫?許多Beego項目需要同時操作多個數據庫。當使用Beego...

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...
