Hier hatte ich beschrieben, wie ein 521-Bit private Elliptic Curve Cryptography (ECC) Key erzeugt werden kann. Mit diesem privaten Key können wir auch leicht eine CA-Zertifikat erzeugen. Einfach in dem Verzeichnis mit dem privaten Key ein:
openssl req -new -x509 -days 3650 -extensions v3_ca -key private-key.pem -out ecc-cacert.pem
eingeben und diese Fragen beantworten (oder einfach Return, dann wir der default verwendet).
Zuerst zweimal das gleich gutes Passwort eingeben. Wichtig ist auf jeden Fall der Common Name (e.g. server FQDN or YOUR name) Z.B. www.wenzlaff.de oä. und dann:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- 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. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:Niedersachsen Locality Name (eg, city) []:Langenhagen Organization Name (eg, company) [Internet Widgits Pty Ltd]:TW-Soft Organizational Unit Name (eg, section) []:TW-Soft CA-Zertifikat Common Name (e.g. server FQDN or YOUR name) []:pi-zero Email Address []:info-anfrage@wenzlaff.de Warning: No -copy_extensions given; ignoring any extensions in the request |
Und schon liegt ein CA-Zertifikat in der Datei ecc-cacert.pem.
Die kann mit cat ecc-cacert.pem angesehen werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
-----BEGIN CERTIFICATE----- MIIDLzCCApCgAwIBAgIUeT8Pc26qncVFhtirZILTz+VjgE4wCgYIKoZIzj0EAwIw gagxCzAJBgNVBAYTAkRFMRYwFAYDVQQIDA1OaWVkZXJzYWNoc2VuMRQwEgYDVQQH DAtMYW5nZW5oYWdlbjEQMA4GA1UECgwHVFctU29mdDEeMBwGA1UECwwVVFctU29m dCBDQS1aZXJ0aWZpa2F0MRAwDgYDVQQDDAdwaS16ZXJvMScwJQYJKoZIhvcNAQkB FhhpbmZvLWFuZnJhZ2VAd2VuemxhZmYuZGUwHhcNMjEwNzMxMTMzOTMyWhcNMzEw NzI5MTMzOTMyWjCBqDELMAkGA1UEBhMCREUxFjAUBgNVBAgMDU5pZWRlcnNhY2hz ZW4xFDASBgNVBAcMC0xhbmdlbmhhZ2VuMRAwDgYDVQQKDAdUVy1Tb2Z0MR4wHAYD ... PQQDAgOBjAAwgYgCQgFD7+GXagCQ+TwHw/Mv6GywavJ7KQKhBMzbUEvqGcAaqy3I HPSXJ7zRmlEKg5oSExsojCbuKKh4t32Mo0lbF8DyRQJCAc5eEhkf7RKUwGLMC2Il QI5vCEFbQ8tONyNTPNtKboEj5yPLBBZyHErAHATrIMR8vDmiy75ZcAvs1qlH5X3f rpF9 -----END CERTIFICATE----- |
Oder wenn man sich den Algo. anschauen will:
openssl x509 -noout -text -in ecc-cacert.pem | grep -i algorithm
1 2 3 |
Signature Algorithm: ecdsa-with-SHA256 Public Key Algorithm: id-ecPublicKey Signature Algorithm: ecdsa-with-SHA256 |
oder das ganze Zertifikat:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Certificate: Data: Version: 3 (0x2) Serial Number: 79:3f:0f:73:6e:aa:9d:c5:45:86:d8:ab:64:82:d3:cf:e5:63:80:4e Signature Algorithm: ecdsa-with-SHA256 Issuer: C = DE, ST = Niedersachsen, L = Langenhagen, O = TW-Soft, OU = TW-Soft CA-Zertifikat, CN = pi-zero, emailAddress = info-anfrage@wenzlaff.de Validity Not Before: Jul 31 13:39:32 2021 GMT Not After : Jul 29 13:39:32 2031 GMT Subject: C = DE, ST = Niedersachsen, L = Langenhagen, O = TW-Soft, OU = TW-Soft CA-Zertifikat, CN = pi-zero, emailAddress = info-anfrage@wenzlaff.de Subject Public Key Info: Public Key Algorithm: id-ecPublicKey Public-Key: (521 bit) pub: 04:00:99:9a:60:d6:54:4f:16:f6:62:d8:81:a2:72: 68:92:92:10:6a:40:46:58:7a:ef:d1:02:fa:6e:84: ... 16:4b:bb:44:01:d3:cf:87:b3:85:66:77:42:72:e3: 29:44:02:a3:c1:32:cd:9f:0d:a7:0e:3a:7a:46:6f: e0:79:b5:a4:db:97:d2:88:3a:8e:10:a7:66 ASN1 OID: secp521r1 NIST CURVE: P-521 X509v3 extensions: X509v3 Subject Key Identifier: 32:77:4C:BF:74:BD:42:11:D4:AA:AB:5F:DF:D5:01:BD:42:E3:67:7F X509v3 Authority Key Identifier: 32:77:4C:BF:74:BD:42:11:D4:AA:AB:5F:DF:D5:01:BD:42:E3:67:7F X509v3 Basic Constraints: critical CA:TRUE Signature Algorithm: ecdsa-with-SHA256 Signature Value: 30:81:88:02:42:01:43:ef:e1:97:6a:00:90:f9:3c:07:c3:f3: 2f:e8:6c:b0:6a:f2:7b:29:02:a1:04:cc:db:50:4b:ea:19:c0: ... cb:04:16:72:1c:4a:c0:1c:04:eb:20:c4:7c:bc:39:a2:cb:be: 59:70:0b:ec:d6:a9:47:e5:7d:df:ae:91:7d |
Und schon haben wir mit einem ECDSA Signature Algorithm unser rootCA certificate für 10 Jahre erstellt, und das nicht mit RSA Encryption.
In der erzeugten privkey.pem wird der private CA-Key verschlüsselt abgelegt.
1 2 3 4 5 6 |
-----BEGIN ENCRYPTED PRIVATE KEY----- MIIBSzBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI20InAssWLoICAggA MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECHpZxM7OY8ILBIH4ZfJv/nsdWtX9 ... LOh3S+YRud6H5wHjbY/mQieJc/nUfzZAfYdvjzlduC41g+MAaEoXhf5TwZLy3Bs= -----END ENCRYPTED PRIVATE KEY----- |
Den können wir uns mit
openssl pkey -noout -text -in privkey.pem
anschauen. Nach eingabe des Passwortes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Enter pass phrase for privkey.pem: Private-Key: (521 bit) priv: 00:c3:66:d8:ae:53:30:75:83:22:4c:d8:e0:1f:02: ... c7:51:42:1e:c6:e4:2f:dc:c7:39:d5:83:89:e0:ab: 50:05:a8:65:60:a6 pub: 04:00:99:9a:60:d6:54:4f:16:f6:62:d8:81:a2:72: ... 16:4b:bb:44:01:d3:cf:87:b3:85:66:77:42:72:e3: 29:44:02:a3:c1:32:cd:9f:0d:a7:0e:3a:7a:46:6f: e0:79:b5:a4:db:97:d2:88:3a:8e:10:a7:66 ASN1 OID: secp521r1 NIST CURVE: P-521 |
Dort können wir nun sehen, das wir kein RSA CA-Key haben, sondern ein sec521r1, also genau das was wir wollten.