{"id":21846664,"url":"https://github.com/centminmod/centminmod-ed25519-ssl-certs","last_synced_at":"2026-04-16T11:02:53.755Z","repository":{"id":264990951,"uuid":"853132416","full_name":"centminmod/centminmod-ed25519-ssl-certs","owner":"centminmod","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-06T05:01:46.000Z","size":10,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-28T18:48:57.841Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/centminmod.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-06T03:52:25.000Z","updated_at":"2024-09-06T09:12:02.000Z","dependencies_parsed_at":"2024-11-27T14:18:41.848Z","dependency_job_id":null,"html_url":"https://github.com/centminmod/centminmod-ed25519-ssl-certs","commit_stats":null,"previous_names":["centminmod/centminmod-ed25519-ssl-certs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/centminmod/centminmod-ed25519-ssl-certs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centminmod%2Fcentminmod-ed25519-ssl-certs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centminmod%2Fcentminmod-ed25519-ssl-certs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centminmod%2Fcentminmod-ed25519-ssl-certs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centminmod%2Fcentminmod-ed25519-ssl-certs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/centminmod","download_url":"https://codeload.github.com/centminmod/centminmod-ed25519-ssl-certs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/centminmod%2Fcentminmod-ed25519-ssl-certs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31882886,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T09:23:21.276Z","status":"ssl_error","status_checked_at":"2026-04-16T09:23:15.028Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-27T23:14:54.738Z","updated_at":"2026-04-16T11:02:53.738Z","avatar_url":"https://github.com/centminmod.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"```\n./ed25519-certs.sh \nUsage: ./ed25519-certs.sh -d domain.com,www.domain.com,sub.domain.com [-e expiry_years] [-p /path/to/save]\n```\n```\n./ed25519-certs.sh -d domain.com,www.domain.com -e 10 -p /usr/local/nginx/conf/ssl\nCertificate request self-signature ok\nsubject=CN = domain.com\nSelf-signed certificate and private key have been generated and saved to /usr/local/nginx/conf/ssl/ed25519-domain.com/:\n\nPrivate Key: /usr/local/nginx/conf/ssl/ed25519-domain.com/domain.com.key\nCertificate: /usr/local/nginx/conf/ssl/ed25519-domain.com/domain.com.crt\nCSR: /usr/local/nginx/conf/ssl/ed25519-domain.com/domain.com.csr\n\nTo use these in your Nginx configuration, add the following lines:\n\n  ssl_certificate /usr/local/nginx/conf/ssl/ed25519-domain.com/domain.com.crt;\n  ssl_certificate_key /usr/local/nginx/conf/ssl/ed25519-domain.com/domain.com.key;\n\nHere are the details of the generated certificate:\nCertificate:\n    Data:\n        Version: 3 (0x2)\n        Serial Number:\n            11:f3:0b:4a:80:74:e2:87:69:ff:3f:cd:a4:8a:9b:16:f9:ec:a3:4d\n        Signature Algorithm: ED25519\n        Issuer: CN = domain.com\n        Validity\n            Not Before: Sep  6 04:03:50 2024 GMT\n            Not After : Sep  4 04:03:50 2034 GMT\n        Subject: CN = domain.com\n        Subject Public Key Info:\n            Public Key Algorithm: ED25519\n                ED25519 Public-Key:\n                pub:\n                    73:65:0b:88:30:43:cd:7c:45:74:29:ca:cf:7e:71:\n                    c0:d5:b4:77:70:e6:27:b2:e2:87:fa:56:50:d0:09:\n                    27:03\n        X509v3 extensions:\n            X509v3 Subject Alternative Name: \n                DNS:domain.com, DNS:www.domain.com\n            X509v3 Subject Key Identifier: \n                80:9A:85:AD:72:88:A9:85:1A:18:00:0F:60:0C:4B:7C:BE:E7:74:5D\n    Signature Algorithm: ED25519\n    Signature Value:\n        cd:bb:cc:7c:69:2a:74:be:c9:fd:17:7a:7e:da:58:e3:3e:47:\n        1a:47:0a:e8:d9:c6:27:52:4e:a9:87:03:3a:8c:b2:4f:47:45:\n        11:f1:52:22:fe:84:3b:f4:88:1c:66:2f:82:cf:b9:b4:d8:7b:\n        14:1c:5e:e6:ed:59:69:c0:c2:0c\n```\n\nCentmin Mod Nginx vhost creation for domain.com using `nv` command line method https://centminmod.com/nginx_domain_dns_setup.html\n\n```\nnv -d domain.com -s y -u YOURFTP_USERNAME\n```\n\n`nv` command output excerpt\n\n```\ndomain: http://domain.com\nvhost conf file for domain.com created: /usr/local/nginx/conf/conf.d/domain.com.conf\n\nvhost ssl for domain.com created successfully\n\ndomain: https://domain.com\nvhost ssl conf file for domain.com created: /usr/local/nginx/conf/conf.d/domain.com.ssl.conf\n/usr/local/nginx/conf/ssl_include.conf created\nSelf-signed SSL Certificate: /usr/local/nginx/conf/ssl/domain.com/domain.com.crt\nSSL Private Key: /usr/local/nginx/conf/ssl/domain.com/domain.com.key\nSSL CSR File: /usr/local/nginx/conf/ssl/domain.com/domain.com.csr\nBackup SSL Private Key: /usr/local/nginx/conf/ssl/domain.com/domain.com-backup.key\nBackup SSL CSR File: /usr/local/nginx/conf/ssl/domain.com/domain.com-backup.csr\n\nupload files to /home/nginx/domains/domain.com/public\nvhost log files directory is /home/nginx/domains/domain.com/log\n\n-------------------------------------------------------------\nCurrent vhost listing at: /usr/local/nginx/conf/conf.d/\n\n                       \nSep 5   02:55   1.1K   demodomain.com.conf\nSep 5   02:55   1.5K   virtual.conf\nSep 6   03:55   2.4K   domain.com.conf\nSep 6   03:55   3.9K   domain.com.ssl.conf\n\n-------------------------------------------------------------\nCurrent vhost ssl files listing at: /usr/local/nginx/conf/ssl/domain.com\n\n                       \nAug 30  07:21   424    dhparam.pem\nSep 6   03:55   302    domain.com.key\nSep 6   03:55   615    domain.com.csr\nSep 6   03:55   1.1K   domain.com.crt\n\n-------------------------------------------------------------\nCommands to remove domain.com\n\n rm -rf /usr/local/nginx/conf/conf.d/domain.com.conf\n rm -rf /usr/local/nginx/conf/conf.d/domain.com.ssl.conf\n rm -rf /usr/local/nginx/conf/ssl/domain.com/domain.com.crt\n rm -rf /usr/local/nginx/conf/ssl/domain.com/domain.com.key\n rm -rf /usr/local/nginx/conf/ssl/domain.com/domain.com.csr\n rm -rf /usr/local/nginx/conf/ssl/domain.com\n rm -rf /home/nginx/domains/domain.com\n rm -rf /root/.acme.sh/domain.com\n rm -rf /root/.acme.sh/domain.com_ecc\n rm -rf /usr/local/nginx/conf/pre-staticfiles-local-domain.com.conf\n service nginx restart\n\n-------------------------------------------------------------\nvhost for domain.com setup successfully\ndomain.com setup info log saved at: \n/root/centminlogs/centminmod_060924-035525_nginx_addvhost_nv.log\n-------------------------------------------------------------\n```\n\nModify domain.com's Nginx vhost config file at `/usr/local/nginx/conf/conf.d/domain.com.ssl.conf` commenting out default self-signed SSL certificates and use ones generated by `ed25519-certs.sh` above.\n\n```\nserver {\n  listen 443 ssl;\n  http2 on;\n  server_name domain.com www.domain.com;\n\n  ssl_dhparam /usr/local/nginx/conf/ssl/domain.com/dhparam.pem;\n#  ssl_certificate      /usr/local/nginx/conf/ssl/domain.com/domain.com.crt;\n#  ssl_certificate_key  /usr/local/nginx/conf/ssl/domain.com/domain.com.key;\n   ssl_certificate /usr/local/nginx/conf/ssl/ed25519-domain.com/domain.com.crt;\n   ssl_certificate_key /usr/local/nginx/conf/ssl/ed25519-domain.com/domain.com.key;\n  include /usr/local/nginx/conf/ssl_include.conf;\n```\n\nRestart Nginx\n\n```\nngxrestart\n```\nor\n```\nsystemctl restart nginx\n```\n\nUse openssl client to check if domain.com serves the ED25519 based self-signed SSL certificate.\n\nSee references to `ED25519`\n\n```\necho -n | openssl s_client -connect domain.com:443 -servername domain.com\n\nCONNECTED(00000003)\ndepth=0 CN = domain.com\nverify error:num=18:self-signed certificate\nverify return:1\ndepth=0 CN = domain.com\nverify return:1\n---\nCertificate chain\n 0 s:CN = domain.com\n   i:CN = domain.com\n   a:PKEY: ED25519, 256 (bit); sigalg: ED25519\n   v:NotBefore: Sep  6 04:03:50 2024 GMT; NotAfter: Sep  4 04:03:50 2034 GMT\n---\nServer certificate\n-----BEGIN CERTIFICATE-----\nMIIBMzCB5qADAgECAhQR8wtKgHTih2n/P82kipsW+eyjTTAFBgMrZXAwFTETMBEG\nA1UEAwwKZG9tYWluLmNvbTAeFw0yNDA5MDYwNDAzNTBaFw0zNDA5MDQwNDAzNTBa\nMBUxEzARBgNVBAMMCmRvbWFpbi5jb20wKjAFBgMrZXADIQBzZQuIMEPNfEV0KcrP\nfnHA1bR3cOYnsuKH+lZQ0AknA6NIMEYwJQYDVR0RBB4wHIIKZG9tYWluLmNvbYIO\nd3d3LmRvbWFpbi5jb20wHQYDVR0OBBYEFICaha1yiKmFGhgAD2AMS3y+53RdMAUG\nAytlcANBAM27zHxpKnS+yf0Xen7aWOM+RxpHCujZxidSTqmHAzqMsk9HRRHxUiL+\nhDv0iBxmL4LPubTYexQcXubtWWnAwgw=\n-----END CERTIFICATE-----\nsubject=CN = domain.com\nissuer=CN = domain.com\n---\nNo client certificate CA names sent\nPeer signature type: Ed25519\nServer Temp Key: X25519, 253 bits\n---\nSSL handshake has read 679 bytes and written 394 bytes\nVerification error: self-signed certificate\n---\nNew, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384\nServer public key is 256 bit\nSecure Renegotiation IS NOT supported\nCompression: NONE\nExpansion: NONE\nNo ALPN negotiated\nEarly data was not sent\nVerify return code: 18 (self-signed certificate)\n---\n---\nPost-Handshake New Session Ticket arrived:\nSSL-Session:\n    Protocol  : TLSv1.3\n    Cipher    : TLS_AES_256_GCM_SHA384\n    Session-ID: CDFC1E92B92812C9D7057560F0D2B49B58A45153EB6E689193364A8D578C1E43\n    Session-ID-ctx: \n    Resumption PSK: 682E1E537B5FDACAF79715518B49C320346E7F9481FD033EC39130FEB9566437E84A3CCCDB0F081B5951030523458A79\n    PSK identity: None\n    PSK identity hint: None\n    SRP username: None\n    TLS session ticket lifetime hint: 3600 (seconds)\n    TLS session ticket:\n    0000 - cf be a8 d6 d9 ef 8e 61-19 c3 42 4c 0a d1 9d 08   .......a..BL....\n    0010 - 3a ff 35 07 94 85 bc b4-46 69 d7 17 a4 c5 09 c0   :.5.....Fi......\n    0020 - 71 9a 2c c8 c7 fc 41 d5-b5 99 26 46 dc 69 40 c2   q.,...A...\u0026F.i@.\n    0030 - 7c c8 0d fe a3 9d e3 ed-a5 33 64 50 8b 1b 29 c8   |........3dP..).\n    0040 - 5c 58 1e 56 57 3b 3d 7d-e0 29 d6 67 e0 c4 84 f7   \\X.VW;=}.).g....\n    0050 - e6 9b a6 35 c8 8d 27 da-6c be 52 a4 af 04 17 d4   ...5..'.l.R.....\n    0060 - ea 38 d0 17 63 d9 c0 2d-bf 00 4d ee 15 58 47 f7   .8..c..-..M..XG.\n    0070 - 6d eb 2c 14 37 35 7f 26-a0 53 06 bc 25 73 62 8f   m.,.75.\u0026.S..%sb.\n    0080 - ab b1 1f 38 16 26 ef ee-f3 52 00 e1 40 72 2b 2e   ...8.\u0026...R..@r+.\n    0090 - 6c 3f af d2 a0 2e 0d bb-b0 1f df 8f f5 23 82 27   l?...........#.'\n    00a0 - 90 da 12 60 f8 fb d4 92-d1 a3 3c 6a 87 af a6 bf   ...`......\u003cj....\n    00b0 - df 69 d9 f0 fa 45 6f 7e-1c 67 08 5f 0e 81 78 a7   .i...Eo~.g._..x.\n    00c0 - 8b 7e 47 e1 2d 5a a9 8f-b1 20 bd 29 b0 1b f2 59   .~G.-Z... .)...Y\n    00d0 - f7 f5 f2 d4 77 ab 81 dd-b5 b5 77 68 64 d3 0b ba   ....w.....whd...\n\n    Start Time: 1725595669\n    Timeout   : 7200 (sec)\n    Verify return code: 18 (self-signed certificate)\n    Extended master secret: no\n    Max Early Data: 0\n---\nread R BLOCK\n---\nPost-Handshake New Session Ticket arrived:\nSSL-Session:\n    Protocol  : TLSv1.3\n    Cipher    : TLS_AES_256_GCM_SHA384\n    Session-ID: FF04B7D0503C4ADBCE36F2B9D53E0148B5999B3D840A8906EDEB517FA9FB9E3A\n    Session-ID-ctx: \n    Resumption PSK: 74E9465684052800AA5E665D8D7C4577439AFEEA7288A8E3AE49ED0625865B93519B6425C28AC5C31EAA0D24F8455EE6\n    PSK identity: None\n    PSK identity hint: None\n    SRP username: None\n    TLS session ticket lifetime hint: 3600 (seconds)\n    TLS session ticket:\n    0000 - cf be a8 d6 d9 ef 8e 61-19 c3 42 4c 0a d1 9d 08   .......a..BL....\n    0010 - 4d a0 07 31 b2 dc 9a ce-8c 52 e7 1d 7b 04 d0 90   M..1.....R..{...\n    0020 - 7a 8b ea 3e 66 33 31 57-94 00 f1 8b bd ae d8 69   z..\u003ef31W.......i\n    0030 - 2f 7e 67 0d 1c 05 c1 00-fa 2c e6 3f 30 00 35 a5   /~g......,.?0.5.\n    0040 - da 0f 11 7d 16 df 19 bb-d6 b1 35 e7 6e b1 1f 69   ...}......5.n..i\n    0050 - 4d 35 de 6f fb ac 6b 19-70 41 7c 67 1f dc 56 f7   M5.o..k.pA|g..V.\n    0060 - b1 4a 13 d1 b8 3a 7b 02-5c ce 12 44 e8 a1 24 c7   .J...:{.\\..D..$.\n    0070 - 5e 3d d2 a7 bf 9c 20 31-ba c6 bf 30 34 0d 8f c6   ^=.... 1...04...\n    0080 - 28 58 ab 04 f7 b5 47 f9-35 51 19 97 29 69 be 50   (X....G.5Q..)i.P\n    0090 - f4 21 09 c4 a0 db 93 43-6a 51 06 79 5f 84 b2 74   .!.....CjQ.y_..t\n    00a0 - 38 fe df 97 5b 43 95 d4-8e c0 91 c1 75 df 8c 2b   8...[C......u..+\n    00b0 - d7 11 6f 27 22 f6 71 b5-d3 c3 60 a3 ea ad 92 5b   ..o'\".q...`....[\n    00c0 - 4a 82 d9 18 a7 3e 2c ff-8c c1 8d 56 1c f3 9e 8d   J....\u003e,....V....\n    00d0 - 1b 04 c3 47 5e 31 be 7e-a8 ec 03 f8 3c d8 75 30   ...G^1.~....\u003c.u0\n\n    Start Time: 1725595669\n    Timeout   : 7200 (sec)\n    Verify return code: 18 (self-signed certificate)\n    Extended master secret: no\n    Max Early Data: 0\n---\nread R BLOCK\nDONE\n```\n\n# testssl\n\nCentmin Mod `tools/switch-nginx-ciphers.sh` tool's testssl run. Notice TLSv1.2/TLSv1.3 sig_algs offered = `ED25519` and \n\n```\nSignature Algorithm          Ed25519\nServer key size              EdDSA Ed25519\n```\n\nAnd notice the `client simulations` many clients and web browser's do not yet support `ED25519` - only Java, Go, OpenSSL clients support it.\n\nFull `tools/switch-nginx-ciphers.sh` tool's testssl run:\n\n```\ntools/switch-nginx-ciphers.sh testssl domain.com:443\ntestssl.sh --nodns=min --wide -p -c -f -E -S -P --quiet https://domain.com:443\n\n Start 2024-09-06 04:27:16                --\u003e\u003e 192.168.122.60:443 (domain.com) \u003c\u003c--\n\n Testing protocols via sockets except NPN+ALPN \n\n SSLv2      not offered (OK)\n SSLv3      not offered (OK)\n TLS 1      not offered\n TLS 1.1    not offered\n TLS 1.2    offered (OK)\n TLS 1.3    offered (OK): final\n NPN/SPDY   not offered\n ALPN/HTTP2 not offered\n\n Testing server's cipher preferences \n\nno matching cipher in this list found (pls report this): DHE-RSA-SEED-SHA:SEED-SHA:DES-CBC3-SHA:RC4-MD5:DES-CBC-SHA:RC4-SHA:AES128-SHA:AES128-SHA256:AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:ECDH-RSA-DES-CBC3-SHA:ECDH-RSA-AES128-SHA:ECDH-RSA-AES256-SHA:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-DSS-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:AES256-SHA256:ECDHE-RSA-DES-CBC3-SHA:ECDHE-RSA-AES128-SHA256:AES256-GCM-SHA384:AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256:ADH-AES256-GCM-SHA384:AECDH-AES128-SHA:ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-AES128-SHA  . \nHexcode  Cipher Suite Name (OpenSSL)       KeyExch.   Encryption  Bits     Cipher Suite Name (IANA/RFC)\n-----------------------------------------------------------------------------------------------------------------------------\nSSLv2\n - \nSSLv3\n - \nTLSv1\n - \nTLSv1.1\n - \nTLSv1.2 (listed by strength)\n xc02c   ECDHE-ECDSA-AES256-GCM-SHA384     ECDH 253   AESGCM      256      TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384            \n xcca9   ECDHE-ECDSA-CHACHA20-POLY1305     ECDH 253   ChaCha20    256      TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256      \n xc02b   ECDHE-ECDSA-AES128-GCM-SHA256     ECDH 253   AESGCM      128      TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256            \nTLSv1.3 (server order)\n x1302   TLS_AES_256_GCM_SHA384            ECDH 253   AESGCM      256      TLS_AES_256_GCM_SHA384                             \n x1303   TLS_CHACHA20_POLY1305_SHA256      ECDH 253   ChaCha20    256      TLS_CHACHA20_POLY1305_SHA256                       \n x1301   TLS_AES_128_GCM_SHA256            ECDH 253   AESGCM      128      TLS_AES_128_GCM_SHA256                             \n\n Has server cipher order?     unable to determine\n\n\n Testing robust forward secrecy (FS) -- omitting Null Authentication/Encryption, 3DES, RC4 \n\n FS is offered (OK) , ciphers follow (client/browser support is important here) \n\nHexcode  Cipher Suite Name (OpenSSL)       KeyExch.   Encryption  Bits     Cipher Suite Name (IANA/RFC)\n-----------------------------------------------------------------------------------------------------------------------------\n x1302   TLS_AES_256_GCM_SHA384            ECDH 253   AESGCM      256      TLS_AES_256_GCM_SHA384                             \n x1303   TLS_CHACHA20_POLY1305_SHA256      ECDH 253   ChaCha20    256      TLS_CHACHA20_POLY1305_SHA256                       \n xc02c   ECDHE-ECDSA-AES256-GCM-SHA384     ECDH 253   AESGCM      256      TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384            \n xcca9   ECDHE-ECDSA-CHACHA20-POLY1305     ECDH 253   ChaCha20    256      TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256      \n x1301   TLS_AES_128_GCM_SHA256            ECDH 253   AESGCM      128      TLS_AES_128_GCM_SHA256                             \n xc02b   ECDHE-ECDSA-AES128-GCM-SHA256     ECDH 253   AESGCM      128      TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256            \n\n Elliptic curves offered:     prime256v1 secp384r1 secp521r1 X25519 X448 \n TLS 1.2 sig_algs offered:    Ed25519 \n TLS 1.3 sig_algs offered:    Ed25519 \n\n Testing server defaults (Server Hello) \n\n TLS extensions (standard)    \"renegotiation info/#65281\" \"server name/#0\" \"EC point formats/#11\" \"session ticket/#35\" \"supported versions/#43\"\n                              \"key share/#51\" \"supported_groups/#10\" \"max fragment length/#1\" \"application layer protocol negotiation/#16\"\n                              \"extended master secret/#23\"\n Session Ticket RFC 5077 hint no -- no lifetime advertised\n SSL Session ID support       no\n Session Resumption           Tickets no, ID: no\n TLS clock skew               Random values, no fingerprinting possible \n Certificate Compression      none\n Client Authentication        none\n Signature Algorithm          Ed25519\n Server key size              EdDSA Ed25519\n Server key usage             --\n Server extended key usage    --\n Serial                       11F30B4A8074E28769FF3FCDA48A9B16F9ECA34D (OK: length 20)\n Fingerprints                 SHA1 880BCF2B79BA2F8197A0C436CF09A9C9BD4FFB1A\n                              SHA256 A7E4400B1DDC5CEFDFE72ED343FA160CB1C6072DC5323A2894BEF3D01511B089\n Common Name (CN)             domain.com \n subjectAltName (SAN)         domain.com www.domain.com \n Trust (hostname)             Ok via SAN and CN (same w/o SNI)\n Chain of trust               NOT ok (self signed)\n EV cert (experimental)       no \n Certificate Validity (UTC)   3649 \u003e= 60 days (2024-09-06 04:03 --\u003e 2034-09-04 04:03)\n                              \u003e= 10 years is way too long\n ETS/\"eTLS\", visibility info  not present\n Certificate Revocation List  --\n OCSP URI                     --\n                              NOT ok -- neither CRL nor OCSP URI provided\n OCSP stapling                not offered\n OCSP must staple extension   --\n DNS CAA RR (experimental)    (instructed to minimize/skip DNS queries)\n Certificate Transparency     N/A\n Certificates provided        1\n Issuer                       domain.com\n Intermediate Bad OCSP (exp.) Ok\n\n\n\n Testing ciphers per protocol via OpenSSL plus sockets against the server, ordered by encryption strength \n\nHexcode  Cipher Suite Name (OpenSSL)       KeyExch.   Encryption  Bits     Cipher Suite Name (IANA/RFC)\n-----------------------------------------------------------------------------------------------------------------------------\nSSLv2\n - \nSSLv3\n - \nTLS 1\n - \nTLS 1.1\n - \nTLS 1.2\n xc02c   ECDHE-ECDSA-AES256-GCM-SHA384     ECDH 253   AESGCM      256      TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384            \n xcca9   ECDHE-ECDSA-CHACHA20-POLY1305     ECDH 253   ChaCha20    256      TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256      \n xc02b   ECDHE-ECDSA-AES128-GCM-SHA256     ECDH 253   AESGCM      128      TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256            \nTLS 1.3\n x1302   TLS_AES_256_GCM_SHA384            ECDH 253   AESGCM      256      TLS_AES_256_GCM_SHA384                             \n x1303   TLS_CHACHA20_POLY1305_SHA256      ECDH 253   ChaCha20    256      TLS_CHACHA20_POLY1305_SHA256                       \n x1301   TLS_AES_128_GCM_SHA256            ECDH 253   AESGCM      128      TLS_AES_128_GCM_SHA256                             \nCould not determine the protocol, only simulating generic clients.\n\n Running client simulations via sockets \n\n Browser                      Protocol  Cipher Suite Name (OpenSSL)       Forward Secrecy\n------------------------------------------------------------------------------------------------\n Android 6.0                  No connection\n Android 7.0 (native)         No connection\n Android 8.1 (native)         No connection\n Android 9.0 (native)         No connection\n Android 10.0 (native)        No connection\n Android 11 (native)          No connection\n Android 12 (native)          No connection\n Chrome 79 (Win 10)           No connection\n Chrome 101 (Win 10)          No connection\n Firefox 66 (Win 8.1/10)      No connection\n Firefox 100 (Win 10)         No connection\n IE 6 XP                      No connection\n IE 8 Win 7                   No connection\n IE 8 XP                      No connection\n IE 11 Win 7                  No connection\n IE 11 Win 8.1                No connection\n IE 11 Win Phone 8.1          No connection\n IE 11 Win 10                 No connection\n Edge 15 Win 10               No connection\n Edge 101 Win 10 21H2         No connection\n Safari 12.1 (iOS 12.2)       No connection\n Safari 13.0 (macOS 10.14.6)  No connection\n Safari 15.4 (macOS 12.3.1)   No connection\n Java 7u25                    No connection\n Java 8u161                   No connection\n Java 11.0.2 (OpenJDK)        No connection\n Java 17.0.3 (OpenJDK)        TLSv1.3   TLS_AES_256_GCM_SHA384            253 bit ECDH (X25519)\n go 1.17.8                    TLSv1.3   TLS_AES_256_GCM_SHA384            253 bit ECDH (X25519)\n LibreSSL 2.8.3 (Apple)       No connection\n OpenSSL 1.0.2e               No connection\n OpenSSL 1.1.0l (Debian)      No connection\n OpenSSL 1.1.1d (Debian)      TLSv1.3   TLS_AES_256_GCM_SHA384            253 bit ECDH (X25519)\n OpenSSL 3.0.3 (git)          TLSv1.3   TLS_AES_256_GCM_SHA384            253 bit ECDH (X25519)\n Apple Mail (16.0)            No connection\n Thunderbird (91.9)           No connection\n\n Done 2024-09-06 04:27:50 [  36s] --\u003e\u003e 192.168.122.60:443 (domain.com) \u003c\u003c--\n```\n\n# ED25519 Browser and Certificate Support\n\n### Summary of EdDSA (Ed25519) Browser and Certificate Support Challenges:\n\n1. **EdDSA Adoption and FIPS 186-5**:  \n   As of **February 3, 2023**, EdDSA (Edwards-curve Digital Signature Algorithm) officially replaced the outdated DSA algorithm with the release of FIPS 186-5. This made EdDSA the recommended algorithm for digital signatures within U.S. government standards. However, the broader adoption of EdDSA in the web infrastructure has lagged behind, especially for **SSL/TLS certificates**.\n\n2. **CAB Forum Inaction**:  \n   Despite EdDSA's inclusion in **S/MIME** (email security), the **CA/Browser Forum** has not yet taken action to include EdDSA in SSL/TLS server certificates. As a result, Certificate Authorities (CAs) and web browsers have not widely adopted it. This creates a gap in the ecosystem, particularly since FIPS 186-4 (which relies on RSA and ECDSA) will sunset in **February 2024**. This could leave the internet underprepared for potential vulnerabilities in the older algorithms without a fallback to EdDSA.\n\n3. **EdDSA is Fully Standardized for TLS**:  \n   EdDSA algorithms such as **Ed25519** and **Ed448** are fully supported in **TLS 1.2** and **TLS 1.3**. The relevant standards, including **RFC 8446** (TLS 1.3), RFC 8422, and RFC 8410, outline how EdDSA keys can be used for key exchange and digital signatures in TLS communications. However, the lack of browser and CA support continues to hinder practical implementation.\n\n4. **Resistance to Algorithm Expansion**:  \n   Some root programs, including major Certificate Authorities, have indicated that they are not interested in expanding their supported algorithm sets beyond **RSA** and **NIST EC (Elliptic Curve)** curves. This presents a significant barrier to the adoption of EdDSA in publicly trusted certificates.\n\n5. **Focus on Post-Quantum Cryptography**:  \n   The next major shift in cryptographic algorithms is likely to focus on **post-quantum algorithms** rather than adopting new elliptic curve algorithms like Ed25519. This shift is driven by the need to protect against quantum computing attacks, which could render current algorithms vulnerable in the future.\n\n6. **OpenSSL and SSH Support**:  \n   Despite limited browser support, Ed25519 has been supported by **OpenSSL** for five years and is widely used in **SSH** (Secure Shell) since 2013. This demonstrates the algorithm’s stability and utility in non-browser environments, but the gap in web infrastructure remains a challenge.\n\n7. **Challenges with Low-Order Points**:  \n   One technical disadvantage of Ed25519 is that it's not a prime-order curve, which introduces potential risks with low-order points. In contrast, NIST curves have improved complete addition formulas, offering more robust security in some scenarios.\n\n### Conclusion:\nWhile EdDSA (Ed25519) has strong technical support and advantages, particularly in performance and security, its adoption in SSL/TLS certificates remains limited due to browser and CA reluctance. The focus is shifting toward **post-quantum cryptography**, and until CA/Browser Forum action is taken, EdDSA certificates may not be widely supported.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcentminmod%2Fcentminmod-ed25519-ssl-certs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcentminmod%2Fcentminmod-ed25519-ssl-certs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcentminmod%2Fcentminmod-ed25519-ssl-certs/lists"}