


Create a CSR where OUs are separated by commas instead of plus signs
When using an SSL certificate, creating a CSR (Certificate Signing Request) is an essential step. When creating a CSR, an important parameter is the OU (Organizational Unit) field. Normally, the OU field uses a plus sign ( ) to separate different organizational units. However, according to the suggestion of PHP editor Banana, if you want to create a CSR correctly, you should use commas (,) to separate different organizational units. Doing so can ensure the correctness of the CSR and avoid problems during the certificate application process. Therefore, when creating a CSR, please remember to use commas to separate OU fields to ensure certificate accuracy and smooth application.
Question content
I'm trying to create a certificate signing request in go using the cryptographic library. The problem is that the OU of the CSR it generates is separated by
i.e.
Subject: O = Example Org, OU = OU1 + OU = OU2, CN = example.com
How to generate a CSR for an OU separated by ,
, for example
Subject: O = Example Org, OU = OU1, OU = OU2, CN = example.com
Generating OUs separated by
seems to be the default behavior of the crypto
lib. Can this be done using a cryptographic library? If not, then is there any other library that can generate CSR with OU separated by ,
I try to generate CSR using the code below
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)) }
Solution
" " and "," are not part of the certificate. It is used when providing a human-readable string representation of a certificate request.
Details: Your code simply prints out the PEM-formatted CSR file, not a human-readable representation of the certificate request. Viewing this CSR using asn1parse yields:
$ 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
Thus, these are separate objects, not combined strings with " " in the middle. When using req to display a certificate request, this " " appears:
$ openssl req -in csr.pem -text Certificate Request: Data: Version: 1 (0x0) Subject: O = Example Org, OU = OU1 + OU = OU2, CN = example.com
Which delimiter is used here is actually configurable. See openssl-namedisplay-options and look for sep_comma_plus_space
, which is the default separator. Quoting documents:
So you already understand: use commas between different RDNs (i.e. O, OU, CN,...), and use plus signs between multiple AVAs within the same RDN (i.e. multiple OUs) . Also, the use of multiple AVAs is discouraged under any circumstances.
The above is the detailed content of Create a CSR where OUs are separated by commas instead of plus signs. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



OpenSSL, as an open source library widely used in secure communications, provides encryption algorithms, keys and certificate management functions. However, there are some known security vulnerabilities in its historical version, some of which are extremely harmful. This article will focus on common vulnerabilities and response measures for OpenSSL in Debian systems. DebianOpenSSL known vulnerabilities: OpenSSL has experienced several serious vulnerabilities, such as: Heart Bleeding Vulnerability (CVE-2014-0160): This vulnerability affects OpenSSL 1.0.1 to 1.0.1f and 1.0.2 to 1.0.2 beta versions. An attacker can use this vulnerability to unauthorized read sensitive information on the server, including encryption keys, etc.

The article explains how to use the pprof tool for analyzing Go performance, including enabling profiling, collecting data, and identifying common bottlenecks like CPU and memory issues.Character count: 159

Queue threading problem in Go crawler Colly explores the problem of using the Colly crawler library in Go language, developers often encounter problems with threads and request queues. �...

The article discusses writing unit tests in Go, covering best practices, mocking techniques, and tools for efficient test management.

The library used for floating-point number operation in Go language introduces how to ensure the accuracy is...

Backend learning path: The exploration journey from front-end to back-end As a back-end beginner who transforms from front-end development, you already have the foundation of nodejs,...

The article discusses managing Go module dependencies via go.mod, covering specification, updates, and conflict resolution. It emphasizes best practices like semantic versioning and regular updates.

Under the BeegoORM framework, how to specify the database associated with the model? Many Beego projects require multiple databases to be operated simultaneously. When using Beego...
