{"id":49081602,"url":"https://github.com/aadnehovda/httpcertstore","last_synced_at":"2026-04-20T13:15:06.183Z","repository":{"id":197181897,"uuid":"596221657","full_name":"aadnehovda/httpcertstore","owner":"aadnehovda","description":"Caddy HTTP Windows certificate store","archived":false,"fork":false,"pushed_at":"2023-10-25T19:18:54.000Z","size":56,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-10-25T20:32:57.264Z","etag":null,"topics":["caddy","certificate","https","pki","tls","x509"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aadnehovda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-02-01T18:14:17.000Z","updated_at":"2023-02-13T14:47:55.000Z","dependencies_parsed_at":"2023-09-29T11:15:49.462Z","dependency_job_id":null,"html_url":"https://github.com/aadnehovda/httpcertstore","commit_stats":null,"previous_names":["aadnehovda/httpcertstore"],"tags_count":1,"template":null,"template_full_name":null,"purl":"pkg:github/aadnehovda/httpcertstore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aadnehovda%2Fhttpcertstore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aadnehovda%2Fhttpcertstore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aadnehovda%2Fhttpcertstore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aadnehovda%2Fhttpcertstore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aadnehovda","download_url":"https://codeload.github.com/aadnehovda/httpcertstore/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aadnehovda%2Fhttpcertstore/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32048581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"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":["caddy","certificate","https","pki","tls","x509"],"created_at":"2026-04-20T13:15:06.038Z","updated_at":"2026-04-20T13:15:06.168Z","avatar_url":"https://github.com/aadnehovda.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Caddy HTTP certificate store\n\nThis is a simple implementation of a Caddy compatible certificate manager \nthat gets certificates and keys out of the Windows Certificate Store.\n\nRun the program and configure Caddy like this: \n\n```\n{\n  auto_https off\n}\n\ntest.local.gd {\n  tls {\n    get_certificate http http://127.0.0.1:27510/LocalMachine/My\n  }\n\n  respond \"Hello, world!\"\n}\n```\n\nCaddy will append some query string parameters to this URL which will be used to \nfind a matching certificate:\n\n* server_name\n* signature_schemes\n* cipher_suites\n\nSo whenever you browse to https://test.local.gd, Caddy will send a request to \nhttp://127.0.0.1:27510/LocalMachine/My?server_name=test.local.gd and this program will \nlook up a matching, valid certificate and respond with a complete PEM encoded chain\nincluding the private key. \n\n*IMPORTANT: When adding a certificate with a private key to the certificate store you must\nmark it as exportable, otherwise this program will not be able to extract the private key*\n\n![image](https://user-images.githubusercontent.com/1244723/218490906-cf10a4c3-33d1-4ecb-b9d3-5d0ebf4407a7.png)\n\nhttps://caddyserver.com/docs/caddyfile/directives/tls#http\n\nTODO: validate the signature schemes and ciphers when looking for a supported certificate.\n\nYou can also list certs in other locations of the Certificate Store:\n* http://127.0.0.1:27510/CurrentUser/My\n* http://127.0.0.1:27510/LocalMachine/My\n\nThis will bring up a list of the available certificates\n```\n[\n  {\n    \"thumbprint\": \"34C2F1332E089BA12B52B942FD6E941249FFA58A\",\n    \"subject\": \"OU=ahovda, O=mkcert development certificate\",\n    \"expires\": \"2025-05-01T14:19:27+02:00\",\n    \"signature\": {\n      \"value\": \"1.2.840.113549.1.1.11\",\n      \"friendlyName\": \"sha256RSA\"\n    },\n    \"publicKeyAlgorithm\": {\n      \"value\": \"1.2.840.113549.1.1.1\",\n      \"friendlyName\": \"RSA\"\n    },\n    \"subjectAlternativeName\": [\n      \"*.local.gd\"\n    ]\n  },\n  {\n    \"thumbprint\": \"40EA139FF1236D2A35967A5A214930D96033E8BE\",\n    \"subject\": \"CN=test.local.gd\",\n    \"expires\": \"2033-02-03T11:10:11+01:00\",\n    \"signature\": {\n      \"value\": \"1.2.840.113549.1.1.10\",\n      \"friendlyName\": \"RSASSA-PSS\"\n    },\n    \"publicKeyAlgorithm\": {\n      \"value\": \"1.2.840.113549.1.1.1\",\n      \"friendlyName\": \"RSA\"\n    },\n    \"subjectAlternativeName\": []\n  }\n]\n```\n\nAppend the thumbprint of the certificate to the URL to view the complete certificate including the private key.\n\nhttp://127.0.0.1:27510/CurrentUser/My/34C2F1332E089BA12B52B942FD6E941249FFA58A\n\n```\n-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEA0Ro4XYvn8VzFvKmvSdILM1CzPHjTmK0aLBMfbYEZsXf/UK31\nooxp/+X9GfDbBkD10nXF/Qnkf/JwT72oVCRBSXwtpe/lQorkICu6hPexOTGAeTTN\nSX8WsrygPEISCFjkskTJI6U6HkLa80KNnkc2jrcsakkTBwtT40vQOeHXq4m8bHJE\nDA7cRBka9jRUqpxPiOmyN0YW296kV0kaft4EcxKg433wGukmozjInMcZBulhM2a8\nk59ZaDxd/nExtldNECtocepPFr3BUC3TcNR4ksQlQRsaOGQlnwr1U4PzI14hw5Ji\n9/p73wZgoDRPPPU7O2qcSmLjc49JK5E4e/KriwIDAQABAoIBAQCQYY5x6VyqJ+jR\nMEk8q6/YKuzX4IYaccwUis+0iOP4ymacisGFD3dRnrh45PoXA1u5imC/K8l/HyO1\nq7tC/hWma/wJC/A9VjHWlNshXPYeC7Qt/OuSyBIgMGZjtStGYDrpbN2Fo1zR8E/G\nkDnBBGMDgC9G5FYjEwtFct/AV9TXN/Aq6BWlq3Q3C/m0OTn+KzblJOi7QQl36No7\nkKpUaFsEympE9zU3NikMBPZWfSfycHmFyXCZPGuAvzZlkXEQTsjRhfCPR6rlSvVu\nti8YGem0h6gVnofF1oFWgk8ZdGORpC3K8gR8AMs+rulZnselvjs4mzxLftRczwno\nJ5eZ7ZShAoGBAO0kUcyUCMkV9TkvNrVWFKodxHwdPC8Vzs4k7BswxTTenyQHdPoj\nGB+MAXy/fpR4dQL706WyVXr6mLAmdvGjQ30G9y/vQXrnELl6IXNako28KAqQ5l7y\ni/GJDYcEx+OkNVmUF+xxQIkD1Ohqj/P0XGUxjYv1nRfpdD/5YyiHMEIdAoGBAOG7\nFHKX/faQMJhYej/c0QaET0pUulaatup4RRz3JElzyiOMCKG1CtfIulObRx+oIsqS\n40XAeJISbgfstNr7S5vlup/N2pPNQKsX/a3ToevXwZL52Rl5fkf4jUX2MN1ijtGP\nCn+t9SCXkOr1FMrF3A+XGUvxUujHKV4DcWJt+bPHAoGAcuZoI+GOKDBVcvGnZlFh\nDdQCgciAgqfkXgmRxNLqmmVLYl+ilBgw9ggWKGV4ZWO//kQaFmzD8iQ9mwvoEchz\nSL75QeaBKZWPiu7cClJWNAp4tDXlCRgoKk2nmkX8vBWyK8cPmGZ/SGPs4vfO6/r4\nUaei16+YACADTYP+QYLPJRkCgYBHd2CA62gngP0xrol94J55Dri/0tVwB+mzkEJp\nakGd08ACwxoUgGofaVi8kaPR/PyO4DR+Z/KEZLtbXPDhh8AnanNMlvMF6mz3/k99\nkkxoi9Wof9vhOdrmVGX96XUNEmAfLsdnJx89o17pVJCxpjUG5pLGvW+/bRbGwhZK\n0IDHDwKBgATQMqIQdC2k5Qb7aup/ZQZQM7qlFUhv1BHlIxhP0Q3D3f5IV/9KrgRG\nBmcCG+XliIl2oSR4AMCH0NYbtVtu/Ne8ZZDBUbz5B/MRgHQWHkhIXXc1Np2kd6q6\n7dCM5H6f9yVuoEwwxUuEPoN8wtRduBtKaLxkSgw7bCuuc5TBpFnk\n-----END RSA PRIVATE KEY-----\n[Version]\n  V3\n\n[Subject]\n  CN=mkcert ahovda, OU=ahovda, O=mkcert development CA\n  Simple Name: ahovda\n  DNS Name: *.local.gd\n\n[Issuer]\n  CN=mkcert ahovda, OU=ahovda, O=mkcert development CA\n  Simple Name: mkcert ahovda\n  DNS Name: mkcert ahovda\n\n[Serial Number]\n  143F3B99867CA21E47B2E83EB942CCA8\n\n[Not Before]\n  01.02.2023 14:19:27\n\n[Not After]\n  01.05.2025 14:19:27\n\n[Thumbprint]\n  34C2F1332E089BA12B52B942FD6E941249FFA58A\n\n[Signature Algorithm]\n  sha256RSA(1.2.840.113549.1.1.11)\n\n[Public Key]\n  Algorithm: RSA\n  Length: 2048\n  Key Blob: 30 82 01 0a 02 82 01 01 00 d1 1a 38 5d 8b e7 f1 5c c5 bc a9 af 49 d2 0b 33 50 b3 3c 78 d3 98 ad 1a 2c 13 1f 6d 81 19 b1 77 ff 50 ad f5 a2 8c 69 ff e5 fd 19 f0 db 06 40 f5 d2 75 c5 fd 09 e4 7f f2 70 4f bd a8 54 24 41 49 7c 2d a5 ef e5 42 8a e4 20 2b ba 84 f7 b1 39 31 80 79 34 cd 49 7f 16 b2 bc a0 3c 42 12 08 58 e4 b2 44 c9 23 a5 3a 1e 42 da f3 42 8d 9e 47 36 8e b7 2c 6a 49 13 07 0b 53 e3 4b d0 39 e1 d7 ab 89 bc 6c 72 44 0c 0e dc 44 19 1a f6 34 54 aa 9c 4f 88 e9 b2 37 46 16 db de a4 57 49 1a 7e de 04 73 12 a0 e3 7d f0 1a e9 26 a3 38 c8 9c c7 19 06 e9 61 33 66 bc 93 9f 59 68 3c 5d fe 71 31 b6 57 4d 10 2b 68 71 ea 4f 16 bd c1 50 2d d3 70 d4 78 92 c4 25 41 1b 1a 38 64 25 9f 0a f5 53 83 f3 23 5e 21 c3 92 62 f7 fa 7b df 06 60 a0 34 4f 3c f5 3b 3b 6a 9c 4a 62 e3 73 8f 49 2b 91 38 7b f2 ab 8b 02 03 01 00 01\n  Parameters: 05 00\n\n[Private Key]\n\n  Key Store: User\n  Provider Name: Microsoft Software Key Storage Provider\n  Provider type: 0\n  Key Spec: 0\n\n[Extensions]\n* Key Usage(2.5.29.15):\n  Digital Signature, Key Encipherment (a0)\n\n* Enhanced Key Usage(2.5.29.37):\n  Server Authentication (1.3.6.1.5.5.7.3.1)\n\n* Authority Key Identifier(2.5.29.35):\n  KeyID=088f8c61d227be097315ef3c889fa563df6e7cd8\n\n* Subject Alternative Name(2.5.29.17):\n  DNS Name=*.local.gd\n\n\n-----BEGIN CERTIFICATE-----\nMIIERDCCAqygAwIBAgIQFD87mYZ8oh5Hsug+uULMqDANBgkqhkiG9w0BAQsFADCB\ngzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSwwKgYDVQQLDCNTVkdc\nYWhvdmRhQERFU0tUT1AtUlBPMFNSNSAoYWhvdmRhKTEzMDEGA1UEAwwqbWtjZXJ0\nIFNWR1xhaG92ZGFAREVTS1RPUC1SUE8wU1I1IChhaG92ZGEpMB4XDTIzMDIwMTEz\nMTkyN1oXDTI1MDUwMTEyMTkyN1owVzEnMCUGA1UEChMebWtjZXJ0IGRldmVsb3Bt\nZW50IGNlcnRpZmljYXRlMSwwKgYDVQQLDCNTVkdcYWhvdmRhQERFU0tUT1AtUlBP\nMFNSNSAoYWhvdmRhKTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEa\nOF2L5/Fcxbypr0nSCzNQszx405itGiwTH22BGbF3/1Ct9aKMaf/l/Rnw2wZA9dJ1\nxf0J5H/ycE+9qFQkQUl8LaXv5UKK5CAruoT3sTkxgHk0zUl/FrK8oDxCEghY5LJE\nySOlOh5C2vNCjZ5HNo63LGpJEwcLU+NL0Dnh16uJvGxyRAwO3EQZGvY0VKqcT4jp\nsjdGFtvepFdJGn7eBHMSoON98BrpJqM4yJzHGQbpYTNmvJOfWWg8Xf5xMbZXTRAr\naHHqTxa9wVAt03DUeJLEJUEbGjhkJZ8K9VOD8yNeIcOSYvf6e98GYKA0Tzz1Oztq\nnEpi43OPSSuROHvyq4sCAwEAAaNfMF0wDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQM\nMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFAiPjGHSJ74JcxXvPIifpWPfbnzYMBUG\nA1UdEQQOMAyCCioubG9jYWwuZ2QwDQYJKoZIhvcNAQELBQADggGBAFqk5V00gr2a\nyotr4ecciXiaou+gOzTB8xCpVd+v8ln7KzfgOl+SpzLhJlXuU0EDD2fyT10E5Lg5\ndPem47dI5F9LhIWo84hIeMNyR4n8GpL0smnVlgGJg2XUIdtrvlsXGceQembfwXAq\n2ReaEYO8x8Jz4af5Rbqk9xtrIAVYvca6EINjxRUCzOzoYzZiTCqUnkiJLA3DcrDq\nRRMzwvk81QEEtPovWoFzjBiJm4aPUEOyIyF8RxENyW7MJR9SN/hBdUoQn0v8j/w2\n6mViRgy/xRSRFd20MAiyG+NMUTB9nn/3NgSnu/2vmlqYGxGw4U4hJoJeIxC1otx4\nwYVD6cInVvCKJ1gNjlosHr0jIgLtBpjSbLd7HUyW2/o+ng1bXH1ZVhUKeyGTnlct\nQIjLPdSBHjFZ5Uy0uy4JzUEAWD9gD7MeeimFGQT2HNSdvzIcW643uq/GdClqEu1m\n68JwoY+GaZK0MWn3N0LAul9GZb3n0SF1C4fmr/E2nlwZV0Gn9+tc/w==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIE2DCCA0CgAwIBAgIRAK+KyvL67eSe3HpCjBCIytQwDQYJKoZIhvcNAQELBQAw\ngYMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEsMCoGA1UECwwjU1ZH\nXGFob3ZkYUBERVNLVE9QLVJQTzBTUjUgKGFob3ZkYSkxMzAxBgNVBAMMKm1rY2Vy\ndCBTVkdcYWhvdmRhQERFU0tUT1AtUlBPMFNSNSAoYWhvdmRhKTAeFw0yMzAyMDEx\nMTMxNDZaFw0zMzAyMDExMTMxNDZaMIGDMR4wHAYDVQQKExVta2NlcnQgZGV2ZWxv\ncG1lbnQgQ0ExLDAqBgNVBAsMI1NWR1xhaG92ZGFAREVTS1RPUC1SUE8wU1I1IChh\naG92ZGEpMTMwMQYDVQQDDCpta2NlcnQgU1ZHXGFob3ZkYUBERVNLVE9QLVJQTzBT\nUjUgKGFob3ZkYSkwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC75tZx\ncGejY8Xfo/Y5rQv8reHrlB2GzQdIUTCbMcNe+9qx5yWKZQHBYtbHJz4ivJBdDJ2x\nRtyzkDMjsp/Ds0VorlQdVQs9wquz34n9Mut8O+K0DkJQsxNotYMqv/xpasnyD2Jl\nXV6vUtA4Z2P7zF7eJSIO+C+hvNpaNBsw9zeC3c82dGJQRf+dZlbP8bmQfCVI0CyG\n5qQTykq17nP32fOdLCzP+bqCgW5GejcXDdVrHZ+znppeUK+m1BUPOprZlYr9caFB\n5eHIlPpIH3tFKuUjP4ctAsd1ZsrH5KaYft0RXY3JeZJBPiqmd/tkk/94ReQMls15\n5FjoL6vm138X6jqwOwrNtkhShg219dGbm8tfp8e6SbSCr+cVzxcY6a7ldaC9IT2w\nrnDyace1w8DAa4+OmnA/jqlGUMxOZcKZvZsJkkZLU2IUC0UP5xWT8z5jpYN0U69g\nIdAapp34QKHHjjpjLwwK+X1Vo5BwAgYutemrOY8aOUSMDz36xOSSARdTSc0CAwEA\nAaNFMEMwDgYDVR0PAQH/BAQDAgIEMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0O\nBBYEFAiPjGHSJ74JcxXvPIifpWPfbnzYMA0GCSqGSIb3DQEBCwUAA4IBgQBMDH8x\nRwVbyeQX8sSqFViQtFs7JgdoxbPvQW+5X22Uz9yA69nxhe2wRskD0jNiQQz7vP/G\nUNpJyW2KVCY4JwKjrlXKn5JjehLQaQWZzlhQqRBkstvaQB7ar3MMHyPUsYovNXPq\nm8188t3rsbxkGqHCWLL3r+CVOe4RYQUokpU1t32b6wHR3NsbrlucKAUoyX0bTn1P\nmrWqt/Adb9IxeP5l+ppp+KkreHkVrH3CWJrkJh0AKnrJYiHsc42Wp8fspFiW3f+8\nnLnWFkRp/GVegNgjFyFF8tVhTmLat6gzRt9G6BpRLngLqfIvTssDrGq22/0Vuu0E\nVwsMzS5pDsKSlWKcOMVKSRH1MpmDXgD9QsoWuL/sgbzDx9d09Rva/Fn4ZIDZ68q7\nG/cNLjZKq7MgoMBFFwK6NPKyG3zDuEczvx/VDO+rfEl1aCRXGE7h2jjk1lQLluMV\nyPaheNQwfj2GfN4TVCv2C9nTZu9mTtQbdtMbKYbdz+l65c8EiZftQVnuyRA=\n-----END CERTIFICATE-----\n\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faadnehovda%2Fhttpcertstore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faadnehovda%2Fhttpcertstore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faadnehovda%2Fhttpcertstore/lists"}