{"id":42409493,"url":"https://github.com/nothinux/certify","last_synced_at":"2026-01-28T01:43:11.214Z","repository":{"id":40578685,"uuid":"460791259","full_name":"nothinux/certify","owner":"nothinux","description":":lock: Create private CA and Issue Certificates without hassle","archived":false,"fork":false,"pushed_at":"2023-09-15T12:45:30.000Z","size":5878,"stargazers_count":44,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T02:01:57.099Z","etag":null,"topics":["certificate","certificate-authority","go","golang","mtls","tls"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nothinux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2022-02-18T09:36:21.000Z","updated_at":"2024-01-05T19:55:54.000Z","dependencies_parsed_at":"2024-06-20T01:35:25.962Z","dependency_job_id":"ae416514-ae9d-411b-8646-d3c690e6d1b1","html_url":"https://github.com/nothinux/certify","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/nothinux/certify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nothinux%2Fcertify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nothinux%2Fcertify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nothinux%2Fcertify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nothinux%2Fcertify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nothinux","download_url":"https://codeload.github.com/nothinux/certify/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nothinux%2Fcertify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28832393,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T23:29:49.665Z","status":"ssl_error","status_checked_at":"2026-01-27T23:25:58.379Z","response_time":168,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["certificate","certificate-authority","go","golang","mtls","tls"],"created_at":"2026-01-28T01:43:10.457Z","updated_at":"2026-01-28T01:43:11.205Z","avatar_url":"https://github.com/nothinux.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :lock: Certify\nCertify is an easy-to-use certificate manager and can be used as an alternative to OpenSSL. With Certify you can create your own private CA (Certificate Authority) and issue certificates with your own CA.\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/nothinux/certify.svg)](https://pkg.go.dev/github.com/nothinux/certify)  [![Go Report Card](https://goreportcard.com/badge/github.com/nothinux/certify)](https://goreportcard.com/report/github.com/nothinux/certify)  ![test status](https://github.com/nothinux/certify/actions/workflows/test.yml/badge.svg?branch=master)  [![codecov](https://codecov.io/gh/nothinux/certify/branch/master/graph/badge.svg?token=iR3c5Zwo3F)](https://codecov.io/gh/nothinux/certify)  \n\n## Feature\n+ Create a CA and intermediate CA\n+ Issue certificate with custom common name, ip san, dns san, expiry date, and extended key usage\n+ Show certificate information from file or remote host\n+ Export certificate to PKCS12 format\n+ Verify private key matches with certificate\n+ Revoke certificate\n\n\n## Installation\nDownload in the [release page](https://github.com/nothinux/certify/releases)\n\n## Usage\n```\n             _   _ ___     \n ___ ___ ___| |_|_|  _|_ _ \n|  _| -_|  _|  _| |  _| | |\n|___|___|_| |_| |_|_| |_  |\n                      |___| Certify v1.x\n\nUsage of certify:  \ncertify [flag] [ip-or-dns-san] [cn:default certify] [eku:default serverAuth,clientAuth] [expiry:default 8766h s,m,h,d]\n\n$ certify server.local 172.17.0.1 cn:web-server eku:serverAuth expiry:1d\n$ certify -init cn:web-server o:nothinux crl-nextupdate:100d\n\nFlags:\n  -init\n\tInitialize new root CA Certificate and Key\n  -intermediate\n\tGenerate intermediate certificate\n  -read  \u003cfilename\u003e\n\tRead certificate information from file or stdin\n  -read-crl \u003cfilename\u003e\n\tRead certificate revocation list from file or stdin\n  -connect  \u003chost:443\u003e \u003ctlsver:1.2\u003e \u003cinsecure\u003e \u003cwith-ca:ca-path\u003e\n\tShow certificate information from remote host, use tlsver to set spesific tls version\n  -export-p12  \u003ccert\u003e \u003cprivate-key\u003e \u003cca-cert\u003e\n\tGenerate client.p12 pem file containing certificate, private key and ca certificate\n  -match  \u003cprivate-key\u003e \u003ccert\u003e\n\tVerify cert-key.pem and cert.pem has same public key\n  -interactive\n\tRun certify interactively\n  -revoke \u003ccertificate\u003e \u003ccrl-file\u003e \u003ccrl-nextupdate:10d(optional)\u003e\n\tRevoke certificate, the certificate will be added to CRL\n  -verify-crl \u003ccertificate\u003e \u003ccrl-file\u003e\n\tCheck if the certificate was revoked\n  -version\n\tprint certify version\n```\n\nCreate Certificate with CN nothinux and expiry 30 days\n```\n# create CA\n$ certify -init cn:nothinux o:nothinux\n\n# create Certificate\n$ certify cn:nothinux expiry:30d\n```\n\nCreate Certificate interactively\n```\n$ certify -interactive\n```\n\nRead Certificate\n```\n$ certify -read ca-cert.pem\nor\n$ cat ca-cert.pem | certify -read\n```\n\n## Use Certify as library\nYou can also use certify as library for your Go application\n\n### Installation\n```\ngo get github.com/nothinux/certify\n```\n### Documentation\nsee [pkg.go.dev](https://pkg.go.dev/github.com/nothinux/certify)\n### Example\n#### Create Private Key and CA Certificates\n``` go\npackage main\n\nimport (\n\t\"crypto/x509/pkix\"\n\t\"log\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/nothinux/certify\"\n)\n\nfunc main() {\n\tp, err := certify.GetPrivateKey()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tif err := os.WriteFile(\"CA-key.pem\", []byte(p.String()), 0640); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// create ca\n\ttemplate := certify.Certificate{\n\t\tSubject: pkix.Name{\n\t\t\tOrganization: []string{\"certify\"},\n\t\t},\n\t\tNotBefore: time.Now(),\n\t\tNotAfter:  time.Now().Add(8766 * time.Hour),\n\t\tIsCA:      true,\n\t}\n\n\tcaCert, err := template.GetCertificate(p.PrivateKey)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tif err := os.WriteFile(\"CA-cert.pem\", []byte(caCert.String()), 0640); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n}\n\n```\n\n## License\n[MIT](https://github.com/nothinux/certify/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnothinux%2Fcertify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnothinux%2Fcertify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnothinux%2Fcertify/lists"}