it-swarm.dev

Wie kann ich mit SubjectAltName unter Verwendung von OpenSSL ein selbstsigniertes Zertifikat generieren?

Ich versuche, ein selbstsigniertes Zertifikat mit OpenSSL mit SubjectAltName zu generieren. Während ich die CSR für das Zertifikat generiere, muss ich vermutlich die v3-Erweiterungen von OpenSSL x509 verwenden. Ich benutze :

openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730

Kann mir jemand bei der genauen Syntax helfen?

106
mohanjot

Kann mir jemand bei der genauen Syntax helfen?

Es ist ein dreistufiger Prozess, bei dem die openssl.cnf - Datei geändert wird. Möglicherweise können Sie dies nur mit Befehlszeilenoptionen tun, aber ich mache es nicht so.

Suchen Sie Ihre openssl.cnf - Datei. Es befindet sich wahrscheinlich in /usr/lib/ssl/openssl.cnf:

$ find /usr/lib -name openssl.cnf
/usr/lib/openssl.cnf
/usr/lib/openssh/openssl.cnf
/usr/lib/ssl/openssl.cnf

Auf meinem Debian-System wird /usr/lib/ssl/openssl.cnf Vom eingebauten Programm openssl verwendet. Auf neueren Debian-Systemen befindet es sich unter /etc/ssl/openssl.cnf

Sie können bestimmen, welcher openssl.cnf Verwendet wird, indem Sie der Datei einen falschen XXX hinzufügen und prüfen, ob openssl Drosseln vorhanden sind.


Ändern Sie zunächst die Parameter req. Fügen Sie einen Abschnitt alternate_names Zu openssl.cnf Mit den Namen hinzu, die Sie verwenden möchten. Es gibt keine vorhandenen Abschnitte alternate_names, Daher spielt es keine Rolle, wo Sie sie hinzufügen.

[ alternate_names ]

DNS.1        = example.com
DNS.2        = www.example.com
DNS.3        = mail.example.com
DNS.4        = ftp.example.com

Fügen Sie anschließend dem Abschnitt existing[ v3_ca ] Folgendes hinzu. Suchen Sie nach der genauen Zeichenfolge [ v3_ca ]:

subjectAltName      = @alternate_names

Sie können keyUsage unter [ v3_ca ] Wie folgt ändern:

keyUsage = digitalSignature, keyEncipherment

digitalSignature und keyEncipherment sind Standard für ein Serverzertifikat. Mach dir keine Sorgen um nonRepudiation. Es ist ein nutzloses Stück, das sich Comp-Sci-Leute ausgedacht haben, die Anwälte werden wollten. Es bedeutet nichts in der Rechtswelt.

Letztendlich laufen die IETF (RFC 5280), Browser und CAs schnell und locker, sodass es wahrscheinlich keine Rolle spielt, welche Schlüsselverwendung Sie bereitstellen.


Ändern Sie zweitens die Signaturparameter. Finden Sie diese Zeile im Abschnitt CA_default:

# Extension copying option: use with caution.
# copy_extensions = copy

Und ändern Sie es zu:

# Extension copying option: use with caution.
copy_extensions = copy

Dadurch wird sichergestellt, dass die SANs in das Zertifikat kopiert werden. Die anderen Möglichkeiten zum Kopieren der DNS-Namen sind fehlerhaft.


Drittens erstellen Sie Ihre selbstsignierten:

$ openssl genrsa -out private.key 3072
$ openssl req -new -x509 -key private.key -sha256 -out certificate.pem -days 730
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
...

Überprüfen Sie abschließend das Zertifikat:

$ openssl x509 -in certificate.pem -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 9647297427330319047 (0x85e215e5869042c7)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, ST=MD, L=Baltimore, O=Test CA, Limited, CN=Test CA/[email protected]
        Validity
            Not Before: Feb  1 05:23:05 2014 GMT
            Not After : Feb  1 05:23:05 2016 GMT
        Subject: C=US, ST=MD, L=Baltimore, O=Test CA, Limited, CN=Test CA/[email protected]
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (3072 bit)
                Modulus:
                    00:e2:e9:0e:9a:b8:52:d4:91:cf:ed:33:53:8e:35:
                    ...
                    d6:7d:ed:67:44:c3:65:38:5d:6c:94:e5:98:ab:8c:
                    72:1c:45:92:2c:88:a9:be:0b:f9
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                34:66:39:7C:EC:8B:70:80:9E:6F:95:89:DB:B5:B9:B8:D8:F8:AF:A4
            X509v3 Authority Key Identifier: 
                keyid:34:66:39:7C:EC:8B:70:80:9E:6F:95:89:DB:B5:B9:B8:D8:F8:AF:A4

            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign
            X509v3 Subject Alternative Name: 
                DNS:example.com, DNS:www.example.com, DNS:mail.example.com, DNS:ftp.example.com
    Signature Algorithm: sha256WithRSAEncryption
         3b:28:fc:e3:b5:43:5a:d2:a0:b8:01:9b:fa:26:47:8e:5c:b7:
         ...
         71:21:b9:1f:fa:30:19:8b:be:d2:19:5a:84:6c:81:82:95:ef:
         8b:0a:bd:65:03:d1
149
jww