Skip to content

Instantly share code, notes, and snippets.

@jamescun
Created February 18, 2020 10:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamescun/f095971d1a1eb31f4753599c98e299fd to your computer and use it in GitHub Desktop.
Save jamescun/f095971d1a1eb31f4753599c98e299fd to your computer and use it in GitHub Desktop.
how Go handles multiple x509/ssl certificate common names
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
61:02:d2:d6:00:00:00:00:00:15
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=US, ST=Washington, L=Redmond, O=Microsoft Corporation, CN=Microsoft Product Secure Server CA/emailAddress=pki@microsoft.com
Validity
Not Before: Aug 13 21:20:05 2010 GMT
Not After : Nov 13 21:20:05 2011 GMT
Subject: C=US, ST=WA, L=Redmond, O=Microsoft, OU=MIH, CN=*.validation.sls.microsoft.com, CN=validation.sls.microsoft.com, CN=*.activation.sls.microsoft.com, CN=activation.sls.microsoft.com, CN=sls.microsoft.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:ac:ec:40:32:db:c7:d7:3c:99:87:7c:2d:9b:3b:
53:5a:8c:e4:42:58:e6:a3:b5:87:88:c7:40:4f:57:
a6:4e:92:44:01:a3:6d:3c:b7:6e:42:7e:a5:b0:8b:
39:90:82:99:08:e4:28:b9:f1:e9:a4:5a:44:b2:48:
98:23:fa:63:14:ab:44:84:72:28:75:6a:47:a2:81:
a5:4f:ad:66:86:68:5e:43:68:d9:62:40:bd:c6:68:
62:ce:ce:09:7b:42:5c:aa:0c:b0:71:82:4f:dc:e4:
b3:61:e5:73:1a:b1:18:d8:f9:47:52:d2:c8:a2:a4:
68:ac:3a:e9:c5:cf:6f:eb:f3
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Subject Key Identifier:
F8:A3:22:F3:E5:C2:AF:5B:39:08:63:02:A5:D6:5C:3C:CF:BF:F3:BD
X509v3 Authority Key Identifier:
keyid:9E:49:93:71:E6:FA:ED:97:80:08:89:3E:3C:F3:29:CC:71:6D:EF:5C
X509v3 CRL Distribution Points:
Full Name:
URI:http://crl.microsoft.com/pki/crl/products/MicProSecSerCA_2007-12-04.crl
URI:http://www.microsoft.com/pki/crl/products/MicProSecSerCA_2007-12-04.crl
Authority Information Access:
CA Issuers - URI:http://www.microsoft.com/pki/certs/MicProSecSerCA_2007-12-04.crt
Signature Algorithm: sha1WithRSAEncryption
1a:20:cf:e4:49:04:90:45:da:ac:7d:80:df:68:c7:28:52:d8:
3e:3d:e5:c8:30:6f:fd:bf:e5:fa:48:12:42:77:a8:3b:07:16:
de:ec:95:f3:bc:2a:f3:4a:e7:f1:16:7a:30:ca:cc:05:23:9f:
33:1d:37:b9:69:9c:5f:ec:cf:86:01:84:1e:04:9f:c7:90:bc:
c5:21:39:5f:18:4d:77:01:ae:4e:e2:5f:a2:e9:8d:d6:88:d4:
72:6b:d8:d6:22:26:41:a6:58:40:b6:7a:23:68:50:29:2e:e4:
3a:5c:d2:af:72:01:14:33:5f:16:89:9c:e3:30:1a:f3:13:b0:
72:0e:3c:f5:6c:0d:5f:de:eb:65:13:3e:62:2f:77:fa:50:51:
d0:38:7e:a9:69:cb:6f:08:1f:95:ec:c4:a0:aa:b6:c2:17:b7:
c9:ae:2d:f9:bc:f3:b0:92:53:42:c0:cd:6d:ff:65:67:40:de:
de:f5:9e:d3:b6:f6:2a:de:c8:2d:f0:33:f1:e9:b9:e7:d3:2d:
a5:9a:4a:35:c7:5a:52:ad:dc:af:b4:fc:c5:bd:75:61:fc:b8:
50:20:f6:07:9e:03:22:bb:6e:a1:4c:02:66:f5:b9:cf:30:01:
28:b0:c7:c6:78:ea:f0:09:1b:1b:54:0a:28:71:3e:4f:f6:99:
2a:20:2e:58
package main
import (
"crypto/x509"
"encoding/asn1"
"encoding/pem"
"fmt"
"io/ioutil"
)
var cnType = asn1.ObjectIdentifier{2, 5, 4, 3}
func main() {
pemBytes, _ := ioutil.ReadFile("ms.pem")
pem, _ := pem.Decode(pemBytes)
cert, err := x509.ParseCertificate(pem.Bytes)
if err != nil {
fmt.Println("could not parse cert: %s", err)
return
}
fmt.Println("Common Name:", cert.Subject.CommonName)
for _, name := range cert.Subject.Names {
if name.Type.Equal(cnType) {
fmt.Println(" Extra Common Name:", name.Value)
}
}
}
-----BEGIN CERTIFICATE-----
MIIFIjCCBAqgAwIBAgIKYQLS1gAAAAAAFTANBgkqhkiG9w0BAQUFADCBozELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiTWljcm9z
b2Z0IFByb2R1Y3QgU2VjdXJlIFNlcnZlciBDQTEgMB4GCSqGSIb3DQEJARYRcGtp
QG1pY3Jvc29mdC5jb20wHhcNMTAwODEzMjEyMDA1WhcNMTExMTEzMjEyMDA1WjCC
AQoxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDES
MBAGA1UEChMJTWljcm9zb2Z0MQwwCgYDVQQLEwNNSUgxJzAlBgNVBAMMHioudmFs
aWRhdGlvbi5zbHMubWljcm9zb2Z0LmNvbTElMCMGA1UEAxMcdmFsaWRhdGlvbi5z
bHMubWljcm9zb2Z0LmNvbTEnMCUGA1UEAwweKi5hY3RpdmF0aW9uLnNscy5taWNy
b3NvZnQuY29tMSUwIwYDVQQDExxhY3RpdmF0aW9uLnNscy5taWNyb3NvZnQuY29t
MRowGAYDVQQDExFzbHMubWljcm9zb2Z0LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOB
jQAwgYkCgYEArOxAMtvH1zyZh3wtmztTWozkQljmo7WHiMdAT1emTpJEAaNtPLdu
Qn6lsIs5kIKZCOQoufHppFpEskiYI/pjFKtEhHIodWpHooGlT61mhmheQ2jZYkC9
xmhizs4Je0JcqgywcYJP3OSzYeVzGrEY2PlHUtLIoqRorDrpxc9v6/MCAwEAAaOC
AXAwggFsMA4GA1UdDwEB/wQEAwIE8DATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNV
HQ4EFgQU+KMi8+XCr1s5CGMCpdZcPM+/870wHwYDVR0jBBgwFoAUnkmTceb67ZeA
CIk+PPMpzHFt71wwgaYGA1UdHwSBnjCBmzCBmKCBlaCBkoZHaHR0cDovL2NybC5t
aWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUHJvU2VjU2VyQ0FfMjAw
Ny0xMi0wNC5jcmyGR2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3By
b2R1Y3RzL01pY1Byb1NlY1NlckNBXzIwMDctMTItMDQuY3JsMFwGCCsGAQUFBwEB
BFAwTjBMBggrBgEFBQcwAoZAaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j
ZXJ0cy9NaWNQcm9TZWNTZXJDQV8yMDA3LTEyLTA0LmNydDANBgkqhkiG9w0BAQUF
AAOCAQEAGiDP5EkEkEXarH2A32jHKFLYPj3lyDBv/b/l+kgSQneoOwcW3uyV87wq
80rn8RZ6MMrMBSOfMx03uWmcX+zPhgGEHgSfx5C8xSE5XxhNdwGuTuJfoumN1ojU
cmvY1iImQaZYQLZ6I2hQKS7kOlzSr3IBFDNfFomc4zAa8xOwcg489WwNX97rZRM+
Yi93+lBR0Dh+qWnLbwgflezEoKq2whe3ya4t+bzzsJJTQsDNbf9lZ0De3vWe07b2
Kt7ILfAz8em559MtpZpKNcdaUq3cr7T8xb11Yfy4UCD2B54DIrtuoUwCZvW5zzAB
KLDHxnjq8AkbG1QKKHE+T/aZKiAuWA==
-----END CERTIFICATE-----
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment